为什么把几个 Agent 连起来,不等于有了一条可靠的投研工作流?

LangGraph 核心五件套

约 11 分钟4 道小题

学完你能说清楚用五件套组织可检查的 Agent 流程。

01学完这一课,你能做到什么

学完这一课,你应该能:

  1. 判断一个任务适合开放式智能体、固定工作流,还是两者组合;
  2. 用 State、Node、Edge、Conditional Edge 和 Checkpointer 描述流程;
  3. 设计有限重试、人工审批、暂停恢复和任务隔离;
  4. 把行情、信号、风控和执行模块接成一条可审计链路;
  5. 用一个不调用大模型的算术图,验证状态更新和条件循环。

这五个词可以先这样记:State 是共享任务记录,Node 是处理步骤,Edge 是连接线,Conditional Edge 是按状态选路,Checkpointer 是保存进度的存档点。

一句话记住先定义状态和边界,再让节点协作。

02先判断需要多少自由度

开放式智能体适合路径还不明确的研究,例如解释、比较行业或补充公开资料。它会根据上下文决定下一步,灵活但路径和结果可能变化。

固定工作流适合顺序已经明确的任务,例如先取数据,再算信号,再做风控,最后审批执行。条件分支、重试上限和权限边界由程序控制,不只是写在提示词里。

两者可以组合:把稳定的交易链路放在外层,在研究节点内部调用智能体;也可以让外层智能体从多个经过验证的工作流中选择。盘前 9 点、收盘后 15:30 只是调度示例,真正执行还要检查交易日、数据是否更新以及任务是否重复。

开放式智能体与固定工作流

开放式智能体

路径灵活,适合研究探索;结果和调用路径可能变化。

固定工作流

顺序、分支和边界明确,适合可审计流程。

一句话记住探索用自由度,执行用明确边界。

03先画出一条完整交易链

一个教学用的五角色流程是:

开始 → Charles 情报 → Joe 信号 → Chris 风控 → Human 审批 → Eason 执行 → 结束

Charles 查询新闻、财务和行情并形成观点;Joe 输出方向、价格和数量建议;Chris 复用风控引擎;Human 对具体订单授权;Eason 调用交易适配器。角色名只是职责,不代表每个节点都必须调用大模型。

如果账户现金只有约 802,而信号建议买入新标的,流程就应该停在资金检查或审批前,不能凭聊天猜账户状态。账户快照应来自真实接口,且只传入完成任务所需的最少信息。

没有下单回报时,要检查日志和接口状态。不能默认是配置问题,也不能为了测试随意转入资金或尝试真实交易。

研究到执行的边界
  1. 1情报事实与观点
  2. 2信号方向、价格、数量
  3. 3风控资金与限额
  4. 4审批明确授权
  5. 5执行回报可核对

一句话记住信号通过,不等于账户允许执行。

04State 是共享的数据契约

State 可以理解为团队共同维护的结构化任务记录。常见字段包括:

  • stock_code、capital:证券和资金;
  • investment_view:情报结论;
  • signal:方向、价格和数量建议;
  • risk_verdict:风控结果及理由;
  • approved:人工授权结果;
  • trade_result:执行回报;
  • retry_count:已经发生的重试次数;
  • logs/messages:审计记录。

每个字段都要定义类型、允许值、单位、时间戳和缺失含义。空值不能被误当成“已经通过”。节点通常返回局部更新字典,由框架按定义合并;不要依赖原地修改共享对象的副作用。

如果多个节点同时写入日志,应明确使用追加型 reducer(合并规则);如果多个节点都可能改订单金额,则要规定谁能覆盖、怎样冲突处理。Annotated 一类类型标注可以声明合并约定,但具体语法要以所用版本文档为准。

State 里的关键记录

输入

证券、资金、任务标识。

判断

观点、信号、风控结果。

审计

审批、回报、日志和重试次数。

一句话记住字段先定契约,空值不能默认通过。

05Node 处理,Edge 连接

Node(节点)是一个读取 State、执行工作并返回更新的处理函数。它内部可以是 Python 计算、数据库查询、HTTP 调用、工具或智能体。简单的计算不需要为了“多 Agent”而强行调用大模型。

Edge(边)规定一个节点之后去哪里。START 是入口,END 是结束。线性流程适合没有分支的操作;图结构更适合表达分支、循环和状态。允许循环的图不是 DAG,DAG 特指有向无环图。

节点可复用已有行情读取、回测、RiskManager 和交易适配类,但接入前要核对输入、输出、数据时点和错误处理。导出的 Mermaid 图能展示编排结构,却不能代替运行日志和测试。

Node 和 Edge 的分工

Node

做一件事,并返回 State 的局部更新。

Edge

规定下一步,或把状态交给路由函数。

一句话记住节点做事,边决定下一站。

06Conditional Edge 负责按状态选路

条件边先读取 State,再返回预先定义的目标节点或标签。例如:风控通过进入审批;只是数量超限则去缩量重试;不可修复的拒绝或则结束。

路由函数只负责决定方向。需要增加 retry_count 或更新订单时,用独立节点完成。这样每个动作都便于测试。

有限重试必须先定义含义。若“最大重试 2 次”指初次失败后还能再试 2 次,那么总尝试次数是 3 次。应测试 0、1、2 和超限边界,防止计数没有更新而无限循环。

