caveman-plugin-dsh:让 DSH 根智能体用 Caveman 风格简短作答

前言

在 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。

典型用法

  1. 安装并重启 dsh 后,默认 alwaysOn: true 时首次运行会创建状态文件并开启简短模式(可在 profile config 里设 alwaysOn: false)。
  2. 临时关闭:/caveman off;恢复:/caveman on。
  3. 需要菜单调档位或 jev:/caveman,按 footer 提示输入数字。
  4. 若常用自然语言切换,可 /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 目录页。

羽毛球分组比赛记分
小程序二维码

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

小夜