# Knowledge Agent Execution And Orchestration

> 覆盖 Blade 的 Agent 决策执行、子代理、Agent Teams、Goal、任务列表与定时任务编排。 进入时机：修改 Agent loop、完成门禁、Task 委派、团队协作、Goal 状态机或任务调度。 不包含：会话事件与恢复细节（见 ../session-state-and-context/）、工具执行内部管线（见 ../tool-and-automation-platform/）。关键词：Agent, executeLoopGenerator, Task, Subagent, Agent Teams, GoalStore, TaskScheduler, SessionTaskService。

- Skill: `echovic/knowledge-agent-execution-and-orchestration` (Agent Skill)
- Install (CLI): `npx skillmds@latest add echovic/knowledge-agent-execution-and-orchestration`
- Raw SKILL.md: https://api.skillmd.com/api/skills/echovic/knowledge-agent-execution-and-orchestration/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: echovic (https://skillmd.com/u/echovic)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/echovic/knowledge-agent-execution-and-orchestration

---


## Module Structure

该域负责把一次用户意图推进为可持久恢复、可委派、可验证的 Agent 工作；会话状态和具体工具副作用由相邻领域提供，本域只编排它们。

### Directory Layout
- `packages/cli/src/agent/` — 无状态 Agent 外壳、决策循环、子代理和团队运行时
  - `loop/` — Provider 回合、工具调度、完成门禁和持久化边界
  - `subagents/` — 子代理配置、执行、恢复、结果采纳和 worktree 生命周期
  - `teams/` — 团队成员、任务图、邮箱和状态投影
  - `runtime/` — 本域使用的任务与定时调度器
- `packages/cli/src/goals/` — 持久 Goal 状态机、延续提示和完成验证记录
- `packages/cli/src/prompts/` — 系统提示组装与运行模式指令
- `packages/cli/src/services/CodeReviewService.ts` — 只读审查会话编排
- `packages/cli/src/services/SessionTaskService.ts` — 独立任务 Session 与隔离 worktree 创建

### Key Entry Points
- `Agent.chatStream()` in `packages/cli/src/agent/Agent.ts` — 各运行表面的统一 Agent 事件流入口
- `executeLoopGenerator()` in `packages/cli/src/agent/loop/executeLoopGenerator.ts` — Provider、工具和完成门禁的核心循环
- `createTaskTool()` in `packages/cli/src/tools/builtin/task/task.ts` — 子代理前台、后台与恢复入口
- `TeamRuntime.create()` in `packages/cli/src/agent/teams/TeamRuntime.ts` — 团队和成员启动入口
- `GoalStore` in `packages/cli/src/goals/GoalStore.ts` — Goal 持久状态机
- `SessionTaskService.createSessionTask()` in `packages/cli/src/services/SessionTaskService.ts` — 顶层任务 Session 创建入口

## Gotchas
- “Task”在本域有三套不同身份：`Task` 工具启动子代理，`TaskListManager` 保存 Agent 内检查清单，`SessionTaskService` 创建可在看板和调度器中运行的顶层 Session；三者不能共用 ID 或生命周期假设 (`packages/cli/src/tools/builtin/task/task.ts`, `packages/cli/src/tools/builtin/task/TaskListManager.ts`, `packages/cli/src/services/SessionTaskService.ts`)
- Goal、任务列表和团队工具被声明为 `ToolKind.ReadOnly` 只表示工具权限分类，不表示无副作用；它们会写 sidecar、启动子代理或改变 durable 状态 (`packages/cli/src/tools/builtin/goal/goalTools.ts`, `packages/cli/src/tools/builtin/task/taskListTools.ts`, `packages/cli/src/tools/builtin/team/teamTools.ts`)
- `Agent.executeTask()` 只是一次直接模型调用，不经过工具循环、完成门禁或 durable turn 协议；需要完整编排行为的调用方必须走 `chatStream()`/`chat()` (`packages/cli/src/agent/Agent.ts`, `packages/cli/src/agent/ExecutionEngine.ts`)
- 子代理、团队成员和定时任务最终都复用 Session Runtime，但各自另有 sidecar；只修复主 Session transcript 不会自动修复这些编排状态 (`packages/cli/src/agent/subagents/AgentSessionStore.ts`, `packages/cli/src/agent/teams/TeamStore.ts`, `packages/cli/src/services/ScheduleStore.ts`)

