dsh-codebuddy-acp:把本機 CodeBuddy CLI 接進 DeepSeek Harness

前言

DeepSeek Harness(DSH)把模型、工具、會話和界面拆成可插拔模塊。若你已經在用騰訊 CodeBuddy Code CLI,賬號裏有一批帶積分倍率的模型,又希望在同一會話裏用 DSH 的工具卡片、審批框和側欄能力,就需要一個能把 CodeBuddy 當「後端 agent」而不是另開一套前端的橋。

單獨在終端跑 codebuddy --acp 可以對話,但和 DSH 的模型選擇器、歷史落盤、圖片附件、待辦面板不在一條鏈路上。社區插件 dsh-codebuddy-acp(維護者 EVA09,分類爲客戶端)通過 ACP(Agent Client Protocol) 把本機 @tencent-ai/codebuddy-code 註冊爲 DSH 的 codebuddy provider,下面介紹它做什麼、怎麼裝、怎麼用。

這是什麼

dsh-codebuddy-acp 當前版本 0.5.0(MIT 許可證),一句話定位是:把本機 CodeBuddy CLI(ACP 模式)接入 DSH,作爲內部的模型與 agent 後端;模型選擇、工具卡片展示、側欄積分控制台都走插件實現。

裝上之後,模型選擇器裏會出現 CodeBuddy 分組,條目來自你賬號下真實可用的 CodeBuddy 模型(README 中本機實測示例包括 hy3、deepseek-v4.1-flash、glm-5.3、kimi-k2.8-preview 等),名稱後附帶積分倍率;每個模型可選思考檔位(如 low / medium / high / xhigh / max,以模型爲準)。選中後消耗的是 CodeBuddy 賬號裏騰訊提供的額度,不是 DSH 自帶的 DeepSeek API 額度。

架構上,DSH 會話經 ctx.llm 適配器(provider = codebuddy)連到每工作目錄一個常駐的 codebuddy --acp 進程;工具結果經註冊的回放工具 codebuddy_tool 交回 DSH,在會話裏形成完整的 tool-call → tool/call → tool/result 鏈路,界面渲染爲工具卡片,且不會在 DSH 側重複執行工具。

核心功能

模型與思考檔位

與普通 provider 一樣在模型選擇器裏選中 CodeBuddy 分組下的模型即可。適配器通過 ACP session/set_config_option 切換模型(model)與思考檔位(thought_level);DSH 的 reasoningEffort 會映射到檔位,換檔位不丟上下文。積分倍率以賬號側接口 GET /v2/enterprises/personal/models 爲準(控制台與選擇器展示一致),拿不到時回落到包內目錄倍率。

工具卡片與最終答覆

CodeBuddy 在自有進程裏跑工具,ACP 只通知客戶端。插件用兩半把調用鏈寫進 DSH:

  1. 適配器爲每次 ACP tool_call 發原生 tool-call 塊;
  2. codebuddy_tool 按 toolCallId 從結果橋取回真實輸出。

默認 toolEmit: 'settle' 時,卡片在結算完成後出現即爲終態;可改爲 start 以更早出現卡片。client.js 按真實工具名(Read、Bash、Edit 等)做徽章與配色。

因 DSH Chat 只把最後一個 step、且不含 tool-call 塊的 assistant 回覆當作最終答案,插件會在有工具的一輪裏先攢住正文,經回放工具進入下一 step 再放出純文本結論,避免結論被整輪摺疊收走。

圖片輸入

DSH 消息裏的 ImageBlock 經 ctx.attachments 讀出字節,以 ACP session/prompt 的 { type:'image', data, mimeType } 發給 CodeBuddy,而不是舊的 [圖片附件:name] 佔位。未發送時會標 [圖片 N:…(未發送:…)];重放歷史時默認 replayImages: latest 只帶最後一條用戶消息的圖。

標題、待辦與審批

  • 標題:CodeBuddy 的 session_info_update.title 同步到 ctx.sessionTitle.rename(),釘住會話標題。
  • 待辦:以 TaskCreate / TaskUpdate 裏 _meta['codebuddy.ai/rawResponse'].todos 爲準,寫入 DSH 待辦面板(非標準 ACP plan 通知)。
  • 審批:permissionPolicy: ask 時,ACP session/request_permission 轉爲 DSH 原生審批框;無 UI 環境(如 dsh headless)按 permissionAskFallback 兜底。

側欄 CodeBuddy 控制台

