使用 pi-anchored-tool-for-dspro 爲 DeepSeek V4 Pro 做兩階段工具錨定

前言

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-dsprodbydd 維護,許可證 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 me 208 次,完整 25 個工具
  • PTC:92,let me 194 次,工具是 run_code
  • Minimal:99 / 96,let me 0 / 0,兩個工具
  • Anchored Standard:98 / 99,let me 1 / 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 mainsrc/index.ts 做兩件事。

1、工具目錄只在第一次請求收窄。 目標模型、且會話裏還沒有可落庫的工具調用時,把 payload.tools 濾成 bootstrapTools,默認是 bashread。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 擴成 bashreadffgrepfffind

// .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 / reactmixed 不會自動選),注入對應人設和首輪核心工具,第一次工具調用後再放出完整目錄。和錨定列表同時命中時,路由優先。額外命令是 /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。

使用前注意這幾條:

  1. 插件以當前 dsh / pi 進程的權限運行,安裝和加載都可能執行代碼。先看源碼和 MIT 許可證。
  2. models 不寫就等於沒開。裝完只 reload、不改配置,行爲不會變。
  3. 人設不要自行改寫。評測裏換措辭會破壞目標推理風格,源碼也把這句做成不可配置常量。
  4. 首輪如果模型不調工具,會話會一直停在 bootstrap 目錄。這是設計,不是故障。
  5. Project2 的 91 / 99 / 98 來自個人評測倉庫,作者自己寫了「不是公開基準」。不要把它寫成官方分數。
  6. GitHub main 是 0.2.0,npm 是 0.4.0,git tag 還停在 v0.1.0。按哪條安裝路徑走,就按哪份 README 配,不要混用 0.4.0 的 router 字段去配 0.2.0 源碼。
  7. 社區目錄 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

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