编写方法模板
QitOS 中的方法模板是实现经典 agentic 推理模式的 Agent + Critic 组合。本指南从零开始介绍如何创建一个方法模板。方法模板的组成
每个方法模板由以下部分组成:- Recipe 实现 —
qitos/recipes/<method_name>/__init__.py,包含 AgentModule、Critic 和 State - 模板资产 —
templates/<method_name>/,包含配置、文档和脚手架代码 - 测试 —
tests/test_<method_name>.py - CLI 注册 —
qitos/cli.py中_METHOD_TEMPLATES字典的条目
目录结构
第 1 步:定义 State
创建一个跟踪方法特定字段的数据类: 示意片段(非独立程序;完整执行文件见本页链接)。EngineResult.state 中,并且在每一步都可以被 Critic 访问。
第 2 步:实现 AgentModule
继承AgentModule,实现 build_system_prompt() 和 reduce():
示意片段(非独立程序;完整执行文件见本页链接)。
要点
build_system_prompt()接收task(str)和state(dict)。使用 state 注入上下文,如反思、提议或任务账本。reduce()接收当前Decision和state,返回状态更新的 dict。引擎将其合并到运行状态中。- 始终优雅处理
state=None(第一步)。
第 3 步:实现 Critic
继承Critic,实现 evaluate() 返回 CriticResult:
示意片段(非独立程序;完整执行文件见本页链接)。
CriticResult 动作
关键字段
instruction_patch:注入到下一个 prompt 中指导 agent 的字符串state_patch:合并到 state 中更新方法特定字段的 dictscore:浮点数(0-1)表示质量;被 qita 用于可视化
第 4 步:创建模板资产
agent.py
示意片段(非独立程序;完整执行文件见本页链接)。config.yaml
paper.md
第 5 步:在 CLI 中注册
在qitos/cli.py 的 _METHOD_TEMPLATES 中添加:
示意片段(非独立程序;完整执行文件见本页链接)。
qit list-templates 的输出中。
第 6 步:编写测试
最低测试覆盖: 示意片段(非独立程序;完整执行文件见本页链接)。检查清单
提交方法模板 PR 前:- Agent 继承
AgentModule,实现build_system_prompt()和reduce() - Critic 继承
Critic,实现evaluate()返回CriticResult - State dataclass 包含方法特定字段
-
templates/<method_name>/包含__init__.py、agent.py、config.yaml、paper.md - 方法名称已添加到
qitos/cli.py的_METHOD_TEMPLATES - 测试覆盖 Agent、Critic、State 和边界情况(至少 15 个测试)
- paper.md 解释了从论文到 QitOS 的映射和主要差异
-
pytest tests/test_<method_name>.py通过 - 完整测试套件
pytest tests/ -q无回归
