# 目标：构建一个轻量级、Unix 风格的多 Agent 协作与生成框架

你好，请帮我从零开发一个基于纯 Python 的多 Agent 协作系统。
我不希望使用任何庞大的现有 Agent 框架（如 LangChain、CrewAI 或 AutoGen），而是希望秉持 Unix 哲学：每个 Agent 是独立的、职责单一的模块；调度系统像 Bash 一样轻量，仅负责状态流转、JSON 路由和强制中断。

## 核心设计原则
1. **极简依赖**：只使用标准库、`pydantic`（用于强制结构化输出）以及 `anthropic` 或 `openai` 的基础 SDK。
2. **状态分离**：Agent 必须是无状态的（Stateless），上下文和会议纪要由一个全局的“共享白板（State Dict）”维护。
3. **JSON in, JSON out**：内部路由和 Agent 配置严格使用 JSON，最终给人类的报告输出 Markdown。

## 项目结构规划
请将项目分为两个核心命令行工具（CLI）：

### 模块一：Agent 生成器 (`agent_builder.py`)
**功能**：通过简单的自然语言描述（例如名人风格、特定职业规范），快速生成一个结构化的 Agent 配置文件。
- **输入**：一段文本描述（例如“模仿 Steve Jobs 的苛刻产品视角”或 Garry Tan gstack 里的风格）。
- **处理**：调用 LLM 将其转化为一个标准的系统提示词（System Prompt），并保存为 JSON/YAML 文件。
- **输出格式示例** (`agents/steve_jobs.json`)：
  ```json
  {
    "name": "steve_jobs_product_reviewer",
    "role": "Chief Product Officer",
    "system_prompt": "你是一个极其苛刻的产品经理，注重极简主义和用户体验。你的任务是挑刺...",
    "input_schema": "...",
    "output_schema": "..."
  }
模块二：PM Orchestrator / 多 Agent 协作引擎 (run_meeting.py)
功能：模拟会议过程，PM Agent 作为路由器和状态维护者，根据当前讨论进度调度其他 Agent，并在适当时机结束会议输出报告。

输入：一个讨论主题（Topic）和需要参会的 Agent 列表。命令行示例：python run_meeting.py --topic "评估数据库迁移方案" --agents devops,arch,product

PM Agent 的核心逻辑（状态机）：
PM Agent 的系统提示词必须强制它输出 JSON，包含以下字段：

JSON
{
  "analysis": "对当前会议白板内容的简短分析",
  "next_action": "CALL_AGENT | FINISH",
  "target_agent": "要呼叫的agent名称（如果next_action是CALL_AGENT）",
  "prompt_for_agent": "给该agent的具体问题或指令",
  "final_report": "如果决定FINISH，这里输出完整的Markdown会议报告"
}
控制流：

初始化一个“共享白板（Shared Scratchpad）”变量，存入初始 Topic。

循环开始：将白板内容发给 PM Agent。

PM Agent 决定下一个发言者。如果检测到死循环（如超过 MAX_LOOPS=5），强制中断。

目标 Agent 发言（只看 PM 给的具体问题和当前白板摘要，不看所有人原始聊天记录），结果追加到白板。

循环，直到 PM Agent 输出 next_action: FINISH。

打印并保存 final_report。

执行步骤要求
请按照以下顺序帮我实现代码：

首先，定义所有所需的数据结构（使用 Pydantic Models），例如 AgentConfig, MeetingState, PMDecision。

其次，实现 agent_builder.py 脚本，让我可以低成本创建 Agent。

接着，实现 run_meeting.py 的核心大循环（The Event Loop）和 PM 的路由控制。

最后，提供一个 requirements.txt 和一个极简的 README，教我如何用命令行跑通一个“架构师、商业分析师和 PM”评估某个想法的测试 Demo。

请分步骤输出代码，并保持代码高度整洁、有恰当的注释。


***

### 为什么这样设计？

1. **防御性编程（防死循环）**：在 PM 的 JSON Schema 中明确定义了 `CALL_AGENT` 和 `FINISH` 这个枚举值，这就等于把“何时停止”的决定权用强类型约束了起来，配合外部的 `MAX_LOOPS`，彻底解决了你之前担忧的“AI 无限聊下去”的痛点。
2. **高度符合直觉的 CLI**：生成的 `agent_builder.py` 和 `run_meeting.py` 就像 Unix 的 `sed` 和 `awk` 一样，你甚至可以在后续用 bash 脚本把它们串起来自动化运行。
3. **极简配置**：利用 JSON 来存储 Agent，你可以随时从 Garry Tan 的仓库或者任何地方复制 prompt，直接存成 `.json` 就能在下一次会议中被 `run_meeting.py` 动态加载并调用，完美解耦。

你可以直接把这段发给 Claude Code。看看它生成的初始代码骨架后，是否需要我帮你一起 review 它的状态机循环逻辑是否足够鲁棒？
