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会话、发送提示词、读取历史或取消执行的用户。
Other repositories with this package name
Install
This plugin has no verified bundle, or compatibility checks failed. Read the repository notes first. Read the full README ↗
README
Read the full 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 冲掉)。