dsh-rtk-optimizer: Compressing Shell Visible Output and Suggestions for RTK Command Rewrites

前言

在 DeepSeek Harness 里跑智能体时,bash 或 shell 工具会把大段终端原文塞进模型可见的 content。测试通过行、重复日志和 ANSI 着色会占上下文,却不一定帮助下一步推理。若还要把本地命令交给 RTK(Reduce Token Kit)做改写,通常得另装工具、自己拼流程。下面介绍社区插件 dsh-rtk-optimizer:在 tools/post-execute 阶段对指定 shell 工具做有损文本投影,并暴露显式工具调用 RTK 的 rewrite,不依赖外部付费服务。

这是什么

dsh-rtk-optimizer(npm 包名 @lightjunction/dsh-rtk-optimizer,v0.1.0)由维护者 LIghtJUNction 发布,分类为工作流。它做两件事:压缩 DSH shell 工具返回给模型的可见输出;在需要时通过 rtk_rewrite 给出本地 RTK CLI 的命令改写建议。实现思路参考 MasuRii/pi-rtk-optimizer(MIT),这是面向 DSH 的独立实现,未复制上游源码;与 pi 版差异见 README 中的「v0.1 与 pi 来源的差异」。

核心功能

自动压缩模型可见 content

默认监听 bash、shell 的 tools/post-execute(DeepSeek Harness 0.2.1-rc.2 下官方 dsh-tool-bash 注册名是 bash)。插件会:

  • 去掉 ANSI 控制序列;
  • 聚合逐条成功测试行、合并连续重复的普通输出;
  • 仅在 UTF-8 字节数确实变少时采用结果,不截断输出;
  • 保留失败、错误、警告和退出状态相关文本。

只改模型可见的 content,保留工具 schema 校验后的 canonical value、stdout/stderr 和退出码。PTC 程序拿到的 value 不会变短;这不是对原始日志、账单或精确 token 的压缩。不处理 read/edit/hashline 工具或基础设施失败结果;其他 post-policy 的 block 或 value 替换仍会被尊重。

三个 Cordis 工具

安装并重启 profile 后,应能看到 rtk_rewrite、rtk_compact、rtk_stats。

rtk_rewrite:传入待分析的 shell 命令字符串,在宿主侧执行 rtk rewrite <完整命令>,不会执行建议后的命令。返回 command、rewritten、available、reason。未安装 RTK 时保留原命令并设 available:false;rewrite 阶段进程上限 3 秒,支持取消,并限制输出大小。上游 rewrite 退出码 0/3 视为成功,1 表示无需改写。

rtk_compact:对已有终端文本做显式压缩,单次最多 1 MiB;不应传入源码或编辑锚点。

rtk_stats:参数为 {},返回本插件实例生命周期内自动处理的文本块数量及原始/输出字节量;非按 session 持久统计,多个文本块分别计数。

输出压缩不需要安装 RTK;只有命令建议依赖 PATH 中的 rtk 可执行文件。

安装与启用

环境要求:Node.js 24+、DeepSeek Harness 0.2.1-rc.2。当前为源码交付,README 未表示 npm 已公开发布。

在已安装 monorepo 依赖的目录执行:

npm run check --workspace @lightjunction/dsh-rtk-optimizer
cd plugins/dsh-rtk-optimizer
npm pack
dsh plugin --profile web add "$PWD/lightjunction-dsh-rtk-optimizer-0.1.0.tgz" --ignore-scripts

重启目标 profile(示例为 web,其他 profile 替换 web),确认三个 RTK 相关工具已注册。

本地校验:

npm run check --workspace @lightjunction/dsh-rtk-optimizer

典型用法

命令改写建议

{"command":"git status"}

模型或流程调用 rtk_rewrite 并传入上述参数即可;插件用参数数组启动 RTK,不代为执行改写后的 shell。

显式压缩终端文本

{"text":"<测试或构建终端输出>"}

调用 rtk_compact,传入需要投影的终端输出字符串。

配置项

字段 含义
root 宿主绝对工作区路径;默认来自当前 agent 的 workingDirectory;无 agent 时调用 rtk_rewrite 必须设置
executable RTK 可执行文件路径
auto 默认 true;false 关闭自动 content 转换,仍保留三个工具
toolNames 默认 bash/shell;设为 [] 表示不监听任何工具

本地 RTK 进程只使用宿主文件系统,不接入 DSH remote world/sandbox。禁用 auto 可用于需要完整终端证据的场景。其他工具的 finalizeContent 仍可能再次覆盖 content,本插件不能保证任意第三方插件组合下的最终 content。

适用场景与注意

适合:长期在 DSH 里用 bash/shell 跑测试与构建、希望在不丢失败信息的前提下减小模型可见噪音;已安装 RTK、希望由智能体显式调用 rtk_rewrite 获取改写建议(首版不会自动改写已派发的 bash 命令,与 pi 上游行为不同)。

能力与边界(README 已说明):v0.1 仅含 ANSI、成功测试行与连续重复行处理,不具备上游全部构建/lint/Git 语义过滤、源码过滤、TUI 设置或截断策略;不替代 dsh context pruner。

插件以当前 dsh 进程权限在宿主文件系统上运行;安装前请阅读仓库源码与 MIT 许可证(含 UPSTREAM.md、NOTICE)。DSH 社区插件目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-rtk-optimizer 把 shell 输出的模型侧投影和 RTK 改写建议收进同一套 DSH 插件:自动压缩可关、改写走显式工具、canonical 值与 stderr 仍保留供程序使用。

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

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

Xiaoye