← 返回 EconSwarmBlog · Engineering
LangGraph · StateGraph

用 LangGraph 编排金融多智能体:StateGraph 实战解析

多智能体系统的难点不在"多",而在"编排"。本文以 EconSwarm 的 12 阶段金融分析流水线为例, 说明如何用 LangGraph 的 StateGraph 把 34 个专业 Agent 组织成一张可控、可审计、可恢复的图, 以及状态设计、条件路由、质量门控与断点续跑在金融场景里的具体做法。

一、为什么金融流水线适合状态机

投研工作本身就是一套 SOP:先取数、再校验、再形成观点、最后过风控与合规。 用一次性的长 prompt 让单个模型"一口气写完",中间过程不可见、错误无法定位、失败只能整体重跑。 LangGraph 的 StateGraph 把每一步显式建模为节点,把流转条件建模为边, 于是每一层都可以单独替换、单独重试、单独复核 —— 这正是金融场景对可解释性与可审计性的硬要求。

二、状态设计:把证据与结论分层

状态对象是整张图的唯一真相来源。实践中把它分成三层最稳:

  • 输入契约 —— 标的、分析日期、研究深度、目标市场,全流程只读。
  • 证据层 —— 各取证节点以追加方式写入,带来源、时间戳与质量评级; 用累加型 reducer 避免并行节点互相覆盖。
  • 结论层 —— 辩论记录、研究计划、风控意见与最终决策, 每项都引用证据 ID,而不是复制文本。

并行取证节点写同一个 key 是最常见的踩坑点:只要该字段没有定义合并规则,最后写入者会覆盖其他分支的结果。

三、节点划分:34 个 Agent 如何落到图上

并非每个 Agent 都要成为一个顶层节点。EconSwarm 的做法是按职责聚类: 取证类 Agent 归入并行分支、辩论类 Agent 归入循环子图、风控与合规 Agent 归入决策前置关卡, 垂直领域技能则作为工具挂载在对应 Agent 上,而不是新增图节点。 这样图的拓扑保持可读,扩展 Agent 或技能时不需要重画流水线。

阶段图上的角色说明
01–03任务定义 · 多源取数 · 证据归集入参校验后由行情、基本面、舆情、政策、资金流等取证节点并行执行。
04–05质量门控 · 证据分级缺失、过期、互相矛盾的数据被打回重取,低质证据不进入推理。
06–07多空辩论 · 观点收敛看多与看空节点交替发言,由 Research Manager 汇总分歧并标注依据强弱。
08–09研究计划 · 交易计划结论转成结构化研究计划,再落到可执行的交易/仓位建议草案。
10–11三方风控辩论 · 合规审议激进、保守、中性风控视角各自评估,合规口径前置检查。
12最终决策 · 报告生成输出结构化决策对象与 Markdown / PDF 报告初稿,全过程留痕。

四、条件边与质量门控回退

质量门控是条件边最有价值的用法:门控节点读取证据层的评级, 不合格就把控制流指回对应取证节点重取,合格才继续向下。 同理,辩论子图用条件边判断是否收敛 —— 分歧收敛或达到最大轮次才退出循环, 避免两个 Agent 无限对话。给每个循环设置显式的轮次上限,是把状态机投产的前提。

五、流式输出与实时进度

金融分析任务动辄数分钟,用户需要看到"正在发生什么"。 按 token 流式返回文本用于报告撰写节点,按节点事件推送进度用于整张图 —— 前者让阅读体验连续,后者让长任务的每一步都可观测。 两条通道共用同一份状态,前端只是它的投影。

六、断点续跑与长任务恢复

持久化检查点让每个节点结束后的状态都可落盘,于是网络抖动、数据源限流或模型超时 都只影响单个节点,恢复时从最近检查点继续,而不是整轮重跑。 这对批量标的池尤其重要:几十只标的的长周期重算,失败成本从"整体"降到"单点"。

七、可审计留痕与错误处理

每个节点的输入、工具调用与输出独立留痕,配合引用证据 ID 的结论层, 就能按角色回放宏观、基本面、资金流与风险各条链路,满足内部质控与合规复核。 错误处理同样落在图上:取数失败切换备用数据源,模型异常降级到更保守的路径, 所有降级动作本身也是状态的一部分,出现在最终报告的方法论说明里。

八、结论与选型建议

如果任务是单轮问答,普通的 Agent 循环足够; 一旦流程有明确阶段、需要并行取证、需要门控与回退、需要审计与恢复, 状态机编排的收益就会迅速超过它的建模成本。 金融研究几乎踩满了后一类特征 —— 这也是 EconSwarm 选择把整条投研 SOP 写成 StateGraph 的原因。