FinBuddy 初始架构搭建

· FinBuddy

今日进展

  1. 确定技术栈:Python FastAPI 后端 + Electron + React 前端,PyInstaller 打包桌面客户端
  2. 设计 7 个 Agent 架构:基本面分析师、技术分析师、风控专家、资金流向分析师、行业研究员、宏观分析师、首席策略师
  3. 实现认证鉴权模块:JWT Token + 权限守卫 + 多环境配置(dev/beta/prod)
  4. 搭建 Electron 前端骨架:Sidebar + ContentArea + ChatPanel + BacktestHistoryPanel

关键代码/伪代码

7 Agent 架构设计

# 最初设计:7 个专业 Agent,各司其职
# 后来证明这是过度设计,详见 multi-agent-design.html
AGENT_REGISTRY = {
    "fundamental_analyst": {
        "role": "基本面分析师",
        "tools": ["financial_data", "pe_roe_screen", "cashflow_analysis"],
        "focus": "财报、估值、护城河"
    },
    "technical_analyst": {
        "role": "技术分析师",
        "tools": ["kline_chart", "macd", "moving_average"],
        "focus": "K线、均线、技术指标"
    },
    "risk_assessor": {
        "role": "风控专家",
        "tools": ["risk_calculate", "position_size"],
        "focus": "风险评估、仓位管理"
    },
    "money_flow_analyst": {
        "role": "资金流向分析师",
        "tools": ["money_flow", "institutional_holding"],
        "focus": "主力资金、机构持仓"
    },
    "industry_researcher": {
        "role": "行业研究员",
        "tools": ["industry_data", "competitor_analysis"],
        "focus": "行业趋势、竞争格局"
    },
    "macro_analyst": {
        "role": "宏观分析师",
        "tools": ["interest_rate", "policy_monitor"],
        "focus": "利率、政策、宏观指标"
    },
    "chief_strategist": {
        "role": "首席策略师",
        "tools": ["synthesize"],
        "focus": "综合所有分析出结论"
    }
}

认证鉴权架构

# 多环境配置:dev/beta/prod 三套环境
# config/env.dev.json → 本地开发
# config/env.beta.json → 测试环境
# config/env.prod.json → 生产环境

CLASS AuthClient:
    """认证客户端 — 连接 FinClaw_Web 鉴权"""

    ASYNC DEF login(self, username, password):
        # 向 FinClaw_Web 发起登录请求
        # 返回 JWT Token + 刷新 Token
        response = AWAIT self.http_post("/api/auth/login", {
            "username": username,
            "password": password
        })
        self.token = response["access_token"]
        RETURN response

    DEF check_permission(self, feature: str) -> bool:
        # 根据 Token 中的角色判断是否有权限
        # 免费用户:基础功能
        # 付费用户:回测、深度研究等高级功能
        user_role = self.decode_token(self.token)["role"]
        RETURN feature IN PERMISSION_MAP[user_role]

遇到的问题

  • Electron 打包配置 build.spec 需要仔细配置 hiddenimports,否则 PyInstaller 会漏掉动态导入的模块
  • 7 个 Agent 的 system prompt 加起来 4000+ token,还没开始对话就占了一半上下文窗口。后来砍到 3 个核心 Agent,详见 Multi-Agent 架构踩坑
  • 前端 ChatPanel 的流式响应解析需要自己写 SSE parser,Electron 的 IPC 不直接支持

明日计划

  • 实现意图解析引擎的初始版本
  • 新增 SubAgent 执行器和 FinClawAdapter
  • 前端 K 线图组件集成