docs(agent-runner): record codex runner smoke

This commit is contained in:
huanghuoguoguo
2026-05-29 21:37:15 +08:00
parent 2d83c9928a
commit 6afe8b67f8
4 changed files with 37 additions and 12 deletions

View File

@@ -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. 发布和安装策略

View File

@@ -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 stateCLI 错误、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 追加检查

View File

@@ -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 smokePASS。
- 本地 Codex external harness smokePASS。
- Phase 1 是否整体关闭:可以关闭本地协议闭环;若定义为所有官方外部服务 runner 都必须有真实凭据,则外部服务 runner 仍按凭据可用性分别 PASS / BLOCKED。

View File

@@ -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 协议闭环 |
---