IntentGate 意图分类系统
IntentGate 意图分类系统
学习目标
- 理解 IntentGate 在 Sisyphus 系统提示中的内嵌实现
- 掌握 4 种意图类型及其对应的 Agent 策略
- 识别意图漂移的级联效应和规避方法
前置知识
本章涉及意图分类的通用原理,建议先阅读:
下文假设你已理解意图分类的概念和类型,直接聚焦 Oh-My-OpenAgent 的具体实现。
项目实践
内嵌在 Sisyphus 系统提示中的 IntentGate
Oh-My-OpenAgent 的 IntentGate 不是独立组件,而是内嵌在 Sisyphus(主编排器)的系统提示中。每条用户消息到达时,Sisyphus 首先执行意图分类,然后才决定行动。
核心提示词结构(来自 src/agents/sisyphus/default.ts):
## Phase 0 - Intent Gate (EVERY message)
Before classifying the task, identify what the user actually wants from you as an orchestrator.Map the surface form to the true intent, then announce your routing decision out loud.每个消息周期都必须经过 Phase 0,即使是多轮对话中的后续消息。
意图类型与路由决策
Sisyphus 的 IntentGate 定义了 4 种意图类型:
| 意图类型 | 触发场景 | Agent 策略 |
|---|---|---|
| research | 「这个函数做了什么」「项目中有哪些认证模式」 | 只读操作,探索 + Librarian |
| implementation | 「添加用户登录功能」「重构认证模块」 | 读写操作,Atlas + Category 执行 |
| investigation | 「为什么这个 API 返回 null」「找出内存泄漏」 | 诊断性操作,Hephaestus + Oracle |
| fix | 「修复这个 lint 错误」「消除 8000 个 eslint 警告」 | 精确修改,最小变更 |
模型家族特定的 IntentGate 实现
不同模型家族的 Sisyphus prompt 对 IntentGate 的实现有细微差异:
Claude Opus 4.7(src/agents/sisyphus/claude-opus-4-7.ts):
- 强调利用 Claude 的 thinking block 进行深度意图推理
- 明确要求:
Reclassify intent from CURRENT message ONLY. NEVER auto-carry "implementation mode" from prior turns.
GPT 家族(src/agents/sisyphus/gpt-5-5.ts):
- 依赖 GPT 的推理模式进行意图分类
- 与 Claude 路径相同但 prompt 措辞不同
Gemini(src/agents/sisyphus/gemini.ts):
- 使用
buildGeminiIntentGateEnforcement()函数添加强制意图分类指令 - Gemini 需要更明确的工具调用引导
Hephaestus 的独立 IntentGate
Hephaestus(深度工匠)有自己的 IntentGate,因为它是自主执行 Agent,不需要经过 Sisyphus:
## Phase 0 - Intent Gate (EVERY task)Hephaestus 的 IntentGate 更简化,因为它的任务通常是明确的实现或修复任务。
问题与规避
意图漂移
问题:在多轮对话中,Agent 自动携带上一轮的意图分类。例如用户先问「这段代码做了什么」(research),然后说「把它改成异步」(implementation),Agent 可能继续以 research 模式回答。
规避:Sisyphus 的 Claude Opus prompt 中明确约束:
Reclassify intent from CURRENT message ONLY. NEVER auto-carry “implementation mode” from prior turns.
分类错误的级联效应
问题:错误意图 → 错误工具选择 → 错误操作。例如将 implementation 分类为 research 后只读不写,用户看到 Agent「什么都不做」。
规避:
- IntentGate 要求 Agent「announce your routing decision out loud」——显式声明意图分类,让用户可以纠正
- 与 Category 路由联动:即使 IntentGate 分类正确,Category 选择错误的模型也会影响结果
设计取舍
系统提示内嵌 vs 独立组件
| 方案 | 优势 | 代价 |
|---|---|---|
| 系统提示内嵌 | 零延迟、无额外 token 消耗、与 Agent 决策一体 | 依赖模型遵循指令的能力 |
| 独立分类组件 | 可独立验证、不依赖 Agent 模型 | 增加一次调用和延迟 |
Oh-My-OpenAgent 的选择:内嵌在系统提示中,因为意图分类需要在每条消息开始时立即执行,独立组件会增加不必要的延迟。