在 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,需要在配置文件中允许构建:
- 在
pnpm-workspace.yaml中添加:
allowBuilds:
dsh-btw: true
- 重新运行安装命令:
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