dsh-btw:在主对话外安全询问上下文问题的命令

在 DeepSeek Harness (dsh) 的使用过程中,经常需要在执行主任务时穿插一个“侧边问题”(例如:“刚才那个函数名是什么来着?”)。如果在主对话中直接提问,模型会处理这条消息,消耗 token,并污染上下文窗口。

dsh-btw 插件提供了一个 /btw 命令,用于在不干扰主对话的情况下,询问具备上下文感知能力的问题,答案直接渲染在 UI 中,且不消耗主会话的 token 和前缀缓存。

核心功能

  • /btw 侧边命令:提供 /btw 斜杠命令,专用于非核心对话的提问。
  • 隔离执行:提问和回答不会成为主会话中的模型消息,主会话的日志仅记录 command/run 和 command/done 对,token 使用量为 0。
  • 上下文感知:默认使用 fork 提供者作为一次性子代理,继承主会话已完成轮次的上下文。
  • UI 直接渲染:子代理的可见文本块直接返回并显示在用户界面。
  • 资源保护:主会话的前缀缓存保持 untouched 状态。

安装与启用

安装前需确保已安装 DeepSeek Harness (npx @deepseek-ai/dsh),并运行环境满足 Node.js >= 20。

通过 NPM 安装(推荐)

NPM 提供预构建版本,无需构建权限即可安装:

dsh plugin --profile web add dsh-btw

通过 GitHub 安装

从 GitHub 安装需要运行包的 prepare 构建脚本。对于 pnpm >= 10,需要在配置文件中允许构建:

  1. 在 pnpm-workspace.yaml 中添加:
    allowBuilds:
      dsh-btw: true
  1. 重新运行安装命令:
    dsh plugin --profile web add github:<your-github-name>/dsh-btw

配置要求

安装后,cordis.patch.yml 文件中必须包含该插件的配置块,否则插件加载会因未知键而中止。

典型用法

在主对话中输入 /btw,后接问题:

/btw what's the difference between Drop and DropImpl again?

插件会启动一个一次性子代理来回答该问题,结果直接显示在界面上,主对话流保持原状。

配置项

在 cordis.patch.yml 的插件行中添加 config 块:

- insert:
    - id: btw
      name: dsh-btw
      config:
        provider: fork   # fork (默认) | spawn
        persona: terse   # 可选的子代理人设
配置项 默认值 说明
provider fork fork 会将主会话已完成轮次的 prefix 注入子代理,实现上下文感知回答;spawn 启动完全隔离的子代理。
persona — 应用于子代理的可选人设(需由 fork/spawn 提供者支持)。

注意事项

  • 运行权限:插件以当前 dsh 进程权限运行。从 GitHub 安装前,请检查源码与许可证。
  • Node 版本:必须使用 Node.js >= 20。
  • 预构建依赖:通过 NPM 安装预构建版本不需要构建权限。

总结

dsh-btw 解决了开发者在 DSH 中处理侧边查询时的上下文污染和 token 浪费问题。它通过一次性子代理机制,确保主会话的纯净与高效。

  • 插件目录: https://www.skillhub.cn/plugins/136155330/dsh-btw
  • 源码地址: https://github.com/136155330/dsh-btw
羽毛球分组比赛记分
小程序二维码

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

小夜