logo
0
0
WeChat Login

完成 Codex runner 集成#20

Resolved
created 1 weeks ago
Edit

背景

Issue #16 已经梳理了动态拉起 Codex / DoAgent 运行环境、托管凭证、长驻实例、一次性任务、事件流和资源回收等总体设计。为了先落地可验证闭环,需要单独拆出 Codex 集成任务。

目标

完成 auto-harness 与 Codex runner 的首期集成,让系统可以按配置拉起 Codex 运行环境、注入受控凭证、执行任务,并在执行过程中持续向对话通道输出事件。

范围

  • 新增 codex runner 类型。
  • 支持 Codex CLI 探针:codex --version
  • 支持 Codex 最小任务执行:codex exec
  • 支持将用户 prompt 投递给 Codex。
  • 支持执行过程事件化输出:plan / progress / final / error
  • 支持通过 ConversationSink 将事件转为 AgentForge ACP SSE 对话更新。
  • 支持将事件写入 checkpoint / JSONL,便于后续追溯和恢复。
  • 支持托管凭证注入,不向用户暴露 token 原文。

建议实现

1. Spec 扩展

runners:
  - id: codex-default
    type: codex
    workspace: /workspace
    command:
      argv:
        - codex
        - exec
        - --sandbox
        - workspace-write
        - -
    health:
      argv:
        - codex
        - --version
    credentialRefs:
      - codex-token

2. Runner 接口

type Runner interface {
    Type() string
    Probe(ctx context.Context, env RuntimeEnv) error
    Run(ctx context.Context, task Task, env RuntimeEnv, sink ConversationSink) (Result, error)
}

3. Codex runner 行为

  • 启动前检查 codex --version
  • 任务执行时使用 stdin 或 prompt 文件传入用户请求。
  • 优先使用结构化输出模式;如果暂时不可用,先按 stdout/stderr 行流转成 progress 事件。
  • 任务完成后发送 final 事件。
  • 失败时发送 error 事件并保留脱敏日志。

4. 凭证注入

支持托管凭证模式:

credentials:
  - id: codex-token
    type: cnb_api_token
    source: managed
    expose: never

要求:

  • token 不进入仓库明文。
  • token 不写入用户可见日志。
  • token 不出现在 API response / checkpoint / artifact 中。
  • 如果需要生成 ~/.codex/auth.json,必须在运行环境内临时生成,并设置严格权限。

5. 事件输出

Codex runner 不直接操作 CNB Issue 或 AgentForge 对话,只产生 RunnerEvent

type RunnerEvent struct {
    SessionID  string
    InstanceID string
    TaskID     string
    RunnerID   string
    Type       string // plan | progress | final | error | artifact
    Visibility string // user | internal | audit
    Body       string
    CreatedAt  time.Time
}

ConversationSink 负责输出到:

  • AgentForge ACP SSE 对话通道。
  • checkpoint event log。
  • 后续可扩展 CNB Issue / PR comment。

验收标准

  • auto-harness validate 可校验 Codex runner 配置。
  • auto-harness serve 可以通过 chat/sendMessage 路由到 Codex runner。
  • 用户能在对话流中看到 Codex 执行过程中的阶段性输出。
  • Codex 执行完成后返回最终答复。
  • 执行事件写入 JSONL checkpoint。
  • token 原文不出现在 stdout、stderr、SSE response、checkpoint、artifact 中。
  • Codex runner 的最小探针任务可以返回预期文本,例如 codex-ready

非目标

  • 本任务不实现 DoAgent runner。
  • 本任务不实现完整资源回收管理。
  • 本任务不实现 CNB Issue / PR sink,只预留接口。
  • 本任务不要求实现复杂恢复,只需保存可恢复所需的事件和元数据。

关联

  • 总体设计:#16
合并来自 codex/release-dev-workflow 的合并请求 #26

已合并并发布到 main:Codex runner/NPC 首期集成已进入主线,包含 NPC 入口、配置、运行镜像和事件入口。main 构建 cnb-6u8-1jojcvdm4 成功。

Resolved ISSUE
Assignee
None yet
Label
None yet
Priority
None yet
Time period
-
Property
Add custom properties to record and label key information
Participant