dsh-rex-context:在 Rex 终端里为 DSH 注入实时 terminal 上下文

前言

在 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 输出更新。

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
羽毛球分组比赛记分
小程序二维码

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

小夜