plan_and_solve/
├── models.py
├── harness.py
├── tools.py
├── planner.py
├── executor.py
├── agent.py
├── demo.py
└── README.md
| 文件 | 职责 |
|---|---|
models.py |
定义跨模块共享的 dataclass:Plan、Step、Action、Observation、AgentDecision。不包含执行逻辑。 |
harness.py |
提供通用 Agent 运行循环:接收 Agent Decision,执行 Action,生成 Observation,再交回 Agent。不了解 Plan-and-Solve 的具体规划逻辑。 |
tools.py |
定义最小 Tool 抽象、Tool Registry,以及 calculator、read_file 两个工具实现。 |
planner.py |
将用户任务转换为结构化 Plan → Step → Action。Prototype v1 可采用规则解析,后续替换为 LLM Provider 而不影响 Executor 或 Harness。 |
executor.py |
真正执行 Step.action:按工具名从 Registry 获取 Tool,执行后返回标准 Observation。不调用 LLM 解释步骤。 |
agent.py |
PlanSolveAgent 实现 Agent Mode 决策逻辑:创建计划、选择下一 Step、根据 Observation 更新 Step 和 Context、形成最终答案。 |
demo.py |
组装 Harness、Tools 和 PlanSolveAgent,运行数学、读取文件、文件不存在三个场景。 |
README.md |
说明运行方式、架构边界、目前 Prototype 的能力和限制。 |
建议第一版保持扁平目录,而不要过早拆出 models/、tools/ 等子包:当前每个职责仅一个小模块,拆包会增加导入和协作复杂度。等出现多个 Tool、多个 Planner 策略或多个 Mode 后,再演进为:
agent_core/
├── models/
├── harness/
├── tools/
└── modes/
└── plan_solve/
当前结构保留了未来拆分边界:harness.py 是通用层,agent.py + planner.py + executor.py 是 Plan-and-Solve Mode 层,tools.py 是可共享能力层。