前言¶
在 DeepSeek Harness(DSH)里做网络实验相关智能体时,模型往往需要理解 .pkt、.pka、.pta 里的设备、连线和配置,而不是只根据用户口述。Packet Tracer 本身没有面向外部的公开自动化 API,常见做法是人工在 GUI 里改拓扑,或把文件当黑盒交给助手猜测内容。
下面介绍社区插件 dsh-plugin-pkt(维护者 heqinjian,GitHub 约 3 stars)。它在 DSH 中注册一组工具,并在本进程内完成 Packet Tracer 6.x 及以后版本容器的编解码(Twofish-EAX + zlib,纯 JavaScript、无第三方依赖),从而读取拓扑、诊断常见配置问题、写出修复后的文件、从模板裁剪或克隆设备搭建新拓扑,并可选在本机启动 Packet Tracer Instructor 打开文件。不安装 DSH 插件时,同一套逻辑也可通过 node bin/pkt.mjs 当命令行使用(Node.js ≥ 18)。
这是什么¶
dsh-plugin-pkt 是面向 DeepSeek Harness 的插件包,当前版本 0.1.1,许可证 MIT。仓库:https://github.com/heqinjian/dsh-plugin-pkt;社区目录页:https://www.skillhub.cn/plugins/heqinjian/dsh-plugin-pkt。
它解决的核心问题是:让 Harness 里的智能体以结构化视图访问 Packet Tracer 工程文件,并在规则明确的问题上自动改文件;写回时采用 XML 文本级精确替换,不重新序列化整棵 XML,以保留 PT 依赖的内部结构细节。
核心工具与能力¶
插件在 DSH 中注册五个工具,与命令行 bin/pkt.mjs 的能力对应。
| 工具 | 作用 |
|---|---|
pkt_read |
读取文件,按 section 返回不同视图 |
pkt_fix |
检测并修复故障,写出新文件并自动复验 |
pkt_new |
从模板新建拓扑:只保留指定设备,重建连线 |
pkt_build |
在现有拓扑上克隆设备并加链路 |
pkt_open |
用本机 Packet Tracer 打开文件 |
pkt_read 的 section¶
默认 summary 给出设备、链路与画布标注概览。其余 section 包括:topology、addresses、issues(配置故障)、routing、configs(可指定 device)、activity(Instructor 活动脚本)、只读不改文件的 fixplan、xml(解密后的原始 XML)等。
可检出并自动修复的问题¶
插件按 README 中的规则处理多类故障,例如:Router/PC 与 Router/Switch 等场景下的线缆类型(MDI/MDI-X);接口已接线却 shutdown;网关填错或不在本网段;同一 IP 多设备冲突;直连路由器路由协议不一致或缺少 network 声明等。终端掩码与同网段路由器接口不一致时仅提示,不自动修改。
搭建拓扑的限制¶
Packet Tracer 的设备节点无法从零合成,设备块包含模块树、端口表等 PT 校验所需的不透明字段。因此 pkt_new 与 pkt_build 只能克隆模板里已有形态的设备或从模板中保留子集;源文件里没有的路由器型号无法凭空添加。
安装与启用¶
插件以当前 DSH 进程权限运行;安装前建议自行查看仓库源码与 MIT 许可证。DSH 采用「一切皆插件」的扩展方式;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
装好后必须重启 DSH:运行期新插入的 loader 条目可能处于 failed,重启后 pkt_read、pkt_fix、pkt_new、pkt_build、pkt_open 才会正常注册。
方式一:install.ps1(README 推荐)¶
在 Windows 环境下,将仓库克隆到本地后执行安装脚本(会复制到 profile 的 node_modules\dsh-plugin-pkt 并在 cordis.patch.yml 追加加载条目,先备份原文件):
git clone https://github.com/heqinjian/dsh-plugin-pkt.git
cd dsh-plugin-pkt
powershell -ExecutionPolicy Bypass -File install.ps1
指定其他 profile 目录:
powershell -ExecutionPolicy Bypass -File install.ps1 -ProfileDir "C:\Users\me\.dsh\profiles\desktop"
方式二:DSH 插件管理器¶
plugin_manager install_bundle target="github:heqinjian/dsh-plugin-pkt"
若先 remove_bundle 再立刻安装,新条目可能卡在 failed;稳妥顺序为:移除 → 重启 DSH → 安装 → 再重启 DSH。
仅使用命令行¶
无需安装 DSH 插件,在克隆目录中直接运行(见下一节)。更新插件时,替换 profile 内 node_modules\dsh-plugin-pkt 并重启 DSH;自检应在克隆目录执行 node test/selftest.mjs 与 node test/plugin.test.mjs(profile 拷贝不含 test/)。
典型用法¶
在 DSH 中¶
安装并重启后,由智能体按需调用上述五个工具;读取拓扑时可指定 section,修复与搭建需传入文件路径及 JSON 规格(与 CLI 一致)。
命令行(不装插件)¶
下列命令来自项目 README 第 5 节:
node bin/pkt.mjs <file.pkt> <section> [--device NAME] [--out FILE]
# 读写
node bin/pkt.mjs lab.pkt summary
node bin/pkt.mjs lab.pkt issues
node bin/pkt.mjs lab.pkt configs --device R1
node bin/pkt.mjs lab.pkt xml --out lab.xml
# 修复
node bin/pkt.mjs lab.pkt fix --out lab-fixed.pkt
# 搭建
node bin/pkt.mjs lab.pkt build --spec spec.json --out lab-built.pkt
# 从模板新建(keep + links 写在 spec 里)
node bin/pkt.mjs template.pkt new --spec spec.json --out lab-new.pkt
从模板新建时,spec.json 可类似:
{
"template": "某份现成.pkt",
"out": "新拓扑.pkt",
"keep": ["R1", "Switch0"],
"links": [
{ "from": "R1", "fromPort": "GigabitEthernet0/0",
"to": "Switch0", "toPort": "FastEthernet0/1",
"cable": "eStraightThrough" }
]
}
在现有文件上克隆设备并接线时,使用 build 与 devices / links 字段(详见仓库 README 第 3.2 节)。
适用场景与注意¶
适合:需要在 DSH 对话中批量查看 .pkt/.pka 地址与路由、自动修正常见实验错题、基于已有模板快速生成子拓扑或加 PC/交换机端口的教学与实验脚本场景。
注意:
- 仅实现 128 位 Twofish 的四段式容器;Packet Tracer 5.x 及更早两段式格式未支持。
- 不能替代在 PT 里点按钮;效果等价于改文件后重新打开,STP 收敛前交换机端口可能短暂显示橙色。
- 路由协议统一为启发式策略,复杂拓扑需人工复核。
- 克隆设备可能重复 MAC 地址。
- 写回加密时长度前缀必须为 UTF-8 字节数;插件在写完后用
sizeMismatch断言避免中文标注导致 PT 静默截断文件尾部。
结尾¶
dsh-plugin-pkt 把 Packet Tracer 工程文件变成 DSH 可调用的读写与修复能力,并保留无插件的命令行入口,适合把网络实验拓扑纳入智能体工作流。进一步了解安装细节、文件格式与限制,见 GitHub README;插件索引见 SkillHub 目录页 与 https://github.com/heqinjian/dsh-plugin-pkt。