FinBuddy 通达信技能与Swarm优化

· FinBuddy

今日进展

  1. 新增通达信技能模块:K 线获取、板块行情、资金流向、实时报价推送
  2. Swarm 系统优化:并行执行策略改进,减少 Agent 间等待时间
  3. 流式处理增强:支持多 Agent 并行流式输出,前端实时渲染
  4. 新增产业深度文档和研究数据获取策略
  5. 拆分 .trae/rules 规则文件,确保每个文件不超过 1000 字符

关键代码/伪代码

通达信技能 — 工具定义

# 通达信技能:让 Agent 能直接读取本地 TDX 数据
# 不依赖第三方 API,速度快且稳定

TDX_SKILLS = {
    "tdx_kline": {
        "name": "获取K线数据",
        "description": "从通达信获取股票日线/分钟线K线数据",
        "parameters": {
            "stock_code": "股票代码,如 600519",
            "period": "周期:daily/weekly/minute",
            "start_date": "开始日期",
            "end_date": "结束日期"
        },
        # 执行:连接本地 TDX 客户端读取
        "execute": "TdxDataSource.fetch_daily_kline"
    },
    "tdx_money_flow": {
        "name": "获取资金流向",
        "description": "从通达信获取个股资金流向数据",
        "parameters": {
            "stock_code": "股票代码"
        },
        "execute": "TdxDataSource.fetch_money_flow"
    },
    "tdx_sector_rank": {
        "name": "板块涨跌排名",
        "description": "获取行业板块涨跌排名",
        "parameters": {
            "market": "市场:sh/sz"
        },
        "execute": "TdxDataSource.fetch_sector_rank"
    }
}

Swarm 并行流式输出

# 多 Agent 并行执行时,流式输出合并
# 每个 Agent 独立产出,前端实时渲染

CLASS SwarmStreamMerger:
    """多 Agent 并行流式合并"""

    ASYNC DEF merge_streams(self, agents, query):
        # 1. 启动所有 Agent 并行执行
        streams = []
        FOR agent IN agents:
            stream = agent.run_stream(query)
            streams.append(stream)

        # 2. 合并流式输出
        # 每个 Agent 的输出带前缀标识(如 [数据获取] [分析])
        async FOR chunk IN merge_async(*streams):
            # 3. 实时推送到前端
            AWAIT self.sse_emit({
                "agent": chunk.agent_name,
                "content": chunk.content,
                "progress": chunk.progress
            })

遇到的问题

  • 通达信客户端必须先启动才能连接,用户经常忘记开 TDX,需要加连接检测和提示
  • 多 Agent 并行流式输出时,前端渲染顺序不确定,用户体验混乱,需要按 Agent 优先级排序
  • SVN 中文 commit message 在服务器上显示乱码(GBK 编码问题),需要本地转码

明日计划

  • 修复通达信连接时 K 线无增量更新的问题
  • 安全模块重构:SQL 注入防护、裸 except 修复