BaronCyrus/dsh-harness-ally:讓 DSH 與外部 CLI 共享同一會話生命週期

前言

DSH(DeepSeek Harness)裏,模型選擇、會話歷史、權限、停止控制和 token 統計通常由 DSH 統一管理。若想把某些回合交給 Claude Code、Codex 或 Kimi Code 執行,常見麻煩是:額外維護一套 CLI 會話和模型配置,或者把外部 CLI 的活動混進 DSH 工具流,導致統計口徑不一致、工具被重複執行。

dsh-harness-ally 的做法是把這幾類執行入口放進同一個 DSH 會話生命週期:模型仍由 DSH 原生模型選擇器決定,Harness 則按回合切換。

這是什麼

dsh-harness-ally 是 BaronCyrus 維護的 DSH Agent Preset,許可證爲 MIT。

它解決的問題是:讓 DeepSeek Harness、Claude Code、Codex 和 Kimi Code 共享同一個 DSH 會話生命週期,並與 DSH 原生模型選擇器自由組合。

它不替換 DSH 的 composer/model selector。模型目錄仍跟隨現有 DSH 配置,Harness 由獨立的「選擇Harness」控件決定。

核心能力

模型選擇與 Harness 選擇分離

  • 繼續使用 DSH 原生模型選擇器選擇 provider/model。
  • 自動使用當前已配置的全部 provider/model。
  • 每個回合可切換 DeepSeek Harness、Claude Code、Codex 或 Kimi Code。
  • Harness 選擇器只在「Harness聯盟模式」出現,Standard 模式完全不顯示。
  • 選擇 Claude Code、Codex 或 Kimi Code 後,由對應 CLI 實際執行。

外部執行過程可見

  • 外部回合立即顯示 Harness · 正在執行。
  • 可公開的 thinking/reasoning summary、Bash、文件修改、WebSearch、MCP 等活動即時顯示在只讀 Think 過程區。
  • Claude Code 使用 partial messages,Codex 使用 app-server,Kimi Code 使用 ACP session/update。

不把外部活動僞裝成 DSH tool call

外部活動絕不僞裝成 DSH tool call,避免 Standard Agent 重複執行同一命令。

CLI 自動檢測與託管安裝

  • 優先使用 PATH 中的全局 CLI。
  • 缺失時在 Harness 菜單內顯示「安裝」。
  • 安裝到 DSH 自有目錄,不使用 sudo。
  • preset 同時提供 subagent_claude_code、subagent_codex 與 subagent_kimi_code。

token 統計與會話停泊

  • 外部 Harness 的 uncached/cache-read/cache-write/reasoning token 會回到 DSH 原生 token meter。
  • 有條件的原生會話停泊與續接:連續使用只發送本輪請求,跨 Harness 切回只補交離開期間的已完成 canonical history。
  • 乾淨完成且未取消的外部 run 會把結構化 activity 收斂爲有界、版本化的工作臺賬,並對常見憑據形態脫敏。

環境要求

  • DSH(DeepSeek Harness)Web 部署
  • Node.js 與 pnpm(DSH Web Profile 已使用 pnpm)
  • macOS、Linux、Windows
  • Claude Code、Codex、Kimi Code CLI 均爲可選:可預先全局安裝,也可以在「選擇Harness」菜單中按需安裝

安裝

先克隆到固定 preset 路徑,再執行安裝腳本:

git clone https://github.com/BaronCyrus/dsh-harness-ally.git ~/.dsh/.agent-presets/harness-ally
node ~/.dsh/.agent-presets/harness-ally/setup/install.mjs

如果設置了 DSH_HOME,需要將命令中的 ~/.dsh 替換爲對應目錄。

安裝後重啓現有 dsh web 進程,然後新建「Harness聯盟模式」會話。不要另起替代 Web server;已經打開的 GUI 只會連接原來的 DSH 進程。

典型用法

  1. 繼續使用 DSH 原生模型選擇器選擇 provider/model。
  2. 打開「選擇Harness」,選擇 DeepSeek Harness、Claude Code、Codex 或 Kimi Code。
  3. 正常發送消息。回合進行中 Harness 會鎖定,停止仍由原生 composer 控制。
  4. 外部回合會先出現 Think · Harness · 正在執行,後續 thinking 和工具活動即時更新。
  5. 最終消息下方顯示 Harness · model 徽標。
  6. 缺失的 Claude Code、Codex 或 Kimi Code 不可直接選擇,只會顯示「安裝」按鈕;安裝完成後即可選擇。

CLI 解析順序是“全局 PATH 優先,DSH 託管目錄兜底”。

適用場景與注意

適合希望在 DSH 中保留統一模型選擇、會話歷史和統計口徑,同時按回合借用外部 CLI 執行能力的開發者。

需要注意:

  • 插件會加入現有 dsh web 進程運行,受當前 DSH 配置、DSH_HOME、sandbox 和權限策略約束。
  • 非 danger-full-access 模式由 DSH 外層 sandbox.confine() 包裹。
  • 安裝前建議檢查源碼和 MIT 許可證,並確認當前 DSH 構建是否支持所需行爲。
  • 雙口徑上下文修復需要 DSH 的 TokenUsage 與 token-meter 支持 contextInputTokens / contextOutputTokens;較舊的 DSH 構建會忽略新增字段。
  • 當前前臺外部 Harness 只接受文本請求;最新頂層用戶消息含圖片時會在 dispatch 前明確提示切回。
  • prompt 通過 stdin、app-server RPC 或 ACP JSON-RPC 傳輸,不出現在 argv。
  • bridge 僅監聽 127.0.0.1,每個 route 使用隨機 bearer token。
  • 錯誤診斷不會回傳 CLI 原始 stderr、route token 或環境變量。
  • 原生會話 lane 按 DSH session × Harness × provider × model 隔離。
  • vendor session 是可丟棄緩存,DSH Session 日誌始終是唯一 canonical history。
  • Codex 的 reasoning 封裝使用持久 AES-256-GCM key,key 以 0600 位於 DSH state;該機制不構成能抵禦同時讀取 key 與託管狀態的獨立安全邊界。

參考

  • GitHub:https://github.com/BaronCyrus/dsh-harness-ally
  • 目錄頁:未提供可確認鏈接,可按倉庫名在插件目錄中檢索。
羽毛球分组比赛记分
小程序二维码

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

小夜