新闻详情

新闻详情

首页 / 资讯中心 / 详情

UR协作机器人URScript脚本编程实战:语法、运动控制与调试避坑指南

发布时间:2026/10/2 22:19:57来源:尧图网络
UR协作机器人URScript脚本编程实战:语法、运动控制与调试避坑指南
经常有同行问我UR协作机器人到底值不值得学URScript我的回答一直是如果你只把UR当示教器点的设备用那你就浪费了它一半的灵魂。URScript是优傲机器人Universal Robots内置的脚本编程语言语法风格接近Python但它不是跑在普通电脑上的Python解释器而是UR控制器自带的实时脚本引擎。它能做的事包括精确控制机器人运动轨迹、读取和写入数字量/模拟量信号、与PLC或视觉系统做TCP通信、在运动中动态改变位姿和速度、处理力控信号等。简单说PolyScope搭好的是框架URScript让你能在这个框架里写出真正属于自己的逻辑。这篇文章不是给你抄一遍官方手册而是我从实际项目里摸出来的经验总结URScript是什么、适合干什么、怎么上手不踩坑。适合三类人看刚接触UR机器人的集成工程师、想从示教器编程转向脚本编程的电气工程师、以及所有在折腾自动化改造时被“机器人逻辑不够灵活”卡住的朋友。我会把语法核心、代码案例、常见报错和调试思路都拆开讲尽量让没有编程基础的人也能看懂。1. URScript是谁为什么它会出现在UR机器人里1.1 从示教器到脚本URScript的定位先理清一个概念URScript不是一门独立的工业语言它是嵌入在UR控制器底层的一种实时脚本语言。UR机器人的示教器上运行着PolyScope图形化编程界面拖拖拽拽就能生成一套程序。但PolyScope生成的每个动作节点、逻辑节点最终都会被翻译成一段URScript程序然后在控制器里执行。换句话说你在界面上看到的“MoveL”“Wait”“Set DO”本质上都是一行行URScript的封装。为什么要保留脚本层因为图形化编程再怎么方便也会有碰壁的时候。比如要给机器人写一个动态跟踪的轨迹、要根据外部传感器实时调整目标点、要在循环里根据数组做复杂的数据处理这些在PolyScope里做会非常痛苦甚至根本做不了。直接写URScript则能完全绕过界面限制把所有逻辑用代码表达出来。UR官方也提供了URScript接口第三方URCap插件很多也是基于脚本层在做扩展。URScript这种“图形化界面底层脚本”的双层结构和很多控制器不太一样。传统PLC你用的就是梯形图或者结构化文本而UR给你的选择是要么用浅显的图形化要么用接近通用编程语言的文本自由度很高代价就是学习曲线比纯拖拽要陡一点。但一旦跨过这步后面能玩出的花样会多很多。1.2 两种运行模式Interpreter模式和运行时模式用URScript写代码先得搞清楚代码在什么环境里跑。UR机器人一共提供了两种执行URScript的方式第一种是Interpreter模式解释器模式。你在示教器的“代码”标签页里输入一行或几行URScript点击运行它会立刻在当前状态执行。这种模式非常适合快速测试某个指令是否有效比如临时让机器人动一下、读取一下当前的位姿。它不会作为正式程序的一部分被保存更像是一个黑盒调试窗口。第二种是运行时模式Run-time模式。你在PolyScope的“脚本”节点里写一段完整的URScript然后在程序运行时这段脚本被发送到控制器由控制器逐行解释执行。这是实际项目中最常用的方式因为可以和其他PolyScope节点混搭也可以作为独立程序跑。脚本节点里的代码是被完整上传的不是单行解释所以支持函数定义、全局变量声明、复杂的循环嵌套。这两种模式的差异经常导致新手困惑。在Interpreter模式下正常运行的语句放进脚本节点里却可能报错原因往往在于Interpreter模式下共享着示教器当前的环境变量而运行时模式是独立作用域脚本里的变量必须自己声明函数和变量要先定义再使用。另外脚本节点执行完最后一个语句机器人并不会自动停止而是处于保持状态直到你程序里指定下一步动作或等待信号。搞清楚这两个模式的边界后面调试会省不少事。1.3 URScript最适合解决的三大类问题根据我做过的项目经验URScript真正具有不可替代性的场景主要有三类遇到这三类需求时别再硬用PolyScope堆节点了直接上脚本第一类是复杂运动控制。比如需要机器人做连续轨迹加工、圆弧过渡、传送带跟踪、动态纠偏PolyScope虽然能完成一部分基础运动但要满足精确的速度前瞻和轨迹平滑还是需要在URScript里调参数比如 blend 半径、加速度前瞻、servoj 等高频运动指令。第二类是外部设备通信。URScript内置了socket通信函数可以直接用TCP/IP和PLC、视觉相机、上位机交换数据。这里注意PolyScope本身也有通信节点但灵活性差很多尤其当协议格式比较复杂或者需要在程序中动态处理大量数据时直接写脚本效率高得多。第三类是逻辑密集型的循环处理。比如码垛、上下料节拍、多工位判断、异常重试等这类场景里有大量状态判断和跳转用图形化节点会画成一大张蜘蛛网而用脚本几十行就搞清楚了。码垛尤其典型几层嵌套循环加上位姿偏移计算脚本的简洁优势非常明显。2. URScript核心语法与编程思维2.1 数据类型与变量看着像Python其实是门新语言URScript的语法确实借鉴了Python的写法比如用缩进表示代码块、用冒号引导条件分支但它不是Python。最直观的区别是URScript里的每一行语句基本都以end来结束块。函数定义用def ... endif 判断用if ... else ... endfor 循环用for ... end。这点很像Lua或者Ruby的风格写的时候不要被缩进误导行尾不要习惯性加分号分号在URScript里不是必须的加上去有时反而会影响阅读。数据类型主要包括bool布尔、int整数、float浮点数、string字符串但字符串拼接过少、list列表、pose位姿类型内部有6个分量 x/y/z/rx/ry/rz、joint关节位置类型也是列表形式但语义不同。和Python不同的是URScript里你很少去动态创建复杂的对象它更多是面向机器人控制设计的核心操作对象是位姿和关节量数据结构的重心不在一堆class上而是在“如何用位姿算出一个新位姿”上。全局变量在脚本节点里需要用global关键字声明普通变量则默认是局部变量。有一种很常见的坑在脚本节点里定义了一个关键位姿变量然后在另一个脚本节点或者PolyScope节点里想直接引用发现取不到值。原因是两个脚本节点是分开执行的每个节点都有自己的局部作用域想要跨节点共享数据必须使用全局变量或者把数据存到寄存器UR Register里。2.2 位姿、坐标系与运动指令URScript的灵魂位姿Pose是URScript里最重要的数据类型没有之一。一个位姿由位置三个参数x, y, z和姿态三个参数rx, ry, rz构成姿态角用的是旋转矢量表示法不是欧拉角也不是四元数这点很多初次接触的人会困惑。旋转矢量是一个三维向量向量的方向是旋转轴方向向量的模长是旋转角度单位是弧度。UR示教器上显示的角度有时是度数但URScript里所有角度默认都是弧度切记代码里写pi就是3.14159想要90度得写pi/2而不是写90。创建位姿有两种常用写法。一种是直接用p(x, y, z, rx, ry, rz)构造一个位姿另一种是通过get_actual_pose()获取当前TCP的位姿。演示一下# 定义一个目标位姿位置(0.5, 0.2, 0.3)姿态不变0,0,0 target : p(0.5, 0.2, 0.3, 0, 0, 0) # 获取当前TCP位姿 current_pose : get_actual_pose()运动指令是URScript的核心常用的有这么几个movej关节空间运动轨迹不受控适合大范围移动、点对点避障起点终点姿态不一致时优先用。movel线性运动TCP沿直线插补适合涂胶、装配、焊接等对路径有要求的场景。movep通过路径点连续运动同样是线性插补但路径上不停止用于连续轨迹加工。servoj伺服模式高频指令下让机器人跟踪外部目标点适合视觉引导、动态跟踪。speedj关节速度控制当你需要以设定角速度持续运动时使用。movec圆弧运动需要给出圆心或中间点用于画弧线轨迹。运动指令的标准参数形式大致是movel(目标位姿, a加速度, v速度, r混合半径)这里的a单位是 m/s²v单位是 m/sr是转弯平滑半径单位 m。混合半径r非常关键它决定了机器人在到达目标点之前是否要提前转向如果设为0机器人会完全到达目标点再停如果设了大于0的值机器人会提前“拐弯”编程时要看工艺需求比如涂胶转角处若需要停顿就得把r设为0。2.3 逻辑控制、循环与函数封装逻辑控制语法和大多数语言相似但注意每个块都要end收尾。比如一个简单的判断if flag: movel(p(0.4, 0.2, 0.3, 0, 0, 0), a0.5, v0.2, r0) else: movel(p(0.6, 0.2, 0.3, 0, 0, 0), a0.5, v0.2, r0) end循环结构最常用的是for和while。码垛场景里的三层嵌套循环是典型的URScript优势区x_start : 0.30 y_start : 0.20 x_step : 0.05 y_step : 0.05 for i in range(3): for j in range(4): target : p(x_start i * x_step, y_start j * y_step, 0.30, 0, 0, 0) movel(target, a0.5, v0.2, r0.01) end end函数封装用def和end函数可以带参数也可以返回值。比如我常常把取料、放料封装成两个函数主程序里只要调用函数就行代码清晰得多def pick(): movel(pick_approach, a0.5, v0.3, r0.01) movel(pick_point, a0.3, v0.1, r0) set_digital_out(0, True) sleep(0.5) movel(pick_approach, a0.5, v0.3, r0.01) end需要强调的是URScript支持递归吗至少理论上有限支持但实际不建议用因为控制器资源有限递归深度稍大就把栈打爆了会直接导致程序异常退出。机器人的程序逻辑尽量写成线性或浅嵌套别挑战极限。3. 高频场景代码拆解从简单到实战3.1 基础点位动作流程movel与混合半径的合理搭配很多人第一次写URScript就是让它走一个方框或者圆弧看着简单但参数没调好实际跑起来要么太慢要么抖动。这里我拆一个比较标准的点位动作流程假设任务是从安全点出发到料盘取料然后放到加工台再回安全点。写之前先想清楚哪些点必须精确到位哪些点可以提前“转弯”。取料点和放料点必须精确到位所以r0中间过渡点可以快速通过所以r给0.02m或者更大。# 定义关键点位这里用变量承载方便后期维护 home : p(-0.30, 0.00, 0.50, 0, 0, 0) approach_pick : p(0.20, 0.30, 0.40, 0, 0, 0) pick_point : p(0.20, 0.30, 0.15, 0, 0, 0) approach_place : p(0.50, -0.20, 0.40, 0, 0, 0) place_point : p(0.50, -0.20, 0.20, 0, 0, 0) # 主程序流程 movej(home, a1.0, v0.5, r0.02) movel(approach_pick, a0.8, v0.4, r0.02) movel(pick_point, a0.4, v0.15, r0) # 精确到位 set_digital_out(0, True) # 闭合夹爪 sleep(0.3) # 等待夹紧 movel(approach_pick, a0.8, v0.4, r0.02) movel(approach_place, a0.8, v0.4, r0.02) movel(place_point, a0.4, v0.15, r0) # 精确放料 set_digital_out(0, False) # 打开夹爪 sleep(0.3) movel(approach_place, a0.8, v0.4, r0.02) movej(home, a1.0, v0.5, r0)这段代码的核心思路是“快进慢取”快速接近用高速度高加速度实际取放动作用低速度和r0保证准确。另外注意一点set_digital_out(0, True)这个数字量输出通道要和夹爪的电磁阀接线对应别接错口不然调试时会怀疑人生。3.2 与PLC/视觉系统通信握手工业现场很少有机器人孤立运行URScript里最常用的通信方式是TCP socket通信。常见套路是UR作为客户端向上位机或者视觉系统发送请求或者UR作为服务器PLC来连接它。URScript提供了socket_open、socket_send_string、socket_read_ascii_float这些函数。最简单的握手流程是机器人向相机发送一个字符串请求相机返回坐标数据机器人解析后运动。示例UR作为客户端socket_open(192.168.1.100, 5000, vision_socket) socket_send_string(GET_POS, vision_socket) # 读取返回的6个浮点数 ret : socket_read_ascii_float(6, vision_socket) if ret[0] 0: # 判断读取成功 target_pose : p(ret[1], ret[2], ret[3], ret[4], ret[5], ret[6]) movel(target_pose, a0.5, v0.2, r0) else: # 读取失败给PLC发送报警 set_digital_out(1, True) end socket_close(vision_socket)这里有一点非常容易踩坑socket_read_ascii_float(6, vision_socket)返回的列表里索引下标从1开始不是0这点和大多数编程语言不一致。我第一次用的时候愣是用ret[1]取到了错误的值还一直以为是通信没通。URScript里的数组索引从1开始记住这一点能省去很多不必要的调试时间。另外socket函数中连接的字符串名称比如上面的vision_socket是人为定义的通道名可以随意命名但必须在所有相关函数中保持一致。socket_open函数还支持超时参数如果你的使用场景对实时性要求高建议显式设置超时时间避免机器人卡在等待中影响节拍。3.3 基于外部寄存器实现多工位选择现场还有一个高频需求不同产品型号要走到不同位置选型信号一般来自PLC或扫码枪。URScript里最经典的做法是把选择信号读入IO或寄存器然后通过if/else或者列表索引来选择目标点位。# 读取数字量输入0和1组合成2位二进制选择码0~3 code : 0 if is_digital_input(0): code : code 1 end if is_digital_input(1): code : code 2 end if code 0: goal : p(0.40, 0.10, 0.30, 0, 0, 0) elif code 1: goal : p(0.40, 0.25, 0.30, 0, 0, 0) elif code 2: goal : p(0.55, 0.10, 0.30, 0, 0, 0) else: goal : p(0.55, 0.25, 0.30, 0, 0, 0) end movel(goal, a0.5, v0.2, r0)这种模式很简单但要注意一个细节多路IO组合时最好加入“等待信号稳定”的延时因为PLC输出信号在切换瞬间会有抖动机器人读到的组合码可能瞬时错乱。通常我会在读取IO前加一个sleep(0.1)或者直接要求PLC在信号稳定后再置位一个“数据有效”的输入点给机器人机器人只在收到有效信号后才去读数据。这个习惯能避免很多“机器人有时走到错误位置”的间歇性Bug。4. 现场调试中的常见坑与排查思路4.1 运行为什么不执行语法、作用域与阻塞问题跑脚本常见的第一个坎就是代码跑到某一行之后没反应甚至直接报“Syntax Error”。URScript的报错提示整体来说比较友好会在示教器上指出大约是哪一行但有时提示位置并不准确特别是当你有较复杂的嵌套函数时报错可能指向整个函数块的开头。这时我的排查习惯是先把脚本分成几段在每段前后加popup(debug)或者写一个临时数字量输出用示波器或者PLC侧观察执行到哪一步了。URScript虽然没有断点调试器但通过示教器屏幕上的textmsg函数输出日志也一样能定位。作用域问题在前面提过这里再强调一遍。在函数内部定义的变量默认是局部变量函数结束后就释放了。如果主程序需要在函数返回后继续使用这个变量要么在函数体内用global关键字声明要么通过函数返回值传出来。我习惯用返回值的方式更清晰也不容易造成变量互相覆盖。阻塞也是常见问题。使用socket_read_ascii_float或者wait类指令时机器人程序会一直等待直到满足条件或超时。如果对端设备一直没有回复机器人就停在那里不动了而且没有任何明显的界面提示看起来就像死机。解决思路是给网络读取加上超时参数或者在通信前面做一个I/O握手信号比如先等PLC给一个“开始拍照”信号再执行请求这样一旦卡住至少知道卡在哪一步。4.2 轨迹抖动和速度异常加速度、混合半径和前瞻机器人轨迹抖动绝大多数情况下不是机器人坏了而是参数设置不合理。我见过最多的错误是把a加速度给得很大比如a2.0速度也给到1m/s以上然后短距离运动特别明显。机器人物理系统是有响应带宽的加速度指令急升急降机械结构就会有振动。尤其是使用servoj做动态跟踪时加速度和速度给太大系统会直接提示“关节速度/加速度超限”。解决抖动的第一手段是降低加速度而不是降低速度。速度决定生产效率加速度则影响机械冲击。例如在涂胶或者接触式测量场景可以保持v0.1~0.2但把加速度调小到a0.2~0.4反而更稳定因为起步和停止的冲击变小了。混合半径r也会造成轨迹抖动。很多人以为r只是一个圆角过渡方便转弯但如果r给得比运动路径长度还大机器人会“提前转向”路径就跟预期完全不一样了。一般经验是r不超过当前段位移长度的20%并且最小不要小于0.005m低于这个值在机械上已经感知不到圆角还可能导致轨迹规划器频繁切换状态。另外一个容易被忽略的是运动前瞻问题。UR控制器在movel之前会做轨迹规划如果脚本里连续多个点位间隔很小但每个点的速度、加速度参数差异很大轨迹规划器就可能因为前瞻窗口不足而产生微小停顿。这种情况下建议用movep做连续轨迹运动并把路径点的速度和加速度保持一致轨迹会明显顺滑很多。4.3 坐标系和TCP没对准机器人乱撞的隐性原因机器人走的位置总偏差很多时候不是URScript的问题而是TCP和坐标系没设对。这里说的TCP指的是工具中心点它必须是真实存在的物理点比如吸盘中心、焊枪端点、夹爪末端。如果TCP标定得不准机器人的位姿值再漂亮实际到达的位置都是偏的。URScript里所有的位姿都是相对于激活的工具坐标系和基坐标系约束的。比如movel(p(0.5, 0, 0.3, 0, 0, 0)...)这里的位置是相对于当前激活的基坐标系姿态是笛卡尔空间下的绝对姿态不是增量。如果你在示教器上手动示教了一个点然后读取到的位姿是用当前工具坐标系计算的换一个工具坐标系同一个示教点位它的位姿值会完全不同。所以当你发现“代码里点位明明没错但机器人就是走不对”的时候先去检查当前激活的工具坐标系和基坐标系八成是坐标系选错了。还有一种情况是拿示教器上的位姿读数直接填进脚本发现偏差很大。原因往往在于示教器的读数有时显示的是相对于当前特征点的坐标比如相对于某个平面或者某个物体不是相对于基坐标系的原点。我的建议是需要从示教器读取点位用于脚本时直接选“显示基坐标/工具坐标”模式并且确保工具坐标系与脚本里用的一致才往代码里拷。4.4 常见问题速查表现象大概率原因排查建议代码无法运行报Syntax Error括号补全问题、end漏写、中英文标点混用尽量在PC端文本编辑器先格式化再复制点位位置偏差明显工具坐标系或基坐标系选择错误检查激活TCP和Base比对示教点位读数运动中途停顿一下再继续连续点位间r0过多轨迹规划等待将r设为2~10mm或改用movep等待通信卡死socket阻塞无响应给socket读取加超时或增加IO握手变量在函数外取不到值局部作用域限制使用global或通过return返回值数组下标取错数据索引从1开始不是0检查列表索引确认第0个元素是否为状态码角度差90度弧度/角度混用URScript内角一律用弧度转换用radians()/degrees()5. 工具链与日常调试建议5.1 没有本地IDE怎么办写代码前的一点点准备URScript在国内资料少也没有像Python那样的专业IDE写代码基本就靠示教器上的文本编辑框体验确实一般。我的习惯是电脑上装一个支持Python语法高亮的编辑器比如VS Code或Sublime把URScript代码当Python来写先享受代码补全和格式化写完再复制到示教器。有一点要注意URScript的缩进虽然在执行时不强制但为了可读性必须保持一致。官方推荐用两个空格或四个空格缩进示教器编辑器里用Tab可能锁在两个空格混用会乱统一处理比较好。我自己还维护了一个小型函数库包括常用的夹爪控制函数、位姿偏移计算函数、通信解析函数现场写新项目时直接拷贝改改能省掉大量重复劳动。这个习惯强烈推荐尤其是同一型号机器人项目做得多的团队积累下来的代码片段就是最宝贵的资产。5.2 与PolyScope的配合什么时候拖节点什么时候写脚本很多初学者一上来就想完全用脚本替代PolyScope其实大可不必。它们俩不是互相替代而是互相补充。我的经验是整体流程用PolyScope搭比如等待启动信号、安全回路、选择产品型号这几步用图形化节点清晰明了甲方的人也能看懂具体到某个运动程序段、通信协议解析、复杂循环就放进脚本节点让代码去干活。使用脚本节点的时候要注意脚本节点只能放置在主程序的某个固定位置执行时是阻塞式的也就是说脚本跑完才会执行后面的节点。如果你要在脚本节点执行的过程中同时让机器人做别的动作那要启动另一个线程URScript里可以通过thread关键字创建线程但多线程调试比较复杂新手不建议一上来就碰。保持脚本的“短小、明确、做一件事”风格是最稳妥的做法。5.3 一些实用的代码习惯与小技巧最后分享几个我做UR项目时一直坚持的代码习惯一是点位变量全部用有意义的名字比如home_pose、pick_approach、place_point别写p1、p2。现场设备出问题时快速看懂变量含义能帮你争分夺秒解决问题。二是固定流程封装成函数千万别把所有逻辑平铺在main里跑。URScript的函数返回值和参数传递虽然不如高级语言丰富但足够封装工位动作和通信模块了。三是在关键节点插入日志输出。用textmsg(in pick function, pos , pick_point)把关键运行信息输出到日志里故障时翻日志比自己猜快一百倍。UR的日志在示教器的“信息”界面可以看到也可以通过FTP下载。四是对IO操作要有纪律。set_digital_out后最好跟一个sleep别在极短时间内反复置位同一个输出电器元件受不了也容易造成执行机构还没反应就进入下一步。五是多备份。每改一段重要的URScript就复制一份带时间戳的备份。URScript实体机器上没有git代码丢失就是纯损失。我遇过示教器系统升级后被原脚本覆盖的案例幸好有备份不然现场真的会原地爆炸。我在实际项目中踩过最深的坑就是URScript的索引从1开始和弧度制这两个点几乎每个新手都会遇到。如果你看完这篇能记住这两条就已经少走了不少弯路。URScript本身不复杂真正复杂的是把机器人、传感器、PLC、工艺逻辑糅合在一起时的那堆“脏活累活”。代码只是个工具能把现场情况看得透彻、能清楚描述出每个动作的前因后果写出来的URScript才靠谱。多写几次、多跑几个真项目URScript这套东西自然会烂熟于心。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

