FinBuddy 初始架构搭建
· FinBuddy
今日进展
- 确定技术栈:Python FastAPI 后端 + Electron + React 前端,PyInstaller 打包桌面客户端
- 设计 7 个 Agent 架构:基本面分析师、技术分析师、风控专家、资金流向分析师、行业研究员、宏观分析师、首席策略师
- 实现认证鉴权模块:JWT Token + 权限守卫 + 多环境配置(dev/beta/prod)
- 搭建 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 线图组件集成