01学完这一课,你能做到什么
学完这一课,你应该能:
- 判断一个任务适合开放式智能体、固定工作流,还是两者组合;
- 用 State、Node、Edge、Conditional Edge 和 Checkpointer 描述流程;
- 设计有限重试、人工审批、暂停恢复和任务隔离;
- 把行情、信号、风控和执行模块接成一条可审计链路;
- 用一个不调用大模型的算术图,验证状态更新和条件循环。
这五个词可以先这样记:State 是共享任务记录,Node 是处理步骤,Edge 是连接线,Conditional Edge 是按状态选路,Checkpointer 是保存进度的存档点。
一句话记住先定义状态和边界,再让节点协作。
02先判断需要多少自由度
开放式智能体适合路径还不明确的研究,例如解释、比较行业或补充公开资料。它会根据上下文决定下一步,灵活但路径和结果可能变化。
固定工作流适合顺序已经明确的任务,例如先取数据,再算信号,再做风控,最后审批执行。条件分支、重试上限和权限边界由程序控制,不只是写在提示词里。
两者可以组合:把稳定的交易链路放在外层,在研究节点内部调用智能体;也可以让外层智能体从多个经过验证的工作流中选择。盘前 9 点、收盘后 15:30 只是调度示例,真正执行还要检查交易日、数据是否更新以及任务是否重复。
开放式智能体
路径灵活,适合研究探索;结果和调用路径可能变化。
固定工作流
顺序、分支和边界明确,适合可审计流程。
一句话记住探索用自由度,执行用明确边界。
03先画出一条完整交易链
一个教学用的五角色流程是:
开始 → Charles 情报 → Joe 信号 → Chris 风控 → Human 审批 → Eason 执行 → 结束
Charles 查询新闻、财务和行情并形成观点;Joe 输出方向、价格和数量建议;Chris 复用风控引擎;Human 对具体订单授权;Eason 调用交易适配器。角色名只是职责,不代表每个节点都必须调用大模型。
如果账户现金只有约 802,而信号建议买入新标的,流程就应该停在资金检查或审批前,不能凭聊天猜账户状态。账户快照应来自真实接口,且只传入完成任务所需的最少信息。
没有下单回报时,要检查日志和接口状态。不能默认是配置问题,也不能为了测试随意转入资金或尝试真实交易。
- 1情报事实与观点
- 2信号方向、价格、数量
- 3风控资金与限额
- 4审批明确授权
- 5执行回报可核对
一句话记住信号通过,不等于账户允许执行。
04State 是共享的数据契约
State 可以理解为团队共同维护的结构化任务记录。常见字段包括:
stock_code、capital:证券和资金;investment_view:情报结论;signal:方向、价格和数量建议;risk_verdict:风控结果及理由;approved:人工授权结果;trade_result:执行回报;retry_count:已经发生的重试次数;logs/messages:审计记录。
每个字段都要定义类型、允许值、单位、时间戳和缺失含义。空值不能被误当成“已经通过”。节点通常返回局部更新字典,由框架按定义合并;不要依赖原地修改共享对象的副作用。
如果多个节点同时写入日志,应明确使用追加型 reducer(合并规则);如果多个节点都可能改订单金额,则要规定谁能覆盖、怎样冲突处理。Annotated 一类类型标注可以声明合并约定,但具体语法要以所用版本文档为准。
输入
证券、资金、任务标识。
判断
观点、信号、风控结果。
审计
审批、回报、日志和重试次数。
一句话记住字段先定契约,空值不能默认通过。
05Node 处理,Edge 连接
Node(节点)是一个读取 State、执行工作并返回更新的处理函数。它内部可以是 Python 计算、数据库查询、HTTP 调用、工具或智能体。简单的计算不需要为了“多 Agent”而强行调用大模型。
Edge(边)规定一个节点之后去哪里。START 是入口,END 是结束。线性流程适合没有分支的操作;图结构更适合表达分支、循环和状态。允许循环的图不是 DAG,DAG 特指有向无环图。
节点可复用已有行情读取、回测、RiskManager 和交易适配类,但接入前要核对输入、输出、数据时点和错误处理。导出的 Mermaid 图能展示编排结构,却不能代替运行日志和测试。
Node
做一件事,并返回 State 的局部更新。
Edge
规定下一步,或把状态交给路由函数。
一句话记住节点做事,边决定下一站。
06Conditional Edge 负责按状态选路
条件边先读取 State,再返回预先定义的目标节点或标签。例如:风控通过进入审批;只是数量超限则去缩量重试;不可修复的拒绝或则结束。
路由函数只负责决定方向。需要增加 retry_count 或更新订单时,用独立节点完成。这样每个动作都便于测试。
有限重试必须先定义含义。若“最大重试 2 次”指初次失败后还能再试 2 次,那么总尝试次数是 3 次。应测试 0、1、2 和超限边界,防止计数没有更新而无限循环。
halt 表示停止新增风险,不能回到 Joe 让模型改写理由绕过熔断;不可修复的 reject 应结束。只有明确可修复的 warning 或指定错误,才允许有限重试。
- 1通过进入审批
- 2可修复警告计数后有限重试
- 3拒绝结束流程
- 4熔断停止新增风险
一句话记住重试要有原因、计数和上限。
07Checkpointer 让流程能够恢复
Checkpointer(检查点保存器)会保存流程执行中的 State 快照,让中断后可以继续,也方便审计和查看历史。不同任务必须使用独立的 thread 标识,避免一个账户的状态误用于另一个任务。
内存保存适合演示,进程退出后未必保留;跨进程恢复要使用合适的持久化方案。但保存 State 不等于外部操作只执行一次:如果订单已经发出、回报还没保存,恢复时可能重复下单。因此交易节点还需要唯一订单编号、幂等检查和券商回报核对。
人工节点可以用 interrupt 暂停,展示证券、方向、数量、价格范围、风险结果和有效期,等待人明确批准或拒绝后 resume 恢复。没有回复不能视为批准;若审批后订单被改写或行情明显过期,应重新审批。
真实下单应放在明确授权后的独立节点,并结合幂等检查。interrupt 前的副作用也要谨慎,因为恢复可能从节点开始重新执行。
- 1运行写入 State
- 2保存记录 thread 快照
- 3中断等待人审批
- 4恢复核对版本与回报
- 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 道小题
全部答对,这一课就算真正读懂了。答错了会告诉你为什么。
这一课,浓缩成一张卡
学完可以保存或分享给朋友。保存成图片的功能会在下一版加上。
用 State 传递契约,Node 做处理,Edge 和条件边控制路径,Checkpointer 保存可恢复进度。
- 状态先定契约
- 重试必须有限
- 恢复要防重复订单
记住这 5 句话
- 01开放式智能体适合路径不明的研究,固定工作流适合顺序、分支和权限已经明确的执行链路,两者可以组合。
- 02State 是共享数据契约,Node 是处理函数,Edge 连接步骤,Conditional Edge 根据状态路由。
- 03条件边要区分通过、可修复警告、不可修复拒绝和熔断;重试次数必须有明确口径和上限。
- 04Checkpointer 保存可恢复状态,但不自动保证外部订单只执行一次;审批、幂等和回报核对仍不可缺。
- 05先用不调用大模型的算术图验证编排,再用模拟行情和账户测试完整交易流程。
完成这一课
读完讲义、答对小题,这一课就算学完了。
- 读完讲义
- 通过随堂自测
实验数据AI+金融投资训练营教学样本。固定教学样本
固定教学样本只用于解释量化研究方法,不代表任何真实标的未来表现,也不构成投资建议。