桌面工作区整合文档表格智能体与工作流:架构设计与实操指南 2026/10/2 22:57:52

桌面工作区整合文档表格智能体与工作流:架构设计与实操指南

1. 为什么我要把文档、表格、智能体和工作流塞进同一个桌面工作区 先说结论:我折腾这个开源项目的起点,纯粹是被日常工具切换逼疯的。每天的工作流大概是这样的——打开文档写方案,切到表格整理数据,再跳到某个智能体对话界面问问…

阅读更多 →
WorkBuddy与DSH组合:企业级AI Agent落地新范式 2026/10/2 22:57:51

WorkBuddy与DSH组合:企业级AI Agent落地新范式

1. 这不是选择题,而是成本结构的重新定义 WorkBuddy、DSH(DeepSeek Harness)这类工具最近在技术圈刷屏,朋友圈里隔三差五就有人晒出“用WorkBuddy 5分钟搭完销售话术Agent”“DSH加载PDF插件自动提取合同关键条款”的截图。表面看…

阅读更多 →
多模型AI工作台搭建:两行配置实现DeepSeek、Qwen、GLM智能路由 2026/10/2 22:57:50

多模型AI工作台搭建:两行配置实现DeepSeek、Qwen、GLM智能路由

1. 为什么要把多个大模型塞进同一个工作台 1.1 单模型工作流的三个真实痛点 我最早用大模型写代码的时候,只挂了一个模型。写业务逻辑用它,改SQL用它,连写周报都拿它凑字数。用久了问题就冒出来了:有些模型写Python特别顺手&…

