sun603/dsh-setup--plugins-dsh-codex-bridge ↗★ 0

dsh-codex-bridge

Expose the live web-profile session controller over loopback HTTP so external agents (e.g. Codex via an MCP server) can create sessions, inject prompts, read history and cancel turns (web profile plugin, host-only) 适合需要让本机外部智能体(如Codex)创建DSH会话、发送提示词、读取历史或取消执行的用户。

パッケージ
dsh-codex-bridge
互換性
未検証
バージョン
0.1.0
ライセンス
MIT
最終更新
2026/09/23

同名パッケージの別リポジトリ

インストール

検証済み bundle がないか、互換性チェックに失敗しています。先にリポジトリの説明を読んでください。 README 全文を読む ↗

ドキュメント

README 全文を読む ↗

配置(~/.dsh/codex-bridge.json)

{
  "token": "换成一串随机值",
  "defaultCwd": "",
  "defaultAgentPreset": "",
  "defaultModel": "aigw/deepseek-v4.1-flash",
  "control": { "approvals": false, "questions": false },
  "wake": { "enabled": false, "codexBin": "codex" }
}
  • token:空 = 仅 loopback 保护(启动时 stderr 警告);非空 = 所有端点(除 /health)要求 Bearer。
  • defaultCwd:兜底值。正常路径用不到——codex 侧由 MCP server 自动带上自己的工作目录(见下);只有直接打 HTTP 且不带 cwd 时才落到这个值,空 = 用服务端默认工作区。
  • defaultModel:新建会话的默认模型(紧凑串或对象,同 dsh_prompt 的 model 参数)。仅在 dsh_prompt 未带 sessionId(新建)且未显式传 model 时生效;绝不作用于已有会话(那等于偷改别人会话的模型);显式 model 永远压过它。热加载。
  • defaultAgentPreset:新建会话默认挂的 agent preset 名(空 = 服务端默认)。
  • control.approvals / control.questions:代决定授权,默认全关(= 审批/提问仍只由人类在 GUI 处理)。开哪个,codex 才能经 dsh_decide 决定哪个通道;人类 GUI 始终与 codex 竞速,先到先得。
  • wake.enabled / wake.codexBin:唤醒开关,默认关。开着且 codex 的 dsh_prompt 带了 threadId,该轮结束才会往这个线程 queue 唤醒消息(一轮制);codexBin 是 codex 可执行名/路径。

目录匹配(默认行为)

codex spawn MCP 子进程时继承其当前工作目录(本机实测两次确认:codex exec 在哪个目录跑,探针打出的 cwd 就是哪个目录)。因此:

  • dsh_prompt 不带 sessionId 时,MCP server 把 process.cwd() 作为 cwd 传给插件 → dsh 新会话的工作目录 = codex 当前工作目录;
  • 插件再把 cwd 解析成 workspaceId(workspaceRegistry.resolveByPath,未注册则按需 create)传给 sessionController.create——只有传 workspaceId,会话才会挂进 GUI sidebar 的对应分组;只传 cwd 会落进「未分组」(2026-09-21 实测踩中:session-586b922c 就是这么落错的);
  • 已经落错的会话用 dsh_adopt 补救(幂等,校验会话 cwd 与 workspace 路径一致后才收编);
  • 传了 cwd 参数则以传入值为准;
  • 注入已有会话(sessionId)时不涉及 cwd(会话目录早已确定)。

codex 不把父进程的任意环境变量传给 MCP 子进程(只保留 PATH/HOME 等并在 config.toml env 表里追加),所以 DSH_BRIDGE_URL/DSH_BRIDGE_TOKEN 必须写在 config.toml 的 env 表内——当前配置正是如此。

改配置即时生效(每个请求处理前重读文件;解析失败时保留上一份好配置,不会把 token 冲掉)。