examples/real/code_security_audit_agent.py。
相比第 3 课的变化
系统提示词现在在教一种审计协议
这一课使用SECURITY_AUDIT_SYSTEM_PROMPT,其中通常会明确写出:
- 第 1 课:解析器契约
- 第 2 课:规划器与执行器契约
- 第 3 课:工作流纪律
- 第 4 课:领域判断协议
解析器与适配层仍然保持稳定
这个审计智能体仍然使用:- 你需要更严格机器可读输出时,改用 JSON 或 XML
- 供应商原生结构化工具调用更可靠时,使用原生工具调用解析器
- 智能体驱动的是交互式终端而不是仓库工具时,使用 Terminus 风格协议
1
按领域组合工具界面
这一课会组合三类工具:这是整条课程关于工具组合的收官。此时工具面开始呈现分层:
SecurityAuditToolSet提供领域审计能力CodingToolSet(profile="codebase")提供低层代码库检查能力TaskToolSet提供显式进度跟踪
2
让提示词与 prepare 共同编码审计方法
提示词负责定义全局审计纪律,而 这一模式很重要:
prepare() 负责定义当前阶段的局部框架:- 系统提示词定义全局方法论
prepare()定义本步上下文
3
把发现作为一等状态
审计状态反而应该保持精简:对这个领域来说,下一步模型并不需要:
- 所有搜索结果
- 所有文件列表
- 所有中间工具负载
- 最近的审计轨迹
- 目前最值得保留的候选发现
4
让归约负责证据压缩与排名
示例里通常只会从工具输出中抽取最高信号的发现:这仍然是在重复整个课程的一条主线:
- 原始证据留在追踪记录
- 压缩的工作记忆留在状态
5
使用有限历史,而不是无限累积
这一课的示例一般会使用:这是一个很强的默认值,因为它既能保留最近的推理与证据,又不会让模型每步都重新阅读大量历史搜索结果。如果你准备把审计扩展成更大的工作流,下一个升级通常是
CompactHistory,而不是无上限历史。6
只有当记忆真能改变结果时再加它
这一课默认仍然不挂载单独记忆适配器。对教程来说,这是正确的:
findings已经承担了压缩型状态记忆的角色qita会保留完整追踪记录供后续审阅- 额外检索层只会让课程复杂化
- 跨运行的长期发现
- 对历史审计结果的语义检索
- 不适合放在即时提示词中的持久笔记
7
把 qita 当成审查产物,而不只是调试器
运行:查看:这一课里,
qita 的角色已经超过调试器:- 它帮助你检查智能体是否先做盘点再下结论
- 它帮助你看哪些发现被提升到了
state.findings - 它帮助你确认解析器诊断是否稳定
- 它帮助你判断上下文压力是否影响了审计质量
- 它帮助你把最终答案读成一份排序审查报告,而不是一堆原始搜索命中
这门课程的最终设计规则
到第 4 课结束时,有一条规则应该已经变得很自然: 领域逻辑应该放在:- 状态设计
- 提示词策略
- 工具组合
reduce()语义
Whitzard 与模型原生脚手架
上面这条课程路线始终使用最可迁移的那条路径:- 文本优先的提示词契约
- 提示词注入的工具模式
ReActTextParser
examples/real/whitzard_agent.py,你会看到课程之外的下一个设计点:
有些时候,模型与脚手架应该一起设计。
例如某些模型在原生 XML 风格工具调用上有更强先验,这时如果你强迫它始终走纯 JSON 契约,智能体也许还能工作,但贴合度会更差。
这也是为什么 QitOS 把这些选择当成协调后的协议决策,而不是彼此孤立的旋钮:
- 解析器
- 工具模式风格
- 输出契约
- 修复路径
完整示例
完整可运行代码位于:后续阅读
构建你自己的智能体
以整条课程里的设计工作表为模板,开始设计自己的 AgentModule
Kit 参考
查询课程中出现过的解析器、提示词、工具集、记忆与历史辅助工具
可观测性
深入掌握 qita 的回放、导出与研究级分享能力
基准测试
把同一个内核迁移到 GAIA、Tau-Bench 与 CyBench
