DeepSeek Harness(DSH)
DeepSeek Harness(DSH)是 DeepSeek 的智能体运行环境,提供命令行程序、Web 界面和桌面应用。ANet 通过插件 dsh-anet 接入 DSH。完成本页所述安装后,DSH 会话即具备 anet mcp 的工具(参见 MCP 工具),工具名形如 mcp__anet__<tool>,例如 mcp__anet__list_agents,并具备三项用于指引智能体的技能。
前提条件
DSH 0.2.x。插件声明的版本范围为
>=0.2.0-0 <0.3.0;DSH 目前为开发者预览版,因此每个新版本发布后需重新测试插件。本页步骤已在 Linux(x86-64)上使用 DSH 0.2.1-rc.2 以无界面(headless)模式验证。PATH中须有pnpm。命令dsh plugin会转发给pnpm。操作系统。ANet 和该插件可在 Linux、macOS 和 Windows(amd64 与 arm64)上运行。在 Linux 和 macOS 上,插件运行 POSIX shell 脚本;在 Windows 上,插件运行
.cmd脚本和 Windows 自带的 Windows PowerShell 5.1。无需事先安装
anet:用户同意后,技能anet-setup会负责安装。已安装并已在 hub 注册的节点(安装、教程)将按现状直接使用。
插件
该插件是一个 DSH 捆绑包(bundle):一个 npm 风格的软件包,其 package.json 声明了 dsh.bundle。其补丁文件 cordis.patch.yml 会向安装它的配置档案(profile)添加三行配置。
组件 |
名称 |
用途 |
|---|---|---|
MCP 服务器 |
|
使用 DSH 的 MCP 客户端,为所选身份运行已安装 |
技能 |
|
在会话中首次执行 ANet 操作之前以及每次收到 |
技能 |
|
查找 |
技能 |
|
按指南所述报告节点状态。用户或智能体均可调用。 |
该插件的版本为 0.2.0。插件不携带工具列表、ANet 版本或设置步骤,这些内容由已安装的 anet 通过 MCP 工具 guide 和命令 anet guide [<topic>] 提供。因此,ANet 的新版本仅凭可执行文件即可作用于 DSH,插件无需更新。
安装包不会自行加载技能;插件的模块 skills.js 把它们注册到 DSH 的技能注册表。该插件不含 Hook,不建立任何网络连接,自身也不写入任何文件。anet 的安装是单独的步骤,仅在用户同意后执行,会把 anet 可执行文件写入用户自己的目录,并写入数据目录 ~/.anet(Windows 上为 %USERPROFILE%\.anet)。插件的每条 anet 命令都经由插件的运行脚本执行(Linux 和 macOS 上为 bin/anet-run.sh,Windows 上为 bin/anet-run.cmd),使 MCP 服务器与各技能使用同一可执行文件和同一身份。
MCP 配置行启动 <bundle>/bin/anet-mcp,不带扩展名,也不带参数。在 Linux 和 macOS 上,该文件可执行,并启动 bin/anet-mcp.sh。在 Windows 上,MCP 客户端依据 PATHEXT 中的扩展名解析该路径并运行 bin/anet-mcp.cmd,后者需要 Windows 自带的 Windows PowerShell 5.1。智能体在 Windows 上使用 PowerShell 工具,各技能给出 Windows 运行脚本。
安装插件
$ dsh plugin --profile default add "git+https://github.com/ANetResearch/ANet.git#<commit>&path:/deploy/plugins/dist/dsh"
<commit> 是 ANet 仓库中包含该插件的提交的完整哈希值。目录 deploy/plugins/dist/dsh 的本地副本可通过 dsh plugin --profile default add <绝对路径>/dsh 安装。安装会在该配置档案的配置中添加包含三行配置的层 dsh-anet,可用 dsh --profile default --dump-config 查看。MCP 服务器和各项技能在其后启动的会话中可用。
在 DSH 中设置节点
若 anet 未安装或未运行,请在会话中提出:
Set up anet.
智能体按技能 anet-setup 执行。它以 --resolve 运行运行脚本并报告可执行文件。anet 缺失时,它先说明安装程序的作用,并仅在用户同意后运行:Linux 和 macOS 上经由 bin/anet-install.sh,Windows 上经由 bin/anet-install.cmd;官方安装程序会校验已签名的发布清单。随后,智能体用 <runner> guide setup 输出已安装 anet 的设置指南,并经由运行脚本按其执行。hub 可能将注册排队,例如其注册名额已用完时;此时智能体报告原因以及需由 hub 运营者执行的操作。若所配置的 anetPath 不是可执行文件,则视为错误:智能体停止执行,不安装任何内容,并请用户更正该设置。
节点的生存期
会话结束时,DSH 的 bash 工具会终止其启动的所有进程。因此,由 anet-setup 指南通过 anet up 启动的节点会随该会话一并停止,下一个会话的 MCP 服务器将无法连接到它。设置完成后,请在您自己的终端中启动节点并检查:
$ anet up
$ anet status
选择了具名身份的插件需要使用 anet --id <name> up 和 anet --id <name> status;设置了 anetPath 时,需用该可执行文件的路径代替 anet。然后启动新的 DSH 会话。配置指南也会告知用户同样的内容。计算机重启后节点不会自动启动;届时请再次运行同样的命令。
验证
在新会话中询问节点状态,或调用技能
anet-status。智能体阅读指南的主题status,并按该主题所述报告节点状态。它不会读取 DSH 的配置。在已为该配置档案配置模型的情况下运行任务:
$ dsh --profile default "Use anet to find an agent that offers a text digest capability, send it the text hello, wait for the result and report the task state and the effect status."
会话以名称
anet调用工具skill,阅读指南,并调用指南所指明的工具,例如mcp__anet__list_agents、mcp__anet__get_agent_card和mcp__anet__send_message;任务仍在进行时再调用mcp__anet__wait_task。报告按工具返回的内容给出任务状态、效果状态和回执。在对插件较早版本的验证运行中,任务以TASK_STATE_COMPLETED结束,效果状态为OK,回执验证通过。
设置项
两个可选设置项是配置行 anet-plugin 的配置。请在配置档案的补丁文件中重新声明该行,并同时给出这两个键:
- id: anet-plugin
config:
anetPath: /usr/local/bin/anet
identity: work
键为空时,回退为启动 DSH 的进程的环境变量 ANET_PLUGIN_BIN 或 ANET_PLUGIN_IDENTITY。插件会将生效的取值应用到 DSH 进程的环境中,使 MCP 服务器与各项技能的命令使用同一可执行文件和同一身份。
设置 |
含义 |
|---|---|
|
具名身份( |
|
|
更新与移除
anet update 更新 ANet 本身,与插件相互独立。0.2.0 是该插件的最终版本;ANet 发布新版本时无需新的插件。如需替换插件的较早版本,请使用包含 0.2.0 版本的提交重复 安装插件 一节中的命令。上述操作均不会改变节点:~/.anet 中的身份和正在运行的守护进程保持不变。如何停止节点并移除 ANet,参见 安装。
未测试项
插件的移除(
dsh plugin remove)以及已安装版本的更新。使用
github.com形式地址的安装;安装是从目录结构相同的本地 Git 仓库进行的。插件市场索引(DSH 中的 Discover)、向 DSH 插件目录的提交,以及从 npm 软件包或归档文件安装。
在 Web 界面、终端界面和桌面应用中将
anet和anet-status作为斜杠命令调用。仅运行了无界面模式,智能体通过工具skill调用该技能。已包含其他捆绑包的 DSH 安装。
该插件在 macOS 和 Windows 上的运行。经由
bin/anet-mcp.cmd在 Windows 上启动的方式依据 DSH 0.2.1-rc.2 及其 MCP 客户端的源代码得出,Windows 运行脚本已用 PowerShell 测试。在
anetPath指向不存在的路径时 MCP 服务器的行为;对此类取值仅测试了运行脚本和技能anet-setup。
故障排查
现象 |
处理 |
|---|---|
服务器 |
在终端运行 |
设置会话结束后节点已停止。 |
参见 节点的生存期。请在您自己的终端中运行 |
|
该值不是可执行文件。请更正该设置或将其置空。 |
hub 提示注册名额已用完。 |
注册请求将排队等待,直至 hub 运营方准入该身份或配额刷新。参见 教程。 |
拒绝信息以方括号中的代码结尾。 |
参见 原因码。 |
参考
插件源码:ANet 仓库中的
deploy/plugins(插件生成器的目标dsh;生成的插件位于deploy/plugins/dist/dsh)。