前言¶
DeepSeek Harness(简称 dsh)是 DeepSeek 开源的智能体运行时,核心理念是「一切皆插件」:模型、工具、技能、会话、沙箱、循环都可以换成可组合的插件。官方 preset 里,Minimal 只给两个工具,首轮推理更干净;Standard 工具面更宽,适合真正改代码,但同一类模型会对「API 里看得见的工具列表」非常敏感。
社区评测仓库 xiaobright/modeltest 在 DeepSeek V4 Pro、reasoningEffort=max 的 Project2 上给出过一组个人评测数字:Standard 能力分 91,首轮 let me 出现 208 次;Minimal 两轮是 99 / 96,let me 为 0。一直停在 Minimal 能保住轨迹,却丢掉后面那二十多个工具。把「首轮按最小目录锚定、第一次真正调工具后再放出完整目录」做成 DSH 预设的,是 xiaobright/dsh-anchored-standard。
pi-anchored-tool-for-dspro 把这套两阶段做法移植到了 pi 编码智能体上,并被社区插件目录收录到「模型与提供方」分类。目录不是 DeepSeek / 幻方的官方应用商店,和官方仓库没有从属关系。下面按目录页、GitHub 源码和 npm 包说明交叉核实后的信息介绍它。
这是什么¶
pi-anchored-tool-for-dspro 由 dbydd 维护,许可证 MIT,主要语言 TypeScript。社区目录页的一句话是:面向 DeepSeek V4 Pro 的 pi 扩展——第一个请求只暴露 shell 与 read,会话记下首次工具调用后再恢复完整目录,同时把 harness 注入的系统提示改写成 DSH 最小模式人设,并贯穿整个会话。
仓库 package.json 写明它是 pi 扩展:pi.extensions 指向 ./src/index.ts,peerDependency 是 @earendil-works/pi-coding-agent。README 也写了「不与 DeepSeek 或 pi 项目有官方关联或背书」。目录页把它当成 DSH 插件列出,给出的安装命令是 dsh plugin add github:dbydd/pi-anchored-tool-for-dspro;真正按源码加载时,宿主是 pi 的 ExtensionAPI,钩子挂在 before_provider_request,改的是即将发给模型的序列化 payload,而不是 DSH 那套 system-prompt/assemble。
截至 2026-08-18,目录详情页和 GitHub API 都显示 6 颗星。GitHub main 最新提交是 0a114d8(2026-08-15),package.json 版本 0.2.0;npm 上已经发到 0.4.0。目录命令走 GitHub 仓库,装到的是 main 上的 0.2.0;pi install pi-anchored-tool-for-dspro 走 npm,装到的是 0.4.0。下文先按目录 + GitHub main 讲清两阶段锚定,0.4.0 多出来的路由能力单独标明来源。
它解决什么问题¶
V4 Pro 会同时看两件事来选执行轨迹:API 可见的工具目录,以及系统提示里的人设。modeltest 的 Project2 表(作者声明这是个人评测,不是公开基准)是这样排的:
- Standard:能力分 91,
let me208 次,完整 25 个工具 - PTC:92,
let me194 次,工具是run_code - Minimal:99 / 96,
let me0 / 0,两个工具 - Anchored Standard:98 / 99,
let me1 / 0,先 2 个工具,再放出全部 25 个
规律很直接:首轮工具太多,模型容易滑进 Standard 轨迹;首轮只留 shell + 读文件,更接近 Minimal。人设同样敏感。DSH minimal preset 里那句人设是:
You are a helpful software engineer assistant.
仓库把这串字节写成常量 MINIMAL_SYSTEM_PROMPT,并注明改写会把 We need 推理风格打回 standard-like。所以插件的策略是:人设整场会话都不换,只让工具目录升一次级。
README 自己也写了边界:这是实验性的 prompt 条件补丁,不是正确性保证;评测是个人结果,不是普适结论;插件不发网络请求、没有遥测。
两阶段怎么跑¶
GitHub main 的 src/index.ts 做两件事。
1、工具目录只在第一次请求收窄。 目标模型、且会话里还没有可落库的工具调用时,把 payload.tools 滤成 bootstrapTools,默认是 bash 和 read。pi 的 shell 工具名是统一的 bash,不像 DSH 那样按平台在 bash / pwsh 里选一个。会话条目里一旦出现 toolResult,或 assistant 消息里带 toolCall,过滤器就停,完整目录原样放行。
2、人设每轮都改。 只要 minimalSystemPrompt 为 true(默认 true),每次请求都会把 payload 最前面的系统提示改成上面那句 DSH Minimal 人设。OpenAI 兼容形态改 messages[0](system / developer),Anthropic 形态改顶层 payload.system 字符串。非字符串的 system 内容不会动。
阶段不是记在内存里,而是扫 sessionManager.buildContextEntries()。所以 /resume、/reload 之后阶段还在。语义和 DSH 那侧对齐的部分包括:
- 人设永久生效,只有工具目录换阶段
- 首轮回复如果不调工具,就不会晋升
- 工具执行失败也会晋升(因为已经有一次可落库的 tool call)
- 每个会话目录只变一次
配置出错时它选择 fail-safe:bootstrapTools 里有名字不在当前目录里,就打警告并跳过过滤,不会悄悄把工具剥光。models 默认是空数组,一个模型都不会锚定,这是安全默认值,装完必须自己写目标模型。
安装与启用¶
社区目录页给出的命令如下,在 DeepSeek Harness 终端里运行:
dsh plugin add github:dbydd/pi-anchored-tool-for-dspro
需要可复现安装时,把 commit 钉死。main 当前头是 0a114d8733ef2deb17a4a7bbf801c08af03eba7b:
dsh plugin add github:dbydd/pi-anchored-tool-for-dspro#0a114d8733ef2deb17a4a7bbf801c08af03eba7b
目录页的警告原文是:插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前请检查源代码仓库和许可证。
仓库 README 写的实际启用路径是 pi。npm 已发布,可以直接:
pi install pi-anchored-tool-for-dspro
或者在 ~/.pi/agent/settings.json 里用 git 包。README 示例钉的是 tag v0.1.0,对应的是较早的一版,不是 main 上的 0.2.0,也不是 npm 的 0.4.0:
{ "packages": ["git:github.com/dbydd/pi-anchored-tool-for-dspro@v0.1.0"] }
也可以把仓库的 src/ 拷进 ~/.pi/agent/extensions/anchored-tools/。装完后在 pi 里执行 /reload。
配置与验证¶
配置写在 pi 的 settings.json 顶层键 anchoredTools 下,覆盖规则和 pi 自己的设置一样:全局 ~/.pi/agent/settings.json 做底,受信任项目的 .pi/settings.json 做深合并——嵌套对象递归合并,数组整段替换、不拼接,项目侧获胜。每次请求都会重读,改完立刻生效。
GitHub main(0.2.0)给出的全局示例:
// ~/.pi/agent/settings.json
{
"anchoredTools": {
"enabled": true,
"models": ["deepseek-v4-pro"],
"bootstrapTools": ["bash", "read"],
"minimalSystemPrompt": true,
"notify": true
}
}
字段含义按 README:
enabled:总开关models:glob,匹配provider/modelId或裸modelId;带/的模式只匹配带提供方前缀的形式,例如"deepseek/*"、"*/deepseek-v4-pro";空数组表示不锚定任何模型bootstrapTools:首轮暴露的工具,必须是当前目录的子集minimalSystemPrompt:是否把系统提示改成 DSH Minimal 人设;人设文本故意不允许配置notify:会话晋升时弹一次 TUI 提示
项目级可以整段换掉数组。README 的覆盖示例把目标模型改成 claude-*,并把 bootstrap 扩成 bash、read、ffgrep、fffind:
// .pi/settings.json
{
"anchoredTools": {
"models": ["claude-*"],
"bootstrapTools": ["bash", "read", "ffgrep", "fffind"],
"minimalSystemPrompt": false,
"notify": false
}
}
验证用斜杠命令 /anchored-tools。GitHub main 会报当前模型、是否命中目标、阶段(bootstrap 还是 promoted)、以及最小系统提示开关。控制台在第一次改写系统提示时打一行日志。
npm 0.4.0 多了什么¶
npm 最新版是 0.4.0,发布时间 2026-08-15T08:05:38Z,README 比 GitHub main 多两块。这两块不在当前 GitHub 源码树里,dsh plugin add github:… 装不到;只有 pi install 或按 npm 包安装才会拿到。
第一块是 Router,移植自 yjh051108/dsh-router-standard。建议绑定到 deepseek-v4-flash:按首条用户消息分到 spec / weak / react(mixed 不会自动选),注入对应人设和首轮核心工具,第一次工具调用后再放出完整目录。和锚定列表同时命中时,路由优先。额外命令是 /anchored-route。
第二块是 extensionlessLaunchers,默认 false。打开后,插件会向带 --no-extensions 拉起的子 pi 进程注入 JavaScript(改 NODE_OPTIONS、argv 和 child_process),让锚定/路由在那些子进程里也能跑。README 把它标成代码注入,要求启用前读完整说明。不需要覆盖子进程时,保持默认关闭即可。
适用场景与注意事项¶
适合已经在用 pi、并且主力模型是 DeepSeek V4 Pro 的人:希望首轮推理贴近 Minimal,后面又不想丢掉完整工具目录。DSH 侧若只想用官方 Cordis 预设,应直接看上游 dsh-anchored-standard,不要把这个 pi 扩展当成同一份 bundle。
使用前注意这几条:
- 插件以当前 dsh / pi 进程的权限运行,安装和加载都可能执行代码。先看源码和 MIT 许可证。
models不写就等于没开。装完只 reload、不改配置,行为不会变。- 人设不要自行改写。评测里换措辞会破坏目标推理风格,源码也把这句做成不可配置常量。
- 首轮如果模型不调工具,会话会一直停在 bootstrap 目录。这是设计,不是故障。
- Project2 的 91 / 99 / 98 来自个人评测仓库,作者自己写了「不是公开基准」。不要把它写成官方分数。
- GitHub
main是 0.2.0,npm 是 0.4.0,git tag 还停在v0.1.0。按哪条安装路径走,就按哪份 README 配,不要混用 0.4.0 的router字段去配 0.2.0 源码。 - 社区目录 deepseek-harness-plugin.com 是独立站点。收录在「模型与提供方」只说明目录爬到了这个仓库,不代表 DeepSeek 官方认证。
小结¶
pi-anchored-tool-for-dspro 做的事情很窄:把 DSH 上已经验证过的「先最小工具、后完整目录、人设全程 Minimal」搬到 pi 的请求 payload 上,专门对付 DeepSeek V4 Pro 对工具列表和系统提示的条件化。目录页安装命令是:
dsh plugin add github:dbydd/pi-anchored-tool-for-dspro
在 pi 里更贴近仓库说明的是 pi install pi-anchored-tool-for-dspro,然后把 anchoredTools.models 写成 ["deepseek-v4-pro"],用 /anchored-tools 看阶段。
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/pi-anchored-tool-for-dspro/
GitHub:https://github.com/dbydd/pi-anchored-tool-for-dspro