前言¶
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 進程。
典型用法¶
- 繼續使用 DSH 原生模型選擇器選擇
provider/model。 - 打開「選擇Harness」,選擇 DeepSeek Harness、Claude Code、Codex 或 Kimi Code。
- 正常發送消息。回合進行中 Harness 會鎖定,停止仍由原生 composer 控制。
- 外部回合會先出現
Think · Harness · 正在執行,後續 thinking 和工具活動即時更新。 - 最終消息下方顯示
Harness · model徽標。 - 缺失的 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
- 目錄頁:未提供可確認鏈接,可按倉庫名在插件目錄中檢索。