Skip to content

refactor(agent): split Codex and Claude Code into direct runtimes - #1108

Closed
akazwz wants to merge 2 commits into
felinics:mainfrom
akazwz:refactor/coding-agent-runtimes
Closed

refactor(agent): split Codex and Claude Code into direct runtimes#1108
akazwz wants to merge 2 commits into
felinics:mainfrom
akazwz:refactor/coding-agent-runtimes

Conversation

@akazwz

@akazwz akazwz commented Aug 30, 2026

Copy link
Copy Markdown
Member

概要

将 Codex 和 Claude Code 从 ACP 内置实现中拆出,改为与通用 ACP 同级的 direct External Agent runtime。

  • Codex 使用独立的 codex runtime,直接连接 app-server 协议
  • Claude Code 使用独立的 claude-code runtime,直接连接 stream-json 协议
  • 通用 ACP 继续使用 acp_agent,保留自定义 ACP command 能力
  • Hermes Agent 及其安装物、配置和图标全部移除

主要改动

  • 新增统一的 external.Driver 边界,Codex、Claude Code 和 ACP 共用 application orchestration、会话 fencing、事件投影、审批、Ask User 和历史持久化
  • 接入每个 BotAgent 的加密凭证;支持 Codex ChatGPT 登录,以及 Claude Code API Key、OAuth token 和 workspace auth
  • 接通 direct runtime 的模型目录、reasoning effort、工具 gateway、图片输入、中止、fork 和 Schedule
  • Web 的 ACP 专用状态收敛为 External Agent 状态;Agents 设置页、会话图标、模型选择和交互卡片统一接线
  • Workspace image 固定 Codex 0.151.0 与 Claude Code 2.1.250,workspace contract 升级到 v3

数据库与兼容性

新增迁移:

  • 0144_external_agent_runtimes
  • 0145_agent_session_state
  • 0146_agent_turn_markers

迁移会把旧 Codex / Claude Code ACP 配置、默认 Agent、Session、History 和 Schedule 转换为 direct runtime,并将 ACP 命名的 session state 表迁移到 Agent 命名。迁移包含对应 down 文件,已验证 146 → 143 → 146 往返。

凭证不会复制回 Bot metadata;direct runtime 只读取加密的 Agent credential。旧 Hermes workspace 目录仍保留 backup secret redaction,避免升级前遗留密钥进入普通备份。

QA

已完成:

  • Codex、Claude Code、通用 ACP 的基础回复和连续对话
  • 模型与 reasoning effort 选择
  • Shell / 文件工具、审批允许与拒绝、原始 approval options
  • Ask User 单选、取消、多选和文本输入;live 与刷新后的卡片顺序一致
  • 图片上传与视觉输入
  • Server 重启后的凭证及上下文恢复
  • 中止后继续对话
  • Codex 与 Claude Code 的真实 Schedule 到点触发
  • post-rebase 的 Codex Shell / Ask User、Claude Bash、通用 ACP Runtime Context 和 Codex Schedule 回归

工程检查:

  • go test ./...
  • Codex / Claude Code / ACP / session runtime race
  • 完整 PostgreSQL integration、Agent credential integration、Agent session state integration
  • mise run lint
  • Web production build
  • SQLC、OpenAPI SDK、Codex protocol generator 重跑无漂移
  • git diff --check

核心场景已完成人工 QA。

已知边界

本 PR 不包含以下能力:

  • External Agent 的 Continue on / workspace target 选择
  • Bot 自动备份、重建和升级提示
  • Bot backup 导出 bot_agents
  • Native create_schedule 工具新增 direct Agent 选择
  • Telegram、Discord 等真实外部渠道 E2E

发布注意

Workspace contract 已从 v2 升到 v3。发布时必须先提供 v3 workspace image,并对旧 Bot 执行保留 /data 的 workspace 重建;现有容器不会随 Server 自动升级。

@akazwz
akazwz requested review from a team as code owners August 30, 2026 21:24
@akazwz

akazwz commented Aug 31, 2026

Copy link
Copy Markdown
Member Author

已由 GitHub 原生 stack #1113 取代:#1110#1111#1112。顶层 #1112 的 Git tree 与本 PR 最终 head 完全一致(96585a69630cf6650b266ec8fba97b76001d91df),功能和人工 QA 结论不变;后续请在 stack 中 review 和合并。

@akazwz akazwz closed this Aug 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant