> ## Content Index
> Fetch the complete content index at: https://www.hubwiz.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# DeepSeek DSH 接博途：插件装完，四句对话配好并验通
- URL: https://www.hubwiz.com/blog/deepseek-harness-tiaforge-plugin/
- Published: 2026-10-30T15:05:21.000Z
- Updated: 2026-10-30T15:05:29.000Z
- Description: DeepSeek DSH 装完插件不用敲命令：把网关地址说给它，它自己配、自己连、自己回报。
- Author: admin
- Tags: 工业 AI, 博途, DeepSeek, MCP, TiaLink

在 DeepSeek 桌面版（DeepSeek Harness，下文简称 DSH）里接 TiaLink，全程不需要碰配置文件和终端：**插件装完，剩下的都是对话**——你把网关地址说给它，它写进自己的配置，自己去连，再把结果报回来。

真正需要你守住的只有一条：**确认它真的动了工具，而不是凭记忆给你一段操作建议。** 判断方法很简单，看它有没有报出你屏幕上的工程名和设备型号。

## 一、先确认前置

- 一台装了**博途 V19 或 V20** 的 Windows，当前用户在 Openness 用户组里；
- **TiaLink 装在同一台**（网关必须与博途同机，客户端可以在别的机器上）；
- DSH：桌面端，或 `dsh web` 打开的网页界面。

## 二、装插件：界面三步

1. 点 DSH 左上角【插件】；
2. 弹出框里输入 `dsh-tiaforge`；
3. 点安装。

装完模型侧就能看到 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 在博途里的规则——**模型不知道，它写的程序会踩，工具会原话告诉它，但它得愿意再读一遍。** 所以"贴原文"这个习惯比任何提示词模板都有用。

## 七、三条安全习惯

1. **先拿 scratch 工程跑通。** 空工程或复制一份，把第三到第五节走一遍，确认每个判据都对得上，再回真实项目。
2. **一次一个块。** "改一个 FB 并编译"是可验收的；"把这个项目重构一下"没有对照物，出错也无从定位。
3. **改动前先让它导出一份。** 导出的块文件就是回滚点；写入工程前再让它确认一次有没有未落盘的改动，能区分"还在内存里"和"已经写进工程"。

## 八、边界

许可未到位时网关只读：能读工程、看块、导文件，写操作会被拒。这本身是一种用法——先只读地把老工程摸清楚，再决定动不动手。

DSH 侧是 developer preview，版本会破坏性变更，插件靠版本声明卡范围，客户端升级后装不上是正常现象；报 `ERESOLVE` 时先看这一点，别先怀疑网络。

手边还没有装博途的机器，也可以先确认"插件 + 令牌 + 模型会调工具"这条链：把文档检索那个服务配上，问"LAD 和 FBD 的 TON 参数有什么不同"。合格的回答会先去查文档再来答，而不是直接背——那条链我们验过，两个 TON 的引脚定义它查得出来。

---

**相关阅读**：[Claude Code 接博途：从空工程到跑通仿真的全链路](https://www.hubwiz.com/blog/claude-code-tia-portal-mcp/)（同一批能力的完整会话记录）｜ [AI 驱动的 PLC 程序开发：WorkBuddy × TiaLink](https://www.hubwiz.com/blog/ai-powered-plc-programming-with-workbuddy-and-tialink/) ｜ [MCP 是什么](https://www.hubwiz.com/blog/what-is-mcp-model-context-protocol/) ｜ [AI × 工业 / PLC 完全指南](https://www.hubwiz.com/blog/ai-industrial-stack/)

**想自己跑一遍**：

- [TiaLink 博途 MCP 网关](https://tia.hubwiz.com/tia-link?utm%5Fsource=blog&utm%5Fmedium=article&utm%5Fcampaign=deepseek-harness-tiaforge-plugin)——与博途同机部署，版本与授权方式见产品页。
- [博途编程文档检索 MCP](https://tia.hubwiz.com/ai-coding-docs?utm%5Fsource=blog&utm%5Fmedium=article&utm%5Fcampaign=deepseek-harness-tiaforge-plugin)——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 程序必须经人工复核后才能用于生产。