前言¶
在 DSH 裏做智能體協作時,常見的麻煩是「它說它改了」,但沒有證據:一個 agent 去執行,對話裏只有它的自述,實際改動、改了哪些文件、有沒有跑偏,都要人去看工作區。排查成本主要花在「事實覈對」上,而不是任務本身。
這篇文章介紹的插件 dsh-codebuddy-bridge(包名 lunatic-eclipse/dsh-codebuddy-bridge)就是針對這一步:把本機已裝的 CodeBuddy CLI 接進 DeepSeek Harness,DSH 派活、引擎幹活、結論回注對話,再用 CLI 自己留下的改前備份做內容 diff,給出 PASS/FAIL 和證據。維護者是 lunatic-eclipse,版本 0.3.2,MIT 許可。該項目來自社區,與 DeepSeek / 幻方沒有官方從屬關係。
它是什麼¶
一句話:一個 DSH 插件,把本機的 CodeBuddy CLI(WorkBuddy 桌面版內置的同一套引擎)接進來,形成「派活 → 執行 → 結論回注 → 逐輪覈對」的閉環。WorkBuddy 桌面版裏內置的就是這套引擎,裝了 WorkBuddy 就能直接用。
它要補的是協作的最後一環。多數「兩個 agent 協作」目前停在產出自述;這個插件把覈對建立在文件事實和 CLI 的會話記錄上,而不是產出文字上。
核心功能¶
插件提供一組 workbuddy_* 工具。工具名沿用 workbuddy_* 是因爲對接的一直是本機的 WorkBuddy/CodeBuddy 引擎,改包名時沒有跟着改,避免老文檔與習慣失效。
| 工具 | 作用 |
| — | — |
| workbuddy_relay(prompt, edit?, mode?) | 代敲 /codebuddy,結論回注對話;需要 dsh-connect-workbuddy 插件;mode="plan" 是隻讀規劃 |
| workbuddy_review(path, focus?, maxFindings?) | 只讀審查一個文件:固定模板 + 自動覈對它讀沒讀、有沒有寫 |
| workbuddy_verify(run?, session?) | 覈對某輪改沒改:PASS/FAIL/WARN + 證據;不花額度 |
| workbuddy_usage(days?) | 只讀用量報表:近 N 天輪數、耗時(按天/按模式)、每輪 token;不花額度 |
| workbuddy_read(turns?, session?) | 讀 WorkBuddy 桌面版自己的會話記錄 |
| workbuddy_status() / workbuddy_close() | 狀態與會話管理 |
| workbuddy_dispatch(task) + /dsh-handoff | 老的文件交接兜底通道 |
兩種模式值得單獨說明:
- 審計(
workbuddy_review):查錯,輸出「位置—問題—改法」,最多 N 條、每條 200 字內。 - 計劃(
workbuddy_relay(mode="plan")):想清楚,輸出結論 / 約束 / 假設 / 候選路線 / 每條的反例 / 建議,只讀、不限字數,結論存到交換目錄的plans\<時間戳>.md。
額度策略:relay 與 review 共用每會話每小時 6 輪,超限直接返回 { rejected: true, retryAfterSec },不調用 CLI、不花額度;verify / read / status 只本地讀文件,不佔額度。
安裝與啓用¶
在 DSH 裏執行官方安裝命令:
dsh plugin --profile web add dsh-codebuddy-bridge
如果尚未發佈到 npm,從倉庫裝:
dsh plugin --profile web add github:<owner>/<repo>
安裝後重啓 DSH,輸入框下方會出現「CodeBuddy 協作」膠囊。
前置條件:Windows(引擎路徑按 WorkBuddy 的安裝位置自動探測,其它平臺未測);已安裝 WorkBuddy 桌面版(自帶 CodeBuddy CLI),或自己裝的 @tencent-ai/codebuddy-code。dsh-connect-workbuddy 是可選插件:relay 路線(/codebuddy)由它提供,沒有它時其餘功能照常。
聲明的總依賴一併列出,便於先確認環境:
peerDependencies:
dsh-connect-workbuddy >=5.0.0(optional:/codebuddy relay 路線由它提供,缺失時僅其餘功能可用)
react ^18.2.0
engines:
node ^22.19.0 || >=24.0.0
dsh >=0.2.0-rc.1 <0.3.0-0
典型用法¶
安裝後,插件內置的流程可以照下面走。
1、點開輸入框下方的膠囊。它按會話獨立;關着時工具會從該會話的 agent 作用域裏收走。
2、對模型說「讓 CodeBuddy 把 X 改了」,模型會調 workbuddy_relay(prompt, edit: true)。
3、結論以消息回注到對話,輸入框上方的面板列出每一步(讀取 / 修改 / 執行)。
4、說「驗一下」,模型調 workbuddy_verify(),得到 PASS/FAIL + 證據。
覈對這一步之所以不花額度,是因爲它讀的是 CLI 自己留下的會話記錄和改前備份,做內容 diff,不額外調用引擎。
配置在 cordis.patch.yml 或插件設置裏:
| 字段 | 默認 | 說明 |
| — | — | — |
| collabDir | ~/.dsh/codebuddy-bridge | 交換目錄:輪次記錄、模式開關、報告 |
| permissionMode | dontAsk | 透傳到引擎:讀放行、寫拒絕、永不等人;改文件要顯式開(workbuddy_task 傳 acceptEdits,relay 加 --edit);bypassPermissions 爲完全放行 |
| cliPath | 自動探測 | CodeBuddy CLI 入口,僅 Windows 默認路徑 |
| productConfig | 自動探測 | 讓入口以 WorkBuddy 身份工作 |
| model | 引擎默認 | 透傳 --model |
| timeoutMs | 900000 | 單輪超時 |
| watchMs | 3000 | 兜底通道的輪詢間隔 |
| roundLimit | 6 | 每會話每窗口最多幾輪(relay + review 共用) |
| roundWindowMs | 3600000 | 窗口長度;從第一次計入的輪次起算,不滑動 |
權限與隱私¶
插件聲明的讀寫範圍如下,使用前最好對照自己的工作區確認。
- 讀:
~/.codebuddy/projects/<slug>/<session>.jsonl(CLI 自己的會話記錄,用來生成面板和核對證據),以及~/.workbuddy/projects(只有workbuddy_read讀它)。 - 寫:
collabDir下的幾個 jsonl/md(含limits.json額度賬本、plans\下的計劃結論);引擎本身按permissionMode寫工作區文件。 - 不碰:賬號 token、登錄態文件、任何網絡請求(網絡只發生在 CodeBuddy CLI 內部)。
需要注意:面板要顯示明細,所以會話記錄的「工具調用參數摘要」會進入 DSH 的對話上下文。敏感工作區應自行評估是否適用。
插件以當前 DSH 進程的權限運行,因此授權前應先檢查源碼與許可證(MIT)。
適用場景與注意¶
適合以下情況:
- DSH 裏需要調用本機 CodeBuddy CLI / WorkBuddy 引擎,並希望把改動結果以證據形式回注對話。
- 想用「一個 agent 幹活、另一個 agent 驗收」的流程,人只負責拍板和最後一眼。
- 想限制每會話的執行輪次,避免失敗重試把額度喫掉。
同時這些限制要知道:
- 同一時刻一個 CodeBuddy 會話只能跑一輪。
- 面板不在右側邊欄(第三方插件開不了那個位置),放在輸入框上方。
- 沒有「運行中」的實時進度,只有跑完後的明細。
workbuddy_verify只能覈對動作 + 文件事實;它說得對但沒做的、或者做了沒說的,都會標出來,判斷仍要人做。- 節流按 DSH 會話計數:重啓不會清零,開新會話會;固定窗口在兩個窗口交界處,理論上一小時內可過接近 2 倍名義值。
- 計劃模式的結論只保證「落盤完整」;建議對不對仍要人判斷。
開發與自測:
node --check index.js
node --check client.js
npm test # node:test,覆蓋 verify 的判定分支
改 index.js 只需在插件管理裏關開一次;改 client.js 必須重啓 DSH,客戶端模塊只在啓動時掃描。
結尾¶
dsh-codebuddy-bridge 的價值在於把「它說它改了」換成「有 diff、有證據、能給 PASS/FAIL」。它不接管認證,也不額外花額度,適合想在 DSH 裏保留一條可覈對的 CodeBuddy 協作通道的開發者;但它只覈對動作和文件事實,最終判斷仍在人身上。
目錄頁:https://www.skillhub.cn/plugins/lunatic-eclipse/dsh-codebuddy-bridge
倉庫:https://github.com/lunatic-eclipse/dsh-codebuddy-bridge