FinBuddy 意图引擎与SubAgent

· FinBuddy

今日进展

  1. 新增意图解析引擎(engines/intent/):6 层继承链 SkillAware → ExpertAware → ModeAware → Hybrid → LLM → Rule
  2. 新增 SubAgent 执行器(engines/adapters/subagent_executor.py):支持 5 种任务类型
  3. 新增 FinClawAdapter(engines/adapters/finclaw_adapter.py):统一 Agent 调用入口
  4. 前端新增 K 线图组件、Chat 拆分为 InputBar + MessageList + StepPanel
  5. 新增 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 解析和流式增强
  • 新增测试覆盖