DeepSeek Harness 插件

JasonQQ/dsh-btw-plugin

Star 数 ★ 3 分类 会话与消息 收录于 2026-08-27

Codex 风格 /btw 指令:在继承主会话上下文的子代理中回答附带问题,答案展示在界面里、不写入主会话历史。

安装

# Release 预构建包

dsh plugin --profile web add "https://github.com/JasonQQ/dsh-btw-plugin/releases/download/v0.1.2/jasonqq-dsh-btw-plugin-0.1.2.tgz"

# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)

dsh plugin --profile web add github:JasonQQ/dsh-btw-plugin

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。

README

为 DeepSeek Harness 实现 Codex 风格的 /btw 指令。

/btw <question> 会在以主会话为上下文的子上下文中回答一个附带问题,并把答案直接显示在对话里,绝不写入主会话的模型历史。想"顺便问一句"的时候尽管问——主上下文始终保持干净。

工作原理

  • 指令通过 @deepseek-ai/dsh-commands 注册(与 /compact、/goal、/plan 同一注册表)。
  • 问题通过 ctx.subagents.start("fork", …) 委派给子代理。fork 提供方会创建一个以父会话已完成轮次为种子的子代理,因此附带问题能基于完整的主会话上下文来回答。
  • 子代理的答案以普通指令结果返回。指令结果由 UI 适配器直接渲染,永远不会进入模型历史——这就是"不污染上下文"的保证。

用法

在任意会话输入框中:

/btw <问题>

答案会以指令结果卡片的形式显示。它不会成为主模型可见的消息,你可以自己参考它而无需撑大上下文。

安装

本插件是一个 Cordis 插件,可接入任意挂载了 @deepseek-ai/dsh-commands 与 @deepseek-ai/dsh-subagent 的 profile(两者都在随附的 @deepseek-ai/dsh-base 组合中)。

  1. 让包从 profile 可解析,例如链接到共享 profile 存储:

    mkdir -p ~/.dsh/profiles/node_modules/@jasonqq
    ln -s "$PWD" ~/.dsh/profiles/node_modules/@jasonqq/dsh-btw-plugin
    
  2. 在 profile 补丁层(~/.dsh/profiles/<profile>/cordis.patch.yml)中加入:

    - insert:
        - id: btw
          name: @jasonqq/dsh-btw-plugin
          config:
            provider: fork
    

    profile 补丁在启动时读取。桌面应用中,编辑后需要重启应用才能生效(CLI 的 dsh web 运行器会热重载补丁)。

兼容性

Harness(@deepseek-ai/dsh-*) cordis schemastery 状态
0.2.0-rc.2 4.0.4 3.18.4 ✅ 已验证 —— DSH Desktop 2.0.17,端到端跑通 /btw(2026-10-01)
0.1.5-rc.2 4.0.2 3.18.2 ✅ 已验证 —— DSH Desktop 2.0.13,端到端跑通 /btw(2026-09-23)
0.1.1-rc.2 4.0.1 3.18.1 ✅ 已验证 —— DSH Desktop 2.0.3

插件依赖的命令面(commands.register()、CommandInvocation、CommandResult、 subagents.getProvider() / start()、SubagentRun.result / dispose()、 SubagentResult.output / stopReason 及五个 stop reason)在上述版本线之间没有破坏性变更。 0.2.0 唯一的差异是一处收紧:SubagentResult.output 变为 readonly ContentBlock[], 插件现有的 filter/map 用法本就满足该约束。

配置

键 默认值 说明
provider "fork" 子代理提供方。fork 会以父会话已完成轮次作为子代理种子(能看到主上下文);spawn 则创建完全独立的子代理。
maxDepth (未设) 可选的子代理递归深度上限;缺省时使用 harness 默认值。

开发

npm test

测试使用桩(stub)化的 ctx.subagents seam 来验证 handler,无需真实模型或宿主。

License

MIT

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →

社区评论

评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。