dsh-not-token-killer:一个不真正执行任务的模拟插件

前言

开发 DeepSeek Harness 插件时,排查会话事件、交付卡片、profile 配置的时间往往比写插件本身还多。想快速演示一遍「任务被接受 → 轨迹展示 → 回合尾部出现交付物 → 产物被清理」的链路,又不想真的等模型跑完、不想真的写文件,阿里斯托 Suki 的社区插件 dsh-not-token-killer 做的就是这件事。

下面介绍的是一个模拟执行 / 趣味演示插件,GitHub 仓库与插件包名均为 dsh-not-token-killer,由社区用户 ArchettoSuki 维护,MIT 许可,在社区目录中被归入「工作流」分类,发布在 https://www.skillhub.cn/plugins/ArchettoSuki/dsh-not-token-killer 。它不是官方插件,也不承诺任何真实产出:生成的是 SIMULATED 轨迹和 0 字节占位文件,适合用来演示插件生命周期或为截图、录屏构造场景,不适合需要真实结果的工作。仓库首页的 WARNING 已经写明这一点。

是什么样的插件

插件显示名称 Token-Reducer?,显示简介是「通过不真实执行任务,直接生成完成文本及虚假文件以减少token消耗」,图标为 icon.jpg。它的作用是拦截 agent-loop 的 llm/stream,返回一段纯文本合成流,同时生成若干条 thought / tool_call 展示记录,在会话工作目录创建一个 0 字节文件,并通过 Harness 原生的 deliverables/presented 事件把文件挂到回合尾部。文件内容不嵌入完成文本。

核心机制有三点,决定了它在都会话里的实际表现:

  • 不调用真实模型:拦截的是合成流,不向真实 provider 发起请求。
  • 不调用真实工具:展示用的工具步骤是 plugin:dsh-not-token-killer/step 日志,不是 tool/call,不进入 ctx.tools,没有真实 dispatch 路径。
  • 只创建空文件:使用 open(..., 'wx') 原子创建,目标已存在时递增名称;输出结束后约 2 秒删除产物,删除前重新校验目录、普通文件、0 字节与 dev / ino / birthtimeMs,身份不一致就跳过。

实际验收环境是 DeepSeek Harness 0.2.1-rc.2(@deepseek-ai/dsh-desktop-runtime,Node.js 24.21.0)。插件直接依赖插件 API 与事件名,这些接口不属于稳定协议,其它版本未经验证。插件版本 2.0.8,仓库首个公开发布版本 0.1.0。

旧包名 dsh-token-killer 已弃用,升级时需要先移除旧 bundle。

安装与启用

前置条件:DeepSeek Harness 桌面版;一个具有 Full access 的 DSH 会话,因为安装 bundle 需要写 profile 配置。

获取代码:

git clone https://github.com/ArchettoSuki/dsh-not-token-killer.git

也可以在仓库页面选 Code → Download ZIP 后解压。仓库没有构建步骤,也不需要 npm install:它是本地 private 包,没有 install script,没有 npm 运行时依赖。

安装到 DeepSeek Harness,在具有 Full access 的会话中执行:

plugin_manager install_bundle <仓库目录的绝对路径>

Windows 示例:

plugin_manager install_bundle C:\path\to\dsh-not-token-killer

安装后打开「设置 → 通用」,应能看到 Token-Reducer? 开关。验证安装的三步与使用示例一致:看到开关、发送一个任务后出现带 SIMULATED 标记的轨迹和交付卡片、约 2 秒后产物被清理。

卸载:

plugin_manager remove_bundle dsh-not-token-killer

从旧包升级时:

plugin_manager remove_bundle dsh-token-killer

然后禁用再启用一次插件,确保旧的 entry fiber 被释放。

典型用法

在插件工作目录中输入类似下面的任务:

把上季度销售数据整理成一份 Excel 报表

插件会判定为任务,推断格式 .xlsx、复杂度 medium;写入若干条带 SIMULATED 标记的 thought / tool_call 轨迹;创建 0 字节文件 季度复盘(大肥鱼偷懒版).xlsx;通过 deliverables/presented 显示交付卡片;约 2 秒后删除文件并写入 cleanup 记录。

回合结束时的文本形如:

## ✅ 任务已完成:{任务标题}

{任务分析与可行做法的长段落}

——共进行了0次思考,调用工具0次,实际上也没有完成任务(`・ω・´)

——输出文件:`{绝对路径}`(忘写文件内容了(⁄ ⁄•⁄ω⁄• ⁄ ⁄))

——本轮对话新消耗:{tokens} token

几个边界行为:

  • 输入「帮我写一个函数」判定为任务,推断 .js,产物名形如 …(大肥鱼偷懒版).js。
  • 输入「你好」这类非任务输入不触发插件,走真实模型回复,这是刻意的 fail-closed 设计。
  • 关闭「设置 → 通用 → Token-Reducer?」后,Host 不再注册任务钩子,任务回到真实模型与真实工具。

配置要点

默认配置中,只有 enabled 有 UI 入口,其余均为行为契约字段:

字段 默认值 说明
enabled true 全局开关,唯一有 UI 入口的字段
max_thought_chars 120 单条 thought 展示文本上限,取值 20–120
max_tool_args_chars 80 模拟工具参数字符串上限,取值 20–80
simple_step_cap 4 simple 任务步数上限
medium_step_cap 6 medium 任务步数上限
complex_step_cap 8 complex 任务步数上限
hard_step_cap 10 全局硬上限,任何配置都不能超过
default_step_cap 6 无法确定等级时的步数上限

步数预算只作为上限,规划器从 2 / 4 / 6 个有意义步骤开始,按等级截断,不为填满预算制造无意义步骤;force_fill_to_budget: true 会被拒绝。把固定安全字段改成不支持的值时,Host 直接关闭插件行为,而不是放宽契约。修改非 enabled 字段需要编辑 bundle 行配置并重载 profile。

适用场景与注意

适合的场景:验证 Harness 的插件生命周期、会话事件、交付卡片渲染;为截图、录屏构造一个「任务完成」的界面;了解 llm/stream 拦截、ignorable 日志记录这类接管方式。不适合需要真实产出的场合。

需要注意的几点:

  • 插件以当前 dsh 进程权限运行,安装前应对源码、cordis.patch.yml 与许可证做一次审查,确认权限需求与自身环境相符。
  • .docx / .xlsx / .pptx 产物是空文件,不保证是合法或可打开的容器。
  • 所有模拟轨迹带 SIMULATED 徽标和 simulated: true 元数据,插件记录为 ignorable 的 log-only 事件,不进入模型上下文、Session.surface、deriveMessages()、compaction 或 provider 请求。
  • 文件创建或交付失败时,插件删除已创建文件、不写 delivery 事件并输出降级说明,不声称完成。
  • 该插件为社区非官方插件,分类为工作流,星标为 0,变化的风险由使用者自己承担。

小结

dsh-not-token-killer 的价值不在于减少 token,而在于把「模拟执行」这件事做得足够可控:不触真实模型、不触工具、不覆盖文件、不污染上下文,并留下可审计的记录。它更像一个行为边界清楚的演示件,适合理解 Harness 插件机制时作为观察样本。

目录页:https://www.skillhub.cn/plugins/ArchettoSuki/dsh-not-token-killer
仓库:https://github.com/ArchettoSuki/dsh-not-token-killer

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

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

小夜