DeepSeek DSH 接博途:插件装完,四句对话配好并验通
DeepSeek DSH 装完插件不用敲命令:把网关地址说给它,它自己配、自己连、自己回报。
在 DeepSeek 桌面版(DeepSeek Harness,下文简称 DSH)里接 TiaLink,全程不需要碰配置文件和终端:插件装完,剩下的都是对话——你把网关地址说给它,它写进自己的配置,自己去连,再把结果报回来。
真正需要你守住的只有一条:确认它真的动了工具,而不是凭记忆给你一段操作建议。 判断方法很简单,看它有没有报出你屏幕上的工程名和设备型号。
一、先确认前置
- 一台装了博途 V19 或 V20 的 Windows,当前用户在 Openness 用户组里;
- TiaLink 装在同一台(网关必须与博途同机,客户端可以在别的机器上);
- DSH:桌面端,或
dsh web打开的网页界面。
二、装插件:界面三步
- 点 DSH 左上角【插件】;
- 弹出框里输入
dsh-tiaforge; - 点安装。
装完模型侧就能看到 4 个已接入的服务,全程不用开终端。(要写进脚本或配置的人再走命令行:dsh plugin --profile web add dsh-tiaforge,桌面端把 web 换成 desktop 并用它自带的 CLI。)
三、第一句:把网关交给它
在对话框里说:
TiaLink 网关在 http://192.168.1.110:8080/mcp。把它配好,然后连一下我现在打开的工程,告诉我连的是哪个工程、有几台设备。
它会做三件事:把地址写进配置 → 让你重启一次 DSH(连接是在启动时建立的,值改了要重连)→ 重启后自己去连,把结果报回来。
你要核对的只有三样:
| 它说的 | 应该是 | 对不上时 |
|---|---|---|
| 是否连上博途 | 已连上 | 网关没挂到博途上,去 TiaLink 控制台看它打开的是哪个工程 |
| 工程名 | 与你博途里打开的一致 | 工程开错了 |
| 设备数 | 与屏幕上设备视图的数量一致 | 网关连的是另一个实例 |
这一句过了,链路就通了。 背后改的其实就是网关地址这一个值,你不用手写;但知道它叫什么,出问题时能一句话问清楚:"现在用的网关地址是哪个?"
如果它回 401,说明这台网关开了令牌校验:去 TiaLink 控制台复制一个令牌直接贴给它,让它重写配置、再重启一次。贴进对话的代价是令牌进了聊天记录——用完在控制台换一个即可,换完旧的立即失效,把新的再贴一次。
四、后三句:验通
① 能力进来了吗
你现在能调用 TiaLink 的哪些能力?把清单列出来,一共多少项。
应当是 34 项。数量对不上,或者它说"没有查到相关服务",先别往下走。
② 它看到的是不是你的工程
把这个工程里的设备列出来:名称、型号、插在哪个槽位。
拿这张表和博途的设备视图逐行对。对上了,说明它读的是同一个工程;对不上,上一节那三样里一定有一个是错的。
③ 读路径通不通
只读:把 Main 这个块的内容读出来,不要改任何东西。
它应当去读这个块,把内容回给你(SimaticML 片段或块内代码)。这一步只读,读错了也不会破坏什么。
三句都过,才算验通。
五、真任务:三句话
下面每句都对应真机上的实际调用与耗时(博途 V19、空工程、CPU 1516-3 PN/DP),可以当基线用。
| 说给它的话 | 它会做的事 | 实测耗时 |
|---|---|---|
| "先看工程状态,再把设备、块、变量表都列出来,只读,不要改任何东西" | 看状态 → 列设备 → 列块 | 每步 <1 s |
| "新建设备 PLC_1,型号 6ES7 516-3AN00-0AB0/V1.1,PLC 类型" | 查这个订货号 → 建 CPU | 建 CPU 34.1 s |
| "把这段 SCL 导入成 FB,设备 PLC_1,然后只编译这个块" | 导入 SCL → 编译该块 → 导出读回 | 导入 11.8 s(FB)/ 0.6 s(OB、DB),编译 1.4 s,导出 0.1 s |
做完第三句,你要的东西是编译结果 0 错 0 警,以及导出的那份块文件——这是"改完了"的凭据,比它自己的描述可信。
耗时这一列还有一个用途:让你判断"慢"是不是正常。加 CPU 三十几秒、导入十几秒是常态,别在这时候打断它;同一台机器上重复跑应该稳定在同一个量级,突然慢十倍,通常是博途自己在忙。
六、它卡住的时候怎么问
先让它贴原话。 模型爱把报错总结成"编译失败,可能是配置问题",那样你就没法查。直接说:
把工具返回的原文贴出来,不要总结,也不要改写。
拿到原文再追问,七类问题几乎覆盖全部:
| 它说的话 | 真实原因 | 你回它什么 |
|---|---|---|
| "都返回 401" | 令牌没配、拼错,或换过之后没更新 | 贴新令牌,让它重写配置,重启 |
| "连不上 / 拒绝连接" | 网关没起,或地址写成了本机 | 确认工控机上 TiaLink 在跑,地址换成那台的 IP |
| "调用超时" | 一次让它做的事太多 | 同一句里只放一个动作,先只建 CPU,别连着导入 |
Inputs or outputs are used that do not exist in the configured hardware |
地址写到了机架上不存在的 I/O 点(裸 CPU 上写 %Q0.0 必踩) |
让它改成 %M 区再编译;这是配置不匹配,不是逻辑错 |
区域 VAR 不可用于 OB 类型的块 |
OB 里写了静态变量 | 让它先建全局单实例 DB,再在 OB1 里调用 |
设定值"VERSION"无效 |
实例 DB 里写了 VERSION |
FB/OB 可以带版本号,实例 DB 不行 |
Block 'Main' is inconsistent (not compiled) |
上一次编译失败,块处于不一致状态 | 先编译这个块或整 PLC,再导出 |
后四条不是环境问题,是 SCL 在博途里的规则——模型不知道,它写的程序会踩,工具会原话告诉它,但它得愿意再读一遍。 所以"贴原文"这个习惯比任何提示词模板都有用。
七、三条安全习惯
- 先拿 scratch 工程跑通。 空工程或复制一份,把第三到第五节走一遍,确认每个判据都对得上,再回真实项目。
- 一次一个块。 "改一个 FB 并编译"是可验收的;"把这个项目重构一下"没有对照物,出错也无从定位。
- 改动前先让它导出一份。 导出的块文件就是回滚点;写入工程前再让它确认一次有没有未落盘的改动,能区分"还在内存里"和"已经写进工程"。
八、边界
许可未到位时网关只读:能读工程、看块、导文件,写操作会被拒。这本身是一种用法——先只读地把老工程摸清楚,再决定动不动手。
DSH 侧是 developer preview,版本会破坏性变更,插件靠版本声明卡范围,客户端升级后装不上是正常现象;报 ERESOLVE 时先看这一点,别先怀疑网络。
手边还没有装博途的机器,也可以先确认"插件 + 令牌 + 模型会调工具"这条链:把文档检索那个服务配上,问"LAD 和 FBD 的 TON 参数有什么不同"。合格的回答会先去查文档再来答,而不是直接背——那条链我们验过,两个 TON 的引脚定义它查得出来。
相关阅读:Claude Code 接博途:从空工程到跑通仿真的全链路(同一批能力的完整会话记录)| AI 驱动的 PLC 程序开发:WorkBuddy × TiaLink | MCP 是什么 | AI × 工业 / PLC 完全指南
想自己跑一遍:
- TiaLink 博途 MCP 网关——与博途同机部署,版本与授权方式见产品页。
- 博途编程文档检索 MCP——2,800+ 章节,第八节那个低门槛验证用的就是它。
来源与版本:TiaLink 1.3.0.0(能力清单、耗时、报错原文均由其返回);博途 V19 / Openness 19.0;dsh-tiaforge 0.1.2;DSH npm latest 0.2.1-rc.5。调用记录来自 2026-10-27 的实机运行。
本文由汇智网原创整理,转载请注明出处。AI 生成的 PLC 程序必须经人工复核后才能用于生产。