zero exec — 一次性执行流程

runExec:参数解析 → 离线工具注册 → 配置解析 → 沙箱与 Provider → agent.Run 单轮循环 → 退出

resolve 失败 --list-tools --spec runExec (internal/cli/exec.go) 入口:-p / exec 子命令 参数解析 + 模式展开 parseExecArgs → applyExecMode 模式预置 model/effort/max-turns/工具过滤 工作区解析 resolveWorkspaceRoot --worktree → prepareWorktree(隔离副本) 离线工具注册(provider 之前 · 供 --list-tools / 过滤校验) 核心注册表 newCoreRegistry(nil-scope 占位) + escalate_model(--allow-escalation) Specialist(按自主级别) shouldRegister… → swarm.MaxTeamSize medium/high/unsafe 才注册 Task 工具 MCP 工具 registerMCPToolsForWorkspace execMCPAutonomy · 权限/token 存储 Plugins + 权限模式 activatePlugins(工具+hooks+skills) resolveExecPermissionMode · 失败即跳过 config.Resolve(含 Overrides) --model / --max-turns 覆盖 modelRegistry 解析选定模型 + localControl 工具 · validateExecToolFilters exec 无 provider → 直接 provider_error 退出 沙箱装配 sandbox.NewScope(写根 = workspace + AdditionalWriteRoots + --add-dir) 重注册 CoreToolsScoped(覆盖 nil-scope 占位) buildExecSandboxEngine 策略 · 后端 · 授权 buildProvider providers.New(OAuth 感知 · 已注入 key) modelSwitcher(--allow-escalation 时中途升级) resolveExecRunMetadata · notify.New 可选 webhook 通知 sink 会话与输出准备 sessions.PrepareExec(resume/fork/tag) execEventWriter(text/json/stream-json) sessionRecorder · signalContext newExecSelfCorrector(--self-correct) agent.Run(ctx, prompt, provider, Options) RequireCompletionSignal=true(无工具调用不算完成 → 催继续) Registry · Sandbox · PermissionMode · Autonomy · Hooks · FileTracker 循环:分区工具 → 压缩 → provider 流式 → 执行工具(受门控) 回调 OnText / OnToolCall / OnPermission OnToolResult / OnUsage 完成与退出 notifier.Notify · 记录 message/结果事件 Ctrl+C/SIGTERM → interrupted(干净退出) 失败 → provider_error · 成功 → exitSuccess provider_error 提前退出 先跑 preflight / prompt 校验 给出可修复的错误信息 --list-tools 输出 formatExecToolList 离线短路,不启动 provider Spec 草稿分支 runExecSpecDraft PermissionModeSpecDraft 输出与持久化 stdout:text / -o json / stream-json(stderr 独立) sessionRecorder 落盘事件 checkpoint 快照(可回退) 图例 流程/exec 工具注册表 配置/沙箱 会话/Agent循环 错误退出 MCP/输出 分支/短路

离线阶段(provider 之前)

  • parseExecArgs → applyExecMode 展开模式预置
  • • 工作区解析 + 可选 --worktree 隔离副本
  • • 注册核心/escalate/specialist/MCP/plugin 工具
  • --list-tools 在此短路,全程不启动 provider

装配阶段

  • config.Resolve 叠加 --model/--max-turns
  • • 无 provider → 直接 provider_error 退出(与 TUI 不同)
  • NewScope + 重注册 CoreToolsScoped
  • buildExecSandboxEngine + buildProvider

执行与退出

  • agent.Run 单次运行,RequireCompletionSignal
  • • 回调驱动 execEventWriter + sessionRecorder
  • • 输出:text / -o json / stream-json
  • • 中断=interrupted · 失败=provider_error · 成功=0