# 生成任务 Agent 架构

## 设计原则

按 context 内聚划分 agent：把解决特定子任务必须的信息交给一个 agent，每个 agent 的 context 保持小且聚焦。

## 角色

### Business Agent（决策循环）

薄编排器。驱动 goal → evaluate → decide → dispatch 循环。

- context：目标需求 + 当前结果 + 当前评估（不累积历史）
- 做：提出目标、评估结果（通过 evaluate 工具）、决定迭代或接受、派发任务
- 调度：Librarian（问策）、Craftsman（执行）、Researcher（调研）

### Librarian（内部知识顾问）

基于 KnowHub 已有知识给出方案建议。被动响应，不主动执行。

- context：KnowHub 知识（需求、能力、工具、历史经验）
- 做：接收当前状态 + 评估反馈 → 建议下一步行动
- 不做：不执行工具、不做外部调研、不输出固定步骤序列
- 回写：方案选择经验（"这类需求用 X 方案效果最好"）

### Researcher（外部知识获取）

当已有知识不足时，去外部获取新信息。

- context：待调研的具体问题 + 外部信息源（网页、目录、试跑）
- 做：搜索、对比、试验 → 返回调研结果 → 存入 KnowHub
- 触发：Business Agent 根据 Librarian 的"知识不足"反馈决定派发

### Craftsman（单步执行）

接收一个具体的执行任务（非整个方案），完成并返回结果。

- context：当前步骤的需求 + 候选工具详情（由 Librarian 提供）
- 做：选具体工具/模型、配参、调用工具库执行、返回结果
- 回写：参数和工具组合经验（"这组参数出图最稳"）
- provider 选择在此层处理，不暴露给业务

### evaluate 工具（质量评估）

不是 agent，是 Business Agent 调用的工具。隔离 context 保证评估干净。

- 输入：原始需求 + 输出结果 + 质量标准
- 输出：评分 + 反馈（如"姿态准确但风格偏写实"）
- 内部可调用多模态 LLM 看图评估

## 协作流程

```
Business: "动漫风姿态控制图"
  → Librarian: "推荐 ControlNet + 动漫模型，但缺模型对比数据"
  → Business 决定调研
  → Researcher: 对比动漫模型 → 结果存入 KnowHub
  → Librarian（有知识了）: "推荐 AnimagineXL，先提取姿态再合成"
  → Craftsman(提取姿态) → 姿态图
  → Craftsman(合成生图) → 结果图
  → evaluate(需求, 结果图) → "7/10，风格偏写实"
  → Librarian: "换 Counterfeit 模型或加风格 LoRA"
  → Craftsman(重新合成) → 新结果
  → evaluate → "9/10，符合要求"
  → Business: 接受
```

## 知识回流

每个角色从自己的视角向 KnowHub 贡献知识：

| 角色 | 回写的知识类型 |
|------|--------------|
| Librarian | 方案策略经验（哪种方案适合哪类需求） |
| Craftsman | 工具参数经验（什么配置效果最好） |
| Researcher | 调研发现（工具对比、新工具信息） |
| evaluate | 质量评估记录（方案 A vs B 的效果对比） |
