大模块流程
Routersimple/task/revise/new/close
->
TaskRecord创建或复用 open task
->
Plannersingle 或 team graph
->
Runteam + main AgentLoop
->
Evidence事实记录,不判断
->
User Acceptanceaccept/revise/abandon
小模块拆分
models / store / service
TaskRecord 保存 task_id、session_id、description、goal、status、run_ids、acceptance history、metadata。TaskService 提供 create/start/complete/acceptance/close/abandon 等状态操作。
router 决定进入 Task 后创建或复用 active task。
每次 attempt 调用 start_run 记录 user_message 和 attempt_index。
run 完成后构建 TaskEvidencePacket,状态进入 awaiting_acceptance。
用户验收后进入 closed(accepted)、needs_revision 或 abandoned。
MainAgentRouter
独立 LLM 调用,只负责路由,不回答用户。输入 active task 摘要、最近对话、当前 message 和 intent-agent skill guidance,输出紧凑 JSON。
provider 不可用时 fallback:有 active task 则 continue_task,否则 simple_chat。
system message 约束“只路由、不解释、只 JSON”。
user prompt 包含 actions、critical policy、active task、recent conversation、current message。
解析 action,映射成 MainAgentDecision。
详细 prompt 字段见 Prompt Atlas。
TaskExecutionPlanner
决定当前 attempt 是单 agent 还是先跑小 team。它要求模型返回 JSON schema:mode、reason、strategy、nodes、final_synthesis_instruction。
选择 auxiliary/main provider。
输入 task goal、当前用户请求、attempt index 和必要的 task history。
如果 team,解析 nodes 为 ExecutionGraph 并 validate。
调用 TaskSkillResolver 为 team node 绑定 published skills 或 ephemeral guidance。
TaskSkillResolver
给 planner 生成的泛型 team node 解析能力来源:先 embedding 召回 published skills,再让 LLM 从候选中选;没有匹配则生成一次性 ephemeral guidance。
构造 query:skill_query、node.task、required_capabilities、task.goal、user_message。
embedding top-8 召回候选 skill。
LLM 返回候选 skill name JSON array。
若为空,EphemeralGuidanceSynthesizer 生成临时 SkillContext 注入 node。
EvidenceBuilder / User Acceptance
EvidenceBuilder 从 session 中提取 run evidence、tool summaries、team node results。Evidence 只记录事实,不判断、不打分、不 gate,也不生成 revision prompt;Task 是否完成只由用户验收决定。
主 run 完成后收集 assistant output、tool result、team result。
渲染 evidence packet 文本,用于审计、展示和后续 skill learning。
用户 accept 后关闭 task,并把整个 task 的所有 runs 标记为 Accepted Task Evidence。
用户 revise 时只把 revision message 和必要 task history 带入下一轮执行,不把整包 evidence 自动塞进 prompt。