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. 9. 23.

같은 패키지 이름의 다른 저장소

설치

검증된 bundle이 없거나 호환성 검사에 실패했습니다. 먼저 저장소 설명을 읽어 주세요. 전체 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 冲掉)。