前言¶
在 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