FinBuddy 意图引擎与SubAgent
· FinBuddy
今日进展
- 新增意图解析引擎(
engines/intent/):6 层继承链 SkillAware → ExpertAware → ModeAware → Hybrid → LLM → Rule - 新增 SubAgent 执行器(
engines/adapters/subagent_executor.py):支持 5 种任务类型 - 新增 FinClawAdapter(
engines/adapters/finclaw_adapter.py):统一 Agent 调用入口 - 前端新增 K 线图组件、Chat 拆分为 InputBar + MessageList + StepPanel
- 新增 SSE 流式解析器和流式增强工具
关键代码/伪代码
意图引擎 6 层继承链
# 意图解析的 6 层继承链,从底到顶逐步增强
# 每一层只做一件事,组合起来形成完整的意图解析能力
CLASS RuleParser: # 第1层:规则解析
"""关键词 + 正则 + 实体提取,毫秒级"""
DEF parse(self, query) -> IntentResult:
FOR pattern IN self.patterns:
IF pattern.match(query):
RETURN IntentResult(intent=pattern.intent, confidence=0.9)
CLASS LLMParser(RuleParser): # 第2层:LLM 语义解析
"""规则解析置信度低时,调用 LLM 兜底"""
ASYNC DEF parse(self, query) -> IntentResult:
rule_result = SUPER().parse(query)
IF rule_result.confidence > 0.85:
RETURN rule_result # 规则命中,不走 LLM
RETURN AWAIT self._llm_parse(query)
CLASS ModeAwareParser(LLMParser): # 第3层:模式感知
"""根据当前执行模式(7种)调整解析策略"""
CLASS ExpertAwareParser(ModeAwareParser): # 第4层:专家感知
"""检查是否有匹配的自定义专家"""
CLASS SkillAwareParser(ExpertAwareParser):# 第5层:技能感知
"""检查是否有匹配的技能可直接调用"""
CLASS UnifiedIntentEngine(SkillAwareParser):# 第6层:统一入口
"""对外暴露的唯一解析接口"""
SubAgent 执行器
# SubAgent:把复杂任务委托给子 Agent 执行
# 支持 5 种任务类型,每种有不同的执行策略
CLASS SubAgentExecutor:
SUPPORTED_TASK_TYPES = [
"data_fetch", # 数据获取:调工具查行情/财报
"analysis", # 分析任务:基本面/技术面分析
"research", # 深度研究:行业/公司深度研究
"backtest", # 回测任务:策略回测执行
"report_gen" # 报告生成:综合分析报告
]
ASYNC DEF execute(self, task_type, params):
# 1. 根据 task_type 选择执行策略
strategy = self._select_strategy(task_type)
# 2. 创建子 Agent 并注入工具
sub_agent = self._create_agent(strategy, params)
# 3. 异步执行,支持进度回调
result = AWAIT sub_agent.run(
on_progress=self._emit_progress
)
RETURN result
遇到的问题
- 意图引擎 6 层继承链太深了,调试时跳来跳去,后来在 4 月 14 日重构为组合模式
- SSE 流式解析在 Electron 中需要从主进程转发到渲染进程,IPC 通信有延迟,需要做缓冲
- SubAgent 的 5 种任务类型边界不够清晰,data_fetch 和 analysis 经常重叠
明日计划
- 新增核心模块:权限检查器、用量追踪、内存压缩、插件钩子
- 增强意图引擎:加入增强版 SSE 解析和流式增强
- 新增测试覆盖