From 6afe8b67f8117f383fdf9d042cae811fe49a2d5b Mon Sep 17 00:00:00 2001 From: huanghuoguoguo <1051233107@qq.com> Date: Fri, 29 May 2026 21:37:15 +0800 Subject: [PATCH] docs(agent-runner): record codex runner smoke --- .../OFFICIAL_RUNNER_PLUGINS.md | 13 +++++--- .../PHASE1_QA_ACCEPTANCE_MATRIX.md | 1 + .../PHASE1_QA_REPORT_2026-05-29.md | 31 +++++++++++++++---- docs/agent-runner-pluginization/PROGRESS.md | 4 +-- 4 files changed, 37 insertions(+), 12 deletions(-) diff --git a/docs/agent-runner-pluginization/OFFICIAL_RUNNER_PLUGINS.md b/docs/agent-runner-pluginization/OFFICIAL_RUNNER_PLUGINS.md index 5cc90411..a02b2dce 100644 --- a/docs/agent-runner-pluginization/OFFICIAL_RUNNER_PLUGINS.md +++ b/docs/agent-runner-pluginization/OFFICIAL_RUNNER_PLUGINS.md @@ -15,7 +15,7 @@ context/runtime 的 runner,不能被官方插件的实现细节绑死。 - LangBot 主聊天路径通过 `AgentRunOrchestrator` 调用插件化 `AgentRunner`。 - 旧 `src/langbot/pkg/provider/runners/*` 仍保留,作为迁移参考和回退分析材料;在官方插件迁移完成前不要求删除。 - 官方 runner 当前以独立插件目录/仓库推进,例如 `langbot-local-agent/` 和 `langbot-agent-runner/*-agent/`。不再要求先落地单一 monorepo。 -- `claude-code-agent` 已作为外部 harness runner MVP 接入,用来验证 Claude Code / Codex / Kimi Code 这类自管 runtime 的边界。 +- `claude-code-agent` 与 `codex-agent` 已作为外部 harness runner MVP 接入,用来验证 Claude Code / Codex / Kimi Code 这类自管 runtime 的边界。 ## 1. 为什么新仓库 @@ -46,6 +46,7 @@ langbot-app/ tests/ langbot-agent-runner/ claude-code-agent/ + codex-agent/ n8n-agent/ ... ``` @@ -65,6 +66,7 @@ langbot-app/ | `n8n-service-api` | `langbot/n8n-agent` | `plugin:langbot/n8n-agent/default` | | `coze-api` | `langbot/coze-agent` | `plugin:langbot/coze-agent/default` | | - | `langbot/claude-code-agent` | `plugin:langbot/claude-code-agent/default` | +| - | `langbot/codex-agent` | `plugin:langbot/codex-agent/default` | | `dashscope-app-api` | `langbot/dashscope-agent` | `plugin:langbot/dashscope-agent/default` | | `langflow-api` | `langbot/langflow-agent` | `plugin:langbot/langflow-agent/default` | | `tbox-app-api` | `langbot/tbox-agent` | `plugin:langbot/tbox-agent/default` | @@ -77,12 +79,13 @@ langbot-app/ 1. `local-agent` 2. `claude-code-agent` -3. `dify-agent` +3. `codex-agent` +4. `dify-agent` 原因: - `local-agent` 覆盖模型、工具、知识库、流式、会话历史,是能力最完整的基准。 -- `claude-code-agent` 代表 Claude Code / Codex / Kimi Code 这类本地或外部 code-agent harness:它们通常自带 session、tool loop、上下文压缩和权限模型,LangBot 主要提供 IM 事件、资源投影、审计和状态指针。 +- `claude-code-agent` / `codex-agent` 代表 Claude Code / Codex / Kimi Code 这类本地或外部 code-agent harness:它们通常自带 session、tool loop、上下文压缩和权限模型,LangBot 主要提供 IM 事件、资源投影、审计和状态指针。 - `dify-agent` 代表外部 Agent 平台调用,配置和错误处理能验证传统 service API runner 的迁移方式。 ### Batch 2:迁移外部 workflow runner @@ -254,6 +257,8 @@ Claude Code runner 当前把 LangBot event-first context 投影给外部 harness - Skill 文件可以投影到 `.claude/skills/` - MCP config 可以通过 binding config 投影为 Claude Code CLI 参数 - `external.session_id` 与 `external.working_directory` 可以写入 host-owned state,用于后续 resume +- `codex-agent` 可通过 WebUI Debug Chat 调用本机 Codex CLI,读取 LangBot event context,并把 Codex `thread_id` 写入 host-owned state +- 对需要代理的本地运行环境,`codex-agent` 可通过 binding config 的 `environment-json` 显式传递非 secret 环境变量 详见 [PHASE1_QA_REPORT_2026-05-29.md](./PHASE1_QA_REPORT_2026-05-29.md)。 @@ -262,7 +267,7 @@ Claude Code runner 当前把 LangBot event-first context 投影给外部 harness - 不是发布级安全边界实现。 - 默认只做本地 CLI 调用,不实现完整 sandbox/workspace 生命周期。 - 不实现 issue-centric 队列、复杂 workflow engine 或长期任务调度。 -- 不代表 Codex / Kimi runner 已完成;它只验证外部 harness runner 的协议形态。 +- 不代表 Codex 发布级能力或 Kimi runner 已完成;当前只验证外部 harness runner 的协议形态。 ## 9. 发布和安装策略 diff --git a/docs/agent-runner-pluginization/PHASE1_QA_ACCEPTANCE_MATRIX.md b/docs/agent-runner-pluginization/PHASE1_QA_ACCEPTANCE_MATRIX.md index 6f38f7be..d644b11f 100644 --- a/docs/agent-runner-pluginization/PHASE1_QA_ACCEPTANCE_MATRIX.md +++ b/docs/agent-runner-pluginization/PHASE1_QA_ACCEPTANCE_MATRIX.md @@ -141,6 +141,7 @@ Host 侧 agent runner 单测不通过时,不应进入 UI parity QA。 | P2-EXT-05 | `langflow-agent` | 配置 flow endpoint 并发送消息。 | 普通或 SSE 流式响应能归一为 LangBot 消息。 | | P2-EXT-06 | `tbox-agent` | 配置 Tbox 应用并发送消息。 | 回复正常;多模态输入按插件能力处理。 | | P2-EXT-07 | `claude-code-agent` | 配置本地 Claude Code CLI,使用保守权限模式发送确定性 Debug Chat prompt。 | runner 可选、配置可保存、CLI 成功返回;LangBot context 文件可被 Claude Code 读取;`external.session_id` / `external.working_directory` 可写入 host-owned state;CLI 错误、timeout、空输出能被转成受控 `run.failed`。 | +| P2-EXT-08 | `codex-agent` | 配置本地 Codex CLI,使用 Debug Chat 发送确定性 prompt。 | runner 可选、配置可保存、CLI 成功返回;LangBot context 文件可被 Codex 读取;`external.session_id` / `external.working_directory` 可写入 host-owned state;代理等 runtime-local 环境可通过 binding config 显式传入;CLI 错误、timeout、空输出能被转成受控 `run.failed`。 | ### 9.1 外部 harness runner 追加检查 diff --git a/docs/agent-runner-pluginization/PHASE1_QA_REPORT_2026-05-29.md b/docs/agent-runner-pluginization/PHASE1_QA_REPORT_2026-05-29.md index de04e42d..abf80395 100644 --- a/docs/agent-runner-pluginization/PHASE1_QA_REPORT_2026-05-29.md +++ b/docs/agent-runner-pluginization/PHASE1_QA_REPORT_2026-05-29.md @@ -11,16 +11,17 @@ - `claude-code-agent` 可以作为外部 harness runner 通过同一条 `run(event, binding)` 路径执行。 - Claude Code runner 可以接收 LangBot event-first context,并把 context / skill / MCP 配置投影给本地 Claude Code CLI。 - Claude Code runner 可以把外部 session id 和 working directory 写回 LangBot host-owned state,用于后续 resume。 +- `codex-agent` 可以作为外部 harness runner 通过同一条 `run(event, binding)` 路径执行,并把 Codex `thread_id` 写回 host-owned state。 -这表示当前架构足以支撑 `local-agent` 与一个最小 Claude Code runner 的联调;不表示安全发布级 hardening 已完成。 +这表示当前架构足以支撑 `local-agent`、最小 Claude Code runner 与最小 Codex runner 的联调;不表示安全发布级 hardening 已完成。 ## 2. 环境 | 项 | 值 | | --- | --- | -| LangBot commit | `9330a684` | -| `langbot-agent-runner` commit | `07e235b`,本地存在未提交的 `claude-code-agent/` | -| `langbot-local-agent` commit | `ce1fe46` | +| LangBot commit | `58e4b357` | +| `langbot-agent-runner` commit | `d681dda` | +| `langbot-local-agent` commit | `573cc00` | | Claude Code CLI | `2.1.137 (Claude Code)` | | Frontend | `http://127.0.0.1:3000` | | Backend | `http://127.0.0.1:5300` | @@ -31,6 +32,7 @@ | --- | --- | --- | --- | | local-agent | `dc75c543-70f9-4d2a-9467-968628e6ca01` | `plugin:langbot/local-agent/default` | PASS | | Claude Code | `f5c6d8e0-0c5a-4f3f-b7d4-0c1a0dec0de1` | `plugin:langbot/claude-code-agent/default` | PASS | +| Codex | `57eb0cc8-5a5a-4865-9f3e-8b3ad070fbc2` | `plugin:langbot/codex-agent/default` | PASS | ## 4. 证据 @@ -67,6 +69,23 @@ - `agent_runner_state` 中记录了 `external.working_directory`。 - 使用保存的 session id 在对应工作目录执行 Claude Code resume 成功。 +### 4.5 Codex runner UI E2E + +- 报告:`/home/glwuy/langbot-app/langbot-skills/reports/codex-agent-real-20260529-fifth.md` +- 截图:`/home/glwuy/langbot-app/langbot-skills/reports/evidence/codex-agent-real-20260529-fifth/screenshot.png` +- 后端日志成功信号: + - `Processing request from person_websocket` + - `Conversation(0) Streaming completed: 1 chunks, 21 chars` +- Codex JSONL 事件: + - `thread.started` + - `item.completed` with `agent_message` + - `turn.completed` +- 通过点: + - Debug Chat 用户可见回复 `LANGBOT_CODEX_E2E_OK5`。 + - `agent_runner_state` 中记录了 `external.session_id` 和 `external.working_directory`。 + - `environment-json` 可以显式传入代理环境,避免插件 worker 环境缺失导致本地 Codex CLI 卡住。 + - timeout/cancel 路径会清理 Codex 子进程,避免 orphan `codex exec`。 + ## 5. 当前未关闭项 以下不应作为当前协议闭环的阻塞项: @@ -74,11 +93,11 @@ - 发布级安全 hardening:见 [SECURITY_HARDENING.md](./SECURITY_HARDENING.md)。 - 完整 EBA 分支联调和 EventGateway 迁移。 - 完整异步队列、issue-centric 产品模型和复杂 workflow engine。 -- Codex / Kimi runner 全量接入。 +- Codex 发布级能力 / Kimi runner 全量接入。 ## 6. 建议状态 - 本地 `local-agent` 协议闭环:PASS。 - 本地 Claude Code external harness smoke:PASS。 +- 本地 Codex external harness smoke:PASS。 - Phase 1 是否整体关闭:可以关闭本地协议闭环;若定义为所有官方外部服务 runner 都必须有真实凭据,则外部服务 runner 仍按凭据可用性分别 PASS / BLOCKED。 - diff --git a/docs/agent-runner-pluginization/PROGRESS.md b/docs/agent-runner-pluginization/PROGRESS.md index b24d73b3..37b0e745 100644 --- a/docs/agent-runner-pluginization/PROGRESS.md +++ b/docs/agent-runner-pluginization/PROGRESS.md @@ -96,7 +96,7 @@ 以下项目属于本分支收尾工作: -- [x] Smoke / manual validation — `local-agent` 与 Claude Code MVP 已通过本地 WebUI smoke +- [x] Smoke / manual validation — `local-agent`、Claude Code MVP、Codex MVP 已通过本地 WebUI smoke - [ ] Docs final QA - [ ] Claude Code runner 文档、安装和 marketplace 发布准备 @@ -114,7 +114,7 @@ | Event router integration | event branch | 与 BindingResolver 集成 | | Scheduler / background event source | 其他模块 | 定时任务、后台事件源 | | Security release hardening | 后续 release gate | 路径隔离、权限边界、secret、MCP/skill 投影策略、资源配额、审计 | -| Codex / Kimi runner 全量接入 | 后续 runner 插件工作 | 当前只验证 Claude Code MVP 形态,不扩大 scope | +| Codex / Kimi runner 全量接入 | 后续 runner 插件工作 | Codex MVP 已打通;Codex 发布级能力、Kimi runner 和全量 hardening 仍不扩大到当前协议闭环 | | Issue-centric 产品模型 / 异步队列 / workflow engine | 后续产品架构 | 不属于当前 agent-runner plugin 协议闭环 | ---