## Architecture
- `Agent` 保存模型与工具依赖，不保存 session ID 或消息历史；每次调用从 `ChatContext` 取状态，存在 Session 时再由 `SessionRuntime` 提供资源快照、持久化和活动轮次所有权 (`packages/cli/src/agent/Agent.ts`)
- Goal 完成不是独立于 Agent loop 的按钮操作：`UpdateGoal complete` 只生成候选，loop 强制启动保留的 `goal-verification` 子代理，PASS 后才由宿主最终提交 (`packages/cli/src/agent/loop/goalCompletionVerification.ts`, `packages/cli/src/goals/GoalStore.ts`, `git:0eff1b2a`)
- Agent Teams 是子代理运行时和共享任务列表之上的组合层，而不是另一套 Agent 实现；成员由 `BackgroundAgentManager` 执行，依赖图复用 `TaskListManager` (`packages/cli/src/agent/teams/TeamRuntime.ts`, `packages/cli/src/agent/teams/TeamTaskGraph.ts`)
- 定时任务不直接执行模型请求；`TaskScheduler` 调用与 Web/CLI 任务相同的 `dispatchTask` 路径，因此继承顶层任务的准入、隔离、恢复和事件投影 (`packages/cli/src/agent/runtime/TaskScheduler.ts`, `packages/cli/src/services/SessionTaskService.ts`, `git:675b11bc`)
- 子代理生命周期、团队事件、Goal 更新和任务列表更新最终汇入统一 Loop/Bus 事件，再由 TUI、Web、Headless 与 ACP 投影；新增状态不能只更新某一个界面 (`packages/cli/src/agent/loop/types.ts`, `packages/cli/src/agent/loop/toolDomainPolicy.ts`, `packages/cli/src/agent/teams/TeamEvents.ts`)

## Decisions
- 编排状态按恢复边界拆成独立存储：对话走 Session JSONL，子代理走 agent sidecar，Goal、团队、任务列表和 schedule 各自原子写入；这样各状态机可以独立校验和恢复，代价是跨文件完成必须携带可核对 receipt (`packages/cli/src/agent/loop/conversationPersistence.ts`, `packages/cli/src/agent/subagents/AgentSessionStore.ts`, `packages/cli/src/goals/GoalStore.ts`)
- 文件系统隔离由任务或子代理启动层创建并交给子 Session，Agent loop 只观察 workspace 转换和完成证据；不要在 loop 内另建 worktree 生命周期 (`packages/cli/src/services/SessionTaskService.ts`, `packages/cli/src/agent/subagents/SubagentWorktreeLifecycle.ts`, `packages/cli/src/agent/loop/toolDomainPolicy.ts`)

## Patterns
- 所有可恢复的委派都先生成稳定 child Session ID，再把 lineage、owner 和配置快照持久化；完成结果通过同一身份回接父会话，避免按显示名称猜测归属 (`packages/cli/src/agent/loop/durableToolIdentity.ts`, `packages/cli/src/agent/subagents/AgentSessionStore.ts`)
- 对外表面只消费事件和快照，不直接拥有编排状态；状态刷新或重启后的投影应重新读取 durable source，而不是缓存 UI 组件内部状态 (`packages/cli/src/agent/loop/types.ts`, `packages/cli/src/agent/teams/TeamRuntime.ts`, `packages/cli/src/services/ScheduleStore.ts`)

## Child Knowledge Nodes
- `./decision-loop-and-completion/SKILL.md` — 进入时机：修改流式决策循环、工具回合、持久提交顺序、完成门禁、系统提示或结构化输出
- `./subagent-runtime/SKILL.md` — 进入时机：修改子代理发现、前后台执行、resume lineage、结果采纳、只读验证代理或隔离 worktree
- `./agent-teams/SKILL.md` — 进入时机：修改团队创建、成员状态、共享任务图、邮箱通信、认领/完成流程或多端投影
- `./goals-tasks-and-scheduling/SKILL.md` — 进入时机：修改 Goal 状态机、Agent 任务列表、顶层任务 Session、定时触发或任务交付

