ivwumupy/dsh-better-codex-subagent ↗★ 0
dsh-better-codex-subagent
Drop-in replacement for the Codex subagent provider that projects the app-server stream into a harness child session, so Codex runs render as ordinary subagents in the Web UI
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:ivwumupy/dsh-better-codex-subagent说明文档
阅读完整 README ↗dsh-better-codex-subagent
English | 中文
固定 codex subagent provider(@deepseek-ai/dsh-subagent-codex)的 drop-in 替代品,额外把 Codex app-server 的信息流镜像到 harness 子会话。因此每次 Codex run 都会像普通的一次性 subagent 一样呈现在会话树与 Web UI 中:在委派会话下出现可发现的子节点,包含委派任务、助手回答与工具执行(命令与文件变更)的完整对话记录。
该 provider 注册在相同的 codex 名下,tool-subagent-codex 工具行(provider: codex)无需改动即可继续使用。与 @deepseek-ai/dsh-subagent-codex 同时加载会因 provider 重名而 fail loud——组合二选一。
启动与所有权
start(request) 从父会话推导子级 cwd,通过 dsh-subprocess spawn 固定命令 codex app-server --stdio,依次执行 initialize → initialized → thread/start { cwd, ephemeral }。只有 app-server 返回与请求一致的生命周期线程后,provider 才会创建投影子会话、写入种子事件(descriptor、turn 开始、用户任务)并发布 run。发布前失败会关闭通信链路、终止受管进程树并等待退出后拒绝 start()——不会留下孤儿子会话。
已发布 run 的结果契约与基础 provider 完全一致:单回合、以权威的 turn/completed 终止通知为准,取 phase: "final_answer"(无显式阶段时回退 phase: null)的最新 agentMessage 作为返回答案。本地取消映射为 aborted,contextWindowExceeded 映射为 max-tokens,其余远程失败映射为 error。dispose() 幂等并收敛到整树静默。run 结算后投影会话保留在 store 中,作为终态、只读的一次性子会话;Web UI 已原生支持 one-shot subagent 会话的只读展示。
投影
子会话通过有状态的 transcript 镜像 app-server 通知流:
| app-server 通知 | 投影会话事件 |
|---|---|
item/agentMessage/delta | 按 item id 累积 |
item/completed(agentMessage,final_answer 或 null 阶段) | assistant/message,内容为累积或完成文本 |
item/started / item/completed(commandExecution) | tool/call(exec_command,含 /)+ (,退而求其次用退出码、再其次用状态) |