阅读更多 →
桌面端AI工作区架构实战:文档、表格、智能体与工作流一体化设计 2026/10/2 22:57:50

桌面端AI工作区架构实战:文档、表格、智能体与工作流一体化设计

1. 为什么我要把文档、表格、智能体和工作流塞进同一个桌面工作区 先说结论:我折腾这个开源项目的出发点特别朴素——我受够了在浏览器标签页、本地文件夹、在线表格和一堆AI对话窗口之间反复横跳。每天的工作流大概是这样的:打开一个PDF看需求&#xff…

阅读更多 →
无需订阅 Claude Science:Academic Forge 32 个科研技能的安装与使用教程 2026/10/2 22:57:49

无需订阅 Claude Science:Academic Forge 32 个科研技能的安装与使用教程

无需订阅 Claude Science:Academic Forge 32 个科研技能的安装与使用教程 【免费下载链接】AcademicForge One Forge, All Skills: A curated skill collection for academic writing and research. 点开即用,按需配置的一站式学术研究skills平台。 项…

阅读更多 →
DeepSeek Harness桌面端深度拆解:AI编程工作流自动化实战 2026/10/2 22:57:41

DeepSeek Harness桌面端深度拆解:AI编程工作流自动化实战

1. 项目概述:DeepSeek Harness 桌面端到底是个什么东西 先说结论:DeepSeek Harness 不是又一个AI聊天客户端,它是一个模型无关的 Agentic Coding 工作流框架。这次出的“桌面端”,我看了一圈,本质上是用 GUI 把原本跑在…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