dsh-chatterbox:用系统提示把智能体拉回「边说边做」

前言

在 DeepSeek Harness(DSH)里跑编码智能体时,常见体验是:模型话变少、遇到问题先自己扛、工具连打却不交代进展,偶尔还要反复自查到拖慢节奏。宿主 shipped 的预设对人设描述很薄,也没有一条现成文本专门要求「工具调用之间叙述进展」——模型默认脾气一变,交互节奏就跟着变。

dsh-chatterbox(话匣子)是维护者 Astepluver 发布的工作流类 DSH 插件:往系统提示里注入一段常驻互动协议,用邀请式语气(而非纠错式)把「边做边说、卡住了就开口、把提问讲清楚」等习惯写回默认节奏。分类上属于工作流;社区目录页见 SkillHub 插件页,源码与说明在 GitHub:Astepluver/dsh-chatterbox。

这是什么

一句话:通过 systemPrompt.section 在每次装配系统提示时追加一段可配置的互动协议,默认对所有模型生效(modelPattern: ''),陪伴模式默认不注入(skipPresets 含 companion)。

插件不 import 任何 @deepseek-ai/* 包,配置由 Loader 传入;与 dsh-methodology 同类写法,段落 order 为 720(methodology 为 700)。当前 npm 包版本为 0.2.0,许可证 MIT,要求 Node >= 20,DSH 引擎 >= 0.2.0-rc.2。

核心功能

协议围绕五条可分条开关的行为(默认均为开启):

  1. 边做边说:动手前先说要做什么,做完一小段就聊两句,不把话攒到最后(narrate)。
  2. 卡住了就开口:需要人类决策时直接说;换目标、缩范围、弱化结论由人定,不必一个人扛。
  3. 把提问讲清楚:默认在对话里问,先给背景和推荐;只有「挑一个」本身替人省力时才给选项(askInConversation、questionBox)。
  4. 验证有预算:一次独立核查通常就够,把「已核对 / 待核对 / 已知风险」分开写(verificationBudget)。
  5. 说人话:中文、短句、先说事实再给判断(plainSpeech)。

长会话里模型遵守度可能衰减。插件提供重申机制:例如默认 reassertAfterSilentSteps: 6——连续 6 步没有文字输出时,把极短提醒作为 runtime-context 追加到历史末尾;压缩后也可重申(reassertOnCompaction: true)。这是软引导,不拦截工具调用;需要硬约束应另用 ctx.tools.guard 等机制。

机制要点:interpolate: false 必须开启,否则协议里的字面量 {{ 可能在宿主 renderPrompt() 阶段触发插值错误并拖垮根会话;段落名为 plugin:chatterbox,文本为空时宿主会丢弃该段。

安装与启用

安装方式以仓库 README 为准,任选其一:

安装(本地目录):plugin_manager action: install_bundle  target: "C:\Users\29411\dsh\插件\dsh-chatterbox"
安装(npm):     dsh-chatterbox
安装(Release): https://github.com/Astepluver/dsh-chatterbox/releases/latest/download/dsh-chatterbox.tgz

bundle 通过 cordis.patch.yml 挂入 profile;安装后应能在 Config.listConfigs 中看到对应行,且应用状态为 application: applied(维护者在 README 中记录的验证方式)。

插件以当前 DSH 进程权限运行。安装前建议自行查看仓库源码与 MIT 许可证,确认符合你的工作区策略。

配置说明

在 cordis.patch.yml 的插件行里可覆盖下列字段(节选常用项):

字段 默认 含义
enabled true 总开关
modelPattern '' 空表示所有模型;可填子串或 /正则/ 收窄
matchProvider true 收窄时是否匹配 provider/model 整体
scope 'root' root 仅根会话;all 含子代理
skipPresets ['companion'] 按 agentPreset 精确跳过注入
reassertAfterSilentSteps 6 连续静默步数触发重申(0 关闭)
extra '' 追加到协议末尾的文本(字面量,不插值)
diagnostics true 每次求值写诊断 JSON 行

诊断默认写在插件目录下 .state/diagnostics.jsonl(可通过 diagnosticsPath 改路径)。kind: "section" 表示装配是否注入;kind: "reassert" 表示重申触发原因;若出现 kind: "prompt-missing",说明某次系统提示里缺少本段落,便于区分「没看到协议」与「看到但不照做」。

典型用法与确认生效

收窄模型:若只想对部分路由生效,将 modelPattern 设为子串(如 deepseek)或正则,并视需要调整 matchProvider、whenModelUnknown。

子代理也要协议:默认 scope: 'root',子代理会话诊断里可能出现 apply: false 且 reason 含 scope=root;需要时改为 scope: 'all'。

长任务防沉默:保持默认 reassertAfterSilentSteps: 6,或按会话长度调整;reassertEveryTurns 默认为 0(按轮重申关闭),README 说明同一 user turn 内多步工具时按步重申更准确。

自定义补充:在 extra 里追加两三行团队规范(注意不做模板插值)。

确认生效时打开诊断文件,应能看到类似:

{"kind":"section","apply":true,"reason":"no-pattern(普适模式)"}
{"kind":"reassert","trigger":"silent:6"}

维护者还在 README 中给出真实会话里 system message 段落顺序示例(含 chatterbox 段),可与日志对照。

适用场景与注意

适合谁:希望根会话里模型默认多交代进展、少闷头扛、提问更清晰,又不想改别人 preset 里已有「反复检验」等人设的用户;需要与自带分析类 preset 并存时,插件只补「验证有预算」一侧的平衡。

成本与限制:

  • 默认配置下协议约 1.1k 字中文,随每次请求常驻系统提示,有稳定 token 成本。
  • 只软引导,不改变 ask_user_question 等既有提问框流程。
  • 同一层段落名必须唯一,勿在 profile 与 preset 重复挂同一 bundle。
  • 改 scope 或开关会改变系统提示前缀,可能失效一次提示缓存复用。
  • README 明确:机制可验证,「模型因此更愿意说话」不可在插件侧单独证成。

DSH 生态是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系,本文不以「官方应用商店」表述。

结尾

dsh-chatterbox 用一段可配置、可诊断、可重申的互动协议,补上了宿主默认提示里缺失的「边做边说」约束,并默认覆盖所有模型、跳过陪伴 preset。若你正在 DSH 桌面或自建 profile 里调教交互节奏,可从目录页了解收录信息,从 GitHub 查看完整配置表、测试说明与 Release 包。

  • 目录页:https://www.skillhub.cn/plugins/Astepluver/dsh-chatterbox
  • 仓库:https://github.com/Astepluver/dsh-chatterbox
羽毛球分组比赛记分
小程序二维码

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

小夜