前言¶
在 DSH(DeepSeek Harness)裏跑智能體時,模型默認傾向完整句子和鋪墊,長對話裏 token 消耗快、閱讀也慢。若只想在終端 TUI 或 Web 界面裏把根智能體的回覆壓成短句、保留技術事實,又不想改 dsh 核心或 fork,社區裏有一條純插件路徑:把上游 caveman 的 voice skills 打進 Cordis 服務,用 /caveman 開關和 TUI 角標控制。下面介紹維護者 farchanjo 發佈的 caveman-plugin-dsh(GitHub:farchanjo/caveman-plugin-dsh,SkillHub 分類:客戶端)。
這是什麼¶
caveman-plugin-dsh 是一個 plugin-only 的 DSH 插件:不 patch 核心、不額外 npm 依賴、無構建步驟。它隨包帶上 caveman / ultracave / megacave 三套 skills、常駐 system-prompt 片段、/caveman 命令,以及在 TUI 上的狀態角標(Web 側無 tuiStatus,無角標)。子智能體(subagent) deliberately 不受 voice 影響,委派出去的報告仍是正常 prose。
宿主需 dsh 0.17+(插件 manifest v0.15)。代碼爲純 ESM,lib/index.js 約 270 行;manifest 聲明 commands.dsh/v1alpha1#Command 與 commands.invoke 權限,無需 grants 文件。
核心功能¶
簡短回覆與檔位¶
開啓後,根智能體傾向用片段式表達、去掉 fluff,技術事實保留。檔位可通過命令或菜單選擇:
caveman/ultracave/megacave(對應 bundled 的skills/*/SKILL.md)
/caveman 命令與口語切換¶
直接動詞示例:
/caveman on # 從此簡短
/caveman off # 恢復正常文風
/caveman status # 當前模式
/caveman caveman|ultracave|megacave
不帶斜槓的口語也可觸發(如 “stop caveman”、”talk like caveman”);模糊句子在開啓決策模型時會先分類再執行。
頁腳菜單(TUI)¶
輸入 /caveman 或 /caveman help 會在 footer 打開數字嚮導,選數字只改本地狀態、不發給模型;q 關閉。菜單 120 秒後過期。完整選項見倉庫 README 表格(含 jev 開關、密鑰、模型列表等)。
可選決策模型 Jev¶
默認關閉;/caveman jev on 開啓後,鬆散措辭由 Jev 決策模型做 typed 分類(帶 confidence),不做文本生成。Provider 含 typesafe(默認)、openrouter,以及用會話模型的 main。密鑰存在狀態文件 ~/.config/caveman-plugin-dsh/config.json,不進環境變量。分類失敗、超時、401 等會被吞掉,不阻塞本輪對話。
持久化與 profile 配置¶
模式、檔位、jev 開關等寫入 config.json(目錄 0700,文件 0600)。profile 行可選 config:
| Key | 默認 | 含義 |
|---|---|---|
alwaysOn |
true |
首次創建狀態文件時的初始 voice |
decision.timeoutMs |
1500 |
單次分類硬超時 |
decision.apiKey |
– | 內聯 OpenRouter key(如 CI),優先於文件 |
commands |
true |
註冊 /caveman |
status |
true |
顯示 TUI badge |
調試:CAVE_DEBUG=1 會把 scope/classify 決策追加到 $TMPDIR/caveman-plugin-dsh.log。
兼容性說明¶
| Host | 狀態 |
|---|---|
dsh tui 0.17 |
voice、命令、角標可用 |
dsh web |
voice、命令可用;無角標 |
| subagents | 設計上排除,保持長文 |
本插件只移植 caveman 的 voice 半部分;上游「讀更少」的 input-compression proxy 目前沒有 dsh 插件 seam,未包含。
安裝與啓用¶
Requires dsh 0.17+。按 README,先取得倉庫本地路徑,再按使用的 profile 添加(安裝後需重啓 dsh):
git clone https://github.com/farchanjo/caveman-plugin-dsh.git
dsh plugin --profile tui add ./caveman-plugin-dsh # terminal UI
dsh plugin --profile web add ./caveman-plugin-dsh # web UI
移除:dsh plugin --profile <p> remove caveman-plugin-dsh。
插件以當前 dsh 進程權限運行;安裝前請自行審閱源碼與許可證(插件代碼 MIT;skills 與 activation rule 爲 Apache-2.0,組合爲 MIT AND Apache-2.0)。Node 引擎要求見 package.json:^22.19 || >=24,peer @deepseek-ai/cordis ^4.0.1。
典型用法¶
- 安裝並重啓 dsh 後,默認
alwaysOn: true時首次運行會創建狀態文件並開啓簡短模式(可在 profile config 裏設alwaysOn: false)。 - 臨時關閉:
/caveman off;恢復:/caveman on。 - 需要菜單調檔位或 jev:
/caveman,按 footer 提示輸入數字。 - 若常用自然語言切換,可
/caveman jev on並配置 provider/key(見 README「Decision model」「Keys and thresholds」)。
profile 示例:
- id: caveman-plugin-dsh
config:
alwaysOn: false
適用場景與注意¶
適合:長期在 TUI/Web 裏用 DSH、希望根會話省 token、又需要隨時切回正常 prose 的開發者。不適合指望子智能體也變成 caveman 文風——設計上子 agent 保持完整報告。
開啓 Jev 時,候選用戶消息與 on/off 狀態會發往所選 provider(main 則走會話 LLM);離線或低 confidence 時回退啓發式。OpenRouter 與 TypeSafe 的 confidence 門限刻度不可直接對比,換模型宜重調。
DSH 生態強調「一切皆插件」;SkillHub(目錄頁)是社區目錄,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
caveman-plugin-dsh 用零依賴 Cordis 插件把 caveman voice 接到 dsh 的 tui 與 web profile:/caveman、TUI 角標與可選 Jev 分類,改的是根智能體表達方式,不動核心。詳情與 issue 見 GitHub 倉庫,插件索引見 SkillHub 目錄頁。