前言¶
在 Rex 终端里跑 DeepSeek Harness(DSH)时,agent 需要知道当前 session、pane、以及本机 rex 命令能做什么。Rex 给 Claude / Codex 等 harness 的做法是「skill + SessionStart hook」:启动时往 system prompt 里塞一段说明。DSH 没有 SessionStart hook 机制,若在 shell 里再挂一层 hook,往往多一个调用点,还和 dsh-tui 已有的状态上报叠在一起。
dsh-rex-context 由维护者 soimy 发布,归类为客户端插件。它把 Rex 侧 SessionStart 那条逻辑搬到 DSH 插件模型里:在 dsh-tui 启动阶段注册一段 system prompt(rex-terminal,order 70),内容不是写死的,而是每次从本机 rex CLI 现取,Rex 升级后措辞会跟着变。不在 Rex 里启动 DSH 时,插件不注册任何段,对普通终端零干扰。
这是什么¶
一句话:dsh-rex-context 是在 Rex 环境内启动 DSH 时,自动注入「你在 Rex 里、当前 session/pane、怎么用 rex」的 system prompt 段;文本随 rex __internal session-start 输出更新。
- 仓库:github.com/soimy/dsh-rex-context
- 社区目录:skillhub.cn/plugins/soimy/dsh-rex-context
- 当前 package 版本:0.2.0(资料来源:package.json)
- 许可证:MIT
DSH 生态主张「一切皆插件」;SkillHub 等目录站是社区索引,与 DeepSeek / 幻方无官方从属关系。安装插件前建议自行查看源码与许可证——插件以当前 dsh 进程权限运行。
核心功能¶
触发条件¶
仅在检测到 Rex 环境变量(如 REX_SESSION / REX_BLOCK)且从 Rex 终端内启动 dsh 时生效。普通 shell 里没有 REX_* → 不注册 system prompt 段。
启动时执行的命令¶
插件在启动阶段调用与 Rex 给 claude/codex 装的 SessionStart hook 相同的 CLI:
rex __internal session-start --agent dsh-tui --feature-session-naming=false --autostart=false
输出注册为 system prompt 段 rex-terminal(order 70)。典型内容包括:
- 当前
REX_SERVER/REX_SESSION/REX_BLOCK,以及用-s/-b选中它们的用法; rex whoami --json等自检命令;- rex 能力说明(开 session、tab、分 pane、跑命令、读输出、跨机器
rex -S HOST); - rex skill 入口(
rex skill show)。
失败与回退¶
| 情况 | 结果 |
|---|---|
不在 Rex 里(无 REX_*) |
不注册任何段 |
| 在 Rex 里,rex CLI 可用 | 用 CLI 实时输出 |
rex 不在 PATH / 超过 3s / __internal 变动 |
回退内置静态文本 |
--feature-session-naming=false:不替 agent 改 Rex session 名,多个 harness 共用同一 session 时可避免互相改名。若要与 claude/codex 行为完全一致,可去掉该 flag(需改插件侧调用,见仓库实现)。
--autostart=false:只连接已在运行的 Rex server,不会因为组装 prompt 而拉起新 server。
为什么不用 hook¶
README 说明:Rex 的 idle/working/blocked/done/error 状态来自 OSC 7501,dsh-tui 已在发;本插件不负责状态上报,再包 hook 只会多一个更差的来源。用「启动时注册 system prompt 段」等价于 SessionStart,且少一个 shell 调用点。
安装与启用¶
面向 dsh-tui profile,官方 README 给出的安装方式如下。
本地目录(开发,软链,改完重启 dsh-tui 即生效):
dsh plugin --profile dsh-tui add /path/to/dsh-rex-context
从 GitHub 安装:
dsh plugin --profile dsh-tui add github:soimy/dsh-rex-context
装完后重启 dsh-tui。system prompt 在进程启动时组装,已有会话不会热更新。
运行环境要求(package.json):Node >=22。
验证与自检¶
在不带 Rex 的普通终端里,可在插件目录执行:
node index.js
预期打印 dsh-rex-context self-check ok(不访问 rex)。自检覆盖:无 Rex env 不注册、有 env 注册唯一一段、CLI 失败时回退静态文本。
在 Rex 内重启 dsh-tui 后,可在会话里观察 system prompt 是否出现 rex-terminal 段及与当前 session 一致的说明。
适用场景与注意¶
适合谁:日常在 Rex 终端里用 dsh-tui 做 agent 开发,希望模型默认知道 Rex 上下文和 rex 命令,又不想维护一份会过期的静态 prompt。
边界(README 已写明):
rex __internal session-start是 Rex 私有命令,随版本可能改名或挪位置;失效时插件静默回退静态文本,不会让 dsh 起不来。- 插件只在 dsh 启动时读一次 env;Rex 中途重启或换 session 需要重启 dsh-tui。
- 资料中记载的测试环境:Rex 0.1.0 (build 1853),rex CLI
0.0.1793890641-gaf0c20;你本机版本不同以实际行为为准。
结尾¶
dsh-rex-context 把 Rex 的 SessionStart 语义用 DSH 插件方式实现:Rex 内启动即有 live-fetched 的 terminal 上下文,Rex 外则无操作。需要安装命令、行为表与边界说明时,以仓库 README 为准。
- 目录页:https://www.skillhub.cn/plugins/soimy/dsh-rex-context
- GitHub:https://github.com/soimy/dsh-rex-context