halt 表示停止新增风险,不能回到 Joe 让模型改写理由绕过熔断;不可修复的 reject 应结束。只有明确可修复的 warning 或指定错误,才允许有限重试。

风控结果的路由
  1. 1通过进入审批
  2. 2可修复警告计数后有限重试
  3. 3拒绝结束流程
  4. 4熔断停止新增风险

一句话记住重试要有原因、计数和上限。

07Checkpointer 让流程能够恢复

Checkpointer(检查点保存器)会保存流程执行中的 State 快照,让中断后可以继续,也方便审计和查看历史。不同任务必须使用独立的 thread 标识,避免一个账户的状态误用于另一个任务。

内存保存适合演示,进程退出后未必保留;跨进程恢复要使用合适的持久化方案。但保存 State 不等于外部操作只执行一次:如果订单已经发出、回报还没保存,恢复时可能重复下单。因此交易节点还需要唯一订单编号、幂等检查和券商回报核对。

人工节点可以用 interrupt 暂停,展示证券、方向、数量、价格范围、风险结果和有效期,等待人明确批准或拒绝后 resume 恢复。没有回复不能视为批准;若审批后订单被改写或行情明显过期,应重新审批。

真实下单应放在明确授权后的独立节点,并结合幂等检查。interrupt 前的副作用也要谨慎,因为恢复可能从节点开始重新执行。

可恢复且不重复执行
  1. 1运行写入 State
  2. 2保存记录 thread 快照
  3. 3中断等待人审批
  4. 4恢复核对版本与回报
  5. 5执行幂等下单

一句话记住检查点能恢复状态,不保证订单不重复。

08用确定性算术图验证循环

先不用大模型,做一个最小图:State 里有 n 和 log;double 节点把 n 乘 2 并记录日志;如果 n 小于 100,就进入 add_one,然后回到 double;否则结束。

输入 n=3 时,路径是:

3 → 6 → 7 → 14 → 15 → 30 → 31 → 62 → 63 → 126

最终值为 126。每一步的数值和日志都能核对,不需要让模型反复做算术。这正是工作流的优势:确定性步骤交给程序,需要语义判断的环节才考虑模型。

算术图的终止条件

n < 100:add_one → double;否则 END

从 3 开始,最终得到 126。

一句话记住先用可核对的小图验证编排。

09把图接到真实系统前先验收

项目可以把入口、图编排、State 定义、nodes、复用脚本、环境配置和 outputs 分开。后端用 Flask 或 FastAPI 暴露工作流接口,前端用 React 或 Vue 展示进度、报告、审批和执行回报;网页只是交互层,不能替代后端状态和错误反馈。

扩展到“热点新闻→板块识别→成分映射→候选龙头”时,行业分类和概念数据要保存口径、版本和日期。候选龙头也要先写明按、利润、还是其他规则筛选,不能把模型一句判断当成唯一依据。

一句话记住界面展示进度,后端保存状态与证据。

10动手任务:从算术图测到模拟交易流

先实现算术图,确认输入 3 输出 126,并记录每个节点的 State 变化。再用模拟行情和模拟账户拼接五角色流程。

至少测试:风控通过、风控拒绝、缩量重试、超过上限、人工拒绝、人工未回复、保存后恢复。验收标准是:未审批路径不能到执行;halt 不可绕过;重试有上限;日志能还原输入和输出;恢复不会重复订单。

全部测试使用模拟接口或只读数据,不要把流程验证与真实交易混在一起。

一句话记住先在模拟链路验证,再谈真实执行。

检验
检验一下

4 道小题

全部答对,这一课就算真正读懂了。答错了会告诉你为什么。

01State 的主要作用是什么?
02最大重试 2 次通常意味着什么?
03为什么 Checkpointer 不能单独保证订单只发一次?
04算术图从 n=3 开始,最终结果是多少?
知识卡

这一课,浓缩成一张卡

学完可以保存或分享给朋友。保存成图片的功能会在下一版加上。

AI+金融投资训练营 · LangGraph 核心五件套LangGraph 五件套怎样用于投研工作流?

用 State 传递契约,Node 做处理,Edge 和条件边控制路径,Checkpointer 保存可恢复进度。

  • 状态先定契约
  • 重试必须有限
  • 恢复要防重复订单
quant.jtxaionline.com
这一课的要点

记住这 5 句话

  1. 01开放式智能体适合路径不明的研究,固定工作流适合顺序、分支和权限已经明确的执行链路,两者可以组合。
  2. 02State 是共享数据契约,Node 是处理函数,Edge 连接步骤,Conditional Edge 根据状态路由。
  3. 03条件边要区分通过、可修复警告、不可修复拒绝和熔断;重试次数必须有明确口径和上限。
  4. 04Checkpointer 保存可恢复状态,但不自动保证外部订单只执行一次;审批、幂等和回报核对仍不可缺。
  5. 05先用不调用大模型的算术图验证编排,再用模拟行情和账户测试完整交易流程。
完成这一课

完成这一课

读完讲义、答对小题,这一课就算学完了。

  • 读完讲义
  • 通过随堂自测

实验数据AI+金融投资训练营教学样本。固定教学样本

固定教学样本只用于解释量化研究方法,不代表任何真实标的未来表现,也不构成投资建议。