Web 客戶端注入側欄入口,可查看賬號剩餘積分、今日/本月/累計消耗、模型啓停與順序、按模型用量、最近調用等。餘額與每日簽到走 CodeBuddy 官方 billing 接口,憑據複用已登錄 CodeBuddy CLI 的登錄態(插件只讀、不復制 token);用量記賬在 $DSH_HOME/codebuddy-acp/usage.json。「領取每日積分」僅在頁面點擊時調用,不做後臺自動簽到。

安裝與啓用

前置條件

  1. 本機已安裝 CodeBuddy CLI,並能執行:
codebuddy --version
  1. CLI 已登錄(README 說明登錄態在 ~/.codebuddy,插件不讀取、不轉發憑據)。未登錄時可在 TUI 中執行 /login 完成瀏覽器授權。插件採用惰性鑑權:先 session/new,僅在明確 auth 錯誤時補一次 authenticate。

  2. Node 引擎要求(見 package.json):^22.19.0 || >=24.0.0。

安裝插件

README 給出的方式是將插件目錄的絕對路徑裝進 profile,例如桌面端:

dsh plugin --profile desktop add <workspace>\plugins\dsh-codebuddy-acp

亦可通過 DSH 的 plugin_manager 安裝本地 bundle:

action: install_bundle
target: <workspace>\plugins\dsh-codebuddy-acp

裝好後 Loader 會加載包 dsh-codebuddy-acp,在 ctx.llm 註冊 codebuddy 路由。裝完或改插件代碼後,重啓桌面端纔會加載新的 JS 模塊(HMR 只對新安裝的包生效一次)。卸載:plugin_manager → remove_bundle → dsh-codebuddy-acp。

插件目錄與說明可在社區目錄頁 skillhub.cn/plugins/EVA09/dsh-codebuddy-acp 與 GitHub 倉庫 獲取;SkillHub 爲獨立社區站點,與 DeepSeek / 幻方無官方從屬關係。

典型用法

在界面裏

  1. 打開模型選擇器,找到 CodeBuddy 分組。
  2. 選一個模型(README 建議首次可試 deepseek-v4.1-flash)。
  3. 正常提問;界面會流式顯示正文、思考區、工具卡片與 token 用量。
  4. 在模型旁選擇思考檔位;側欄打開 CodeBuddy 控制台管理模型順序、查看積分與簽到。

命令行冒煙(README 實測示例)

profile 已配置 CodeBuddy 爲默認或路由到 codebuddy/hy3 時:

$ dsh --profile cbtest "用一句話回答:3+4等於幾?"

鏈路爲 profile → ctx.llm → 適配器 → ACP session/prompt → CodeBuddy 用本機登錄態與額度 → 流式回傳 → DSH 落盤。

headless 下驗證工具回放(需先 dsh plugin --profile headless add <本目錄絕對路徑>):

dsh --profile headless --json "用 Read 工具讀 <本目錄>\package.json 的第 1-3 行,告訴我 name"

常用配置項在 $DSH_HOME/codebuddy-acp/settings.json(或通過插件暴露的配置),例如 permissionPolicy、toolReplay、imageInput、syncTitle、syncPlan 等,詳見倉庫 README 配置表。

適用場景與注意

適合誰:已在用 CodeBuddy CLI 與騰訊賬號額度,希望在 DSH 統一會話裏選 CodeBuddy 模型、看工具卡片、管積分與模型列表的開發者。

務必注意:

  • 插件與 DSH 同一進程權限運行,安裝前應閱讀 源碼 與 MIT 許可證,自行評估信任邊界。
  • DSH 不會替 CodeBuddy 執行工具;卡片是回放,真實執行在 CodeBuddy 進程內。
  • 要讓 DSH 彈出審批框,需 CodeBuddy 側 permissionMode: default 且插件 permissionPolicy: ask;會話審批策略爲 never 時不會詢問。
  • 傳圖能力取決於模型目錄的 supportsImages;ACP 要求 data + mimeType,SVG 等會退回佔位說明。
  • 計費與倍率以 CodeBuddy 賬號與服務端接口爲準;插件本地賬本僅作用量統計,不等同於官方賬單。

結尾

dsh-codebuddy-acp 把 CodeBuddy 的 ACP 會話嵌進 DSH 的 provider 與客戶端擴展裏:同一套 Harness 界面裏選模型、看倍率、收工具結果、同步待辦與審批,並在側欄管理積分與模型策略。若你要接入本機 CodeBuddy 而非另開終端,可從社區目錄頁與 GitHub 倉庫查看版本與文檔:

  • 目錄頁:https://www.skillhub.cn/plugins/EVA09/dsh-codebuddy-acp
  • GitHub:https://github.com/EVA09/dsh-codebuddy-acp
羽毛球分组比赛记分
小程序二维码

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

小夜