1.8 KiB
1.8 KiB
推理验证纠偏记录
created: 2026-06-16
验证场景
场景 1: "查下ip"
- SimpleRouter: 无 @skill 前缀,非问候 → REACT + 全量工具
- ReActEngine: system prompt 注入工具描述 + <tool_use> 格式
- LLM 看到工具描述,理解需要 shell → 输出 <tool_use> → 解析执行
- 结论: 正确 ✓
场景 2: "你好"
- SimpleRouter: 匹配 _GREETING_RE → DIRECT_CHAT
- 直接 LLM 调用,无工具
- 结论: 正确 ✓
场景 3: "翻译hello为中文"
- SimpleRouter: 无前缀,非问候 → REACT + 全量工具
- LLM 看到工具但判断不需要 → 直接翻译
- 代价: 多约 2000 tokens(工具描述),但保证正确性
- 结论: 正确 ✓(token 成本可接受)
场景 4: "@skill:shell_agent 查看当前ip"
- SimpleRouter: @skill 前缀 → SKILL_REACT + shell_agent 工具
- 结论: 正确 ✓
发现的问题
P3: tool_schemas 和 prompt-based 工具描述同时存在
- 分析: API tools 参数 + system prompt 工具描述同时传入
- 影响: 支持 function calling 的模型走原生路径,不支持的走 prompt-based
- 当前代码已兼容: has_tool_calls → 原生路径,else → 文本解析路径
- 代价: 工具描述冗余约 2000 tokens
- 结论: 可接受,不需要修改
P4: ChatMessage timestamp 类型不匹配(已修复)
- 问题: add_message 中用了 .isoformat(),但字段类型是 datetime
- 修复: 移除 .isoformat(),使用默认的 datetime.now(timezone.utc)
未修改的已知问题
- tasks.py 仍使用 IntentRouter — 不在 Portal 路径,暂不影响
- 工具描述冗余 — 后续可优化(检测模型是否支持 function calling)
- chat.py 中 user_msg 未使用变量 — 预先存在的 lint 警告