跳到主要内容

金融领域 Agent 的骨架选择 — 讨论汇总

这份文档是什么

这是一次从「Agent 的本质」一路推到「金融 Agent 该用什么骨架」的讨论汇总,写给 FinBayes 主控。读者不需要在场,本文自洽。

术语映射注(2026-06-07,ADR-025 + glossary:本文是这套方法论的原稿,沿用自创原词「双时间尺度 / 快循环 / 慢循环 / 数据契约」以保持论证连贯。owner 2026-06-07 拍板:叙述层 canonical 白话等价词 = 快慢两条线(双时间尺度)/ 即时应答线(快循环)/ 事后复盘线(慢循环)/ 输出要素规范(数据契约口语义)。新文档与 FinBayes 项目叙述层优先用白话词,引用本文时按此对照,两边不失联。另见本文 §5「三种范式各归各位」后的对齐批注。

行文遵循「实质而非表演」:结论先给、理由跟上,不堆信心标签、不画记分牌。其中有一处推断被当场证伪并改正,也照原样保留(见 §4 方法注记),因为这正是全篇要讲的那条纪律。


1. Agent 的本质:一个有目标的闭环

一次模型调用是一个函数:文字进、文字出,一次成型,不和世界发生第二次接触。无论它多强,边界就是「一次推理能算出来的东西」。

Agent 不是把这个函数变强,而是在它外面包一圈循环:

  1. 感知当前状态(从环境读数据)
  2. 基于状态决定下一个动作 —— 这一步才用到模型
  3. 动作改变世界、或改变自己对世界的认知(通过工具执行)
  4. 把新状态读回来,回到第 1 步
  5. 直到目标达成或放弃

核心就在第 4 步那根回头的箭头上:下一个动作取决于上一个动作的真实结果。 这根反馈线,就是 Agent 与「问答函数」的全部区别。少了它,是一串互相独立的反应;有了它,系统才能纠错、从失败里恢复、处理「一次算不完、必须边做边看」的任务。

模型、工具、数据、记忆都不是核心,而是被这个循环调度的零件:模型是做决定的策略(装进去的大脑),工具是手,数据 / 环境是眼睛兼真值源,记忆是循环带着走的状态。

压成一个式子:Agent = 模型 + 工具 + 状态 + 目标 + 闭环执行。 前三样是零件,后两样——目标给方向、闭环把零件接成一个会自我修正的活物——才是把一堆零件激活成 Agent 的东西。


2. 框架 vs 灵魂

框架是能画成框图、能替换的那一层:循环控制结构、状态与记忆、工具接口、感知 / 环境接口、终止与控制条件、以及放模型的那个插槽。它的定义性特征是可替换——模型能换、工具能换、循环能重写。由此得到一个容易被忽略的结论:模型不是灵魂,它是框架上一个可热插拔的器官。 换掉它,你换的是判断引擎,不是这个 Agent 的身份。

灵魂是把框架瞄准的那个东西。做个实验:两个框架逐字节相同的 Agent,还能差什么?能差的,是它追的目标、判断的标准、以及愿不愿意被结果真正修正。这点残差就是灵魂——目标给循环方向,判断标准决定「框架允许的所有动作里此刻哪个对」,对结果的诚实耦合决定它是真被现实修正还是假装看一眼。

一句话收口:Agent 的灵魂 = 对目标负责的闭环意志。 会推理、会调工具都只是能力;真正让它成为 Agent 的,是把一句模糊意图扛成持续行动、直到交付。

两种残缺正好是两个常见的坑:

  • 有框架没灵魂:循环在跑、工具在响,却不真追目标、不真被结果修正——一台把动作演得很像的空转机器。
  • 有灵魂没框架:有目标、有判断,却没有手脚和循环去兑现——就是那个被反复打磨、却始终只能回答一次的聪明答案。

3. 三种循环范式,分属不同层

范式出处它回答的问题所在层
ReActYao 等,ICLR 2023一次迭代怎么组织(想—做—观测交替)微观 / 单步节奏
Plan-and-SolveWang 等,ACL 2023决策怎么组织(先整体分解再执行)中观 / 决策结构
Ralph LoopGeoffrey Huntley,2025外层循环和跨迭代状态怎么管宏观 / 编排 + 记忆
  • ReAct:交替进行「Thought → Action → Observation」,每做一步把观测读回来再想下一步。推理帮规划、压幻觉,行动给推理喂真实数据。它是第 1 节那个主回路的标准写法。
  • Plan-and-Solve:先把任务拆成计划(子任务序列),再照计划执行。与 ReAct 正好对照——ReAct 走一步看一步,Plan-and-Solve 先谋后动。
  • Ralph Loop:把同一个提示词放进 while true 反复跑,每轮全新上下文,状态外置到文件,靠重复够多收敛。后来的变体在循环里加了个评估器(做完先验收,没通过带着教训再来)。

三条要点,写给主控避坑:

  1. 三者都是框架层实践,没有一个是灵魂。 它们回答的全是「身体怎么动」,不供给目标、判断标准或诚实校准。三个都实现得无可挑剔,仍可能得到一个追错目标的空壳。
  2. Ralph 是全身最笨的那块,不是灵魂。 它的 while true 不知道自己做没完——「持续到完成」里那个判据,全压在循环末端那个验证器上。让人想叫它「交付意志」的,不是循环,是验证器;而验证器恰恰是灵魂探进框架的那只手。
  3. 组合时少了一条边会出事。 「Goal → Plan → 执行 → Verify → Fix → Stop」里,验收失败不能只回执行层,还要能回 Plan 重规划。否则计划一旦过期,执行层会忠实地把错计划一遍遍做到位,Verify 一遍遍判失败——这就是「越跑越偏」的具体机制。
  4. 「假绿测试」是验证器层的「表演而非实质」。 写个永远通过的测试、把真检查 mock 掉、删掉那条红的——都是在表演验收。所以「诚实地用验证器」这一条始终是灵魂,框架替不了。

每个范式都有适用域:ReAct 的概念是地基(但字面的 Thought/Action/Observation 文本格式已被原生 function-calling 与扩展思考吸收);Plan-and-Solve 适合边界清楚的任务,环境一不确定就得带重规划;Ralph 妙在「笨」,适合能干净外置状态、容忍成本的长程自治,是暴力法不是通用默认。


4. 编码 Agent vs 通用 Agent:分界在验证器禀赋

真实系统没有一个是单一范式,全是完整组合。真正分开「编码 Agent」和「通用 Agent」的,不是用了哪几种 loop,是验证器从哪来。

  • 编码 Agent(Claude Code / Codex / Antigravity 这类)生在一个自带验证器的世界:编译器、类型检查、测试套件就是现成、便宜、骗不过去的对错裁判,程序要么跑要么崩。环境直接把灵魂里最难的那块——「对结果诚实耦合」——免费塞给了它。这才是它敢放长自治循环、且真能收敛的原因:那个 while true 有一个便宜、可信、骗不过去的停止条件。它们之间的差别只是「自治程度」:从监督式短绳的 ReAct(Claude Code 默认),到自动跑测试、放长绳的半自治(Codex),到 agent manager + 多 Agent + 浏览器验证的宏观编排(Antigravity)。
  • 通用 Agent(Openclaw / Hermes 这类)生在一个没有白送验证器的世界:「这份分析好不好 / 这个方案对不对」没有编译器。于是它的验证器只能是人在环里、软的评判器、或干脆缺位。它还更依赖 Memory / State——因为开放世界里动作不可逆、当前状态不能廉价重新观测,只能靠记忆背着「我做了什么、结果如何」。

一句话:编码与通用之分,本质是「验证器是白送还是自建」之分。 同一副骨架,编码 Agent 的验证器是环境捐的,通用 Agent 得自己长。

方法注记(关于 Hermes,一处自我纠错): 讨论中曾断言「Hermes 那种持久演化循环就是 Ralph」。这是从一行标签外推的臆测,随后核对其公开 README 被证伪:Hermes(Nous Research)是把上下文往前带的(跨会话检索 + 摘要、自主造 skill、skills 在使用中自我改进),是一个学习循环——目的是让自己变好,不是把单个任务做完;而 Ralph 的命门恰恰是每轮重置上下文、靠暴力重跑交付。两者在最要命的轴上相反。教训有二:其一,没验证的类比不能升格成证据;其二,这台「我有没有变强」的自评依然撞在通用 Agent 的验证器问题上——它也没有编译器。(依据是 README 级,非代码级。)


5. 金融 Agent 应选的骨架:双时间尺度

不要去货架上三选一,而要从金融的两条硬约束把骨架推出来。

两条硬约束:

  1. 真验证器迟到且带噪。 一笔判断对不对,要等市场落定才知道,而且短期信号一身噪声(好决策能亏、坏决策能赢)。
  2. 动作不可逆、且必须可审计。 真金白银的仓位不能像代码那样回滚;每条判断还必须能被监管 / 事后重建:用了什么证据、怎么推的、置信多少。

第一条直接否决了 Ralph 骨架:金融的真验证器在内层根本拿不到(它要几天 / 几季度后才到),你也不能拿活市场反复试。「单循环 + 内层真验收」这条路在金融里走不通。

于是骨架被逼成两个循环:

慢循环(市场落定的时间尺度)= 真验证器 / 校准:
每条已落地的判断:
已实现结果 ──┐
判断日志 ──┼─→ 校准打分(预测概率准不准,词条见下方)
└─→ 贝叶斯更新:先验、置信映射、证据权重

↓ 喂回快循环

快循环(每次判断)= 判断生产 + 代理验证器:
问题 / 目标
→ Plan(可重规划,证据一变就改)
→ ReAct 取证–推理循环(每条结论必须挂证据)
→ 代理验收门:对抗性反驳 + 证据充分性 + 置信校准 + 可溯源
→ 产出:带显式置信 + 完整证据链 + 一条可监测失效条件的「判断」(不是裁决)
→ 全程写进结构化、可审计的判断日志(既喂慢循环,也做合规留痕)

词条(外部标准词,给查阅指引):Brier 分数 / 对数损失(log-loss)——给「带概率的预测」打分的标准指标,越自信又越错、罚得越重;可靠性曲线——把「说有 70% 把握」的那批判断拎出来,看是否真有约 70% 兑现。

三种范式各归各位:

  • ReAct:留,当快循环内核——金融不确定,每步推理都得挂在取来的证据上压幻觉。现成参照是 martin-FinClaw:一个「统一 ReAct 主回路 + 宽数据工具(基本面 / 历史 / 财报 / 宏观 / 新闻)」的金融快循环,推理与取数在同一回路里交织。但它的外层只是日历驱动的心跳(每约 30 分钟扫一遍),不是判断生命周期驱动——慢循环这块,金融 Agent 应当比它更进一步。
  • Plan-and-Solve:留,但作为 ReAct 主回路内 LLM 可选调用的规划工具(不是与 ReAct 并列的独立一层)——市场非平稳、静态计划过期得快,所以「Verify→重规划」由主回路 LLM 基于观测自主完成,不另起 ReAct 之外的 planner 引擎(参 Claude Code 的 EnterPlanMode / WorkflowTool、Opencode 的 plan/build 双 agent)。
  • Ralph。只留它一样东西——「不过显式验收门不准停」这条纪律;但金融的验收门是代理门——工程上落成 LLM 可主动调的自检 + 不阻断 audit(不是 ReAct 之外强制拦截每条输出的 blocking 墙;高风险判断的把关走用户主权两步确认),真正的完成判据搬去慢循环,不在快循环。

两个验证器,正好接住前面两条线:

  • 快循环里的代理验证器:你拿不到真结果,只能用代理——对抗性自我反驳、证据充分性、把嘴上的置信和该有的置信对齐、每条断言可溯源。这一层就是生产时的反「假绿测试」:挡住那段「自信、漂亮、却没证据垫底」的判断。
  • 慢循环里的真验证器:就是 判断跟进 + 校准——把过去每条判断对着已实现结果打分,贝叶斯地把先验和置信映射拧准。它迟到,所以只能是慢的外层循环。FinBayes 名字里的 Bayes,落地就落在这。

取证与推理不分家: 快循环里的 ReAct 是「取一步证、推一步理」交织着走的——绝不能先把证据一次性取完、再交给一个够不着工具的「思考阶段」一锤定音。那堵墙会把接地深度钉死在思考开始前取到的那点证据上:思考途中发现还缺一个数(一份财报、一段历史、另一个源),已经回不去取了。一次成型的重综合是「答案函数」的化石、不是 Agent 的循环——它和下面「可审计要显式循环」是同一堵墙的两面:一面砸接地深度,一面砸可重建性。

失效条件是慢循环的触发钩: 每条判断产出时挂的那条可监测失效条件,不是输出花边,是慢循环赖以回头的承重钩——它让慢循环既能在市场落定后批量给这条判断打分,也能在失效条件被触及的当下就事件驱动地回来重验、不必死等日历。没有这条钩,慢循环无处可盯。

两个一等公民: 记忆 / 状态与可审计性不是事后补的装饰。每条判断 + 证据 + 置信 + (后来的)已实现结果,都要进结构化、可查询、可重建的存储——这份存储同时是慢循环的校准底料和合规审计轨。骨架要让每一步都能被事后重建,这也是为什么不能用一个大模型一次成型:要可审计,就得要这个显式、可检视的循环。

延迟 / 成本: 别把代理验收门均匀铺在每次调用上。低风险取数走单步 ReAct,高风险持仓判断才上完整的「Plan → ReAct → 对抗验收」。骨架按风险弹性升降档,否则延迟是自己堆上去的。


6. 两条压舱话

  1. 骨架是框架,不是灵魂。 这套双循环画得再漂亮,只要代理验证器只会盖橡皮章、校准循环专挑赢的算,它照样是空壳。难的永远是那两个验证器诚不诚实,不是循环图画得对不对。
  2. 慢循环是把「函数」变成「Agent」的那一步。 一个只有快循环、产出判断却从不被结果回头打分的系统,本质还是个会自信发言的函数。快循环的零件大概率已经有了;真正的分水岭是慢循环到没到位、咬没咬住快循环。

一句话: 金融 Agent 的骨架不是 Ralph,是「双时间尺度」——快循环(ReAct + 可重规划 + 代理验收门)套在慢循环(滞后的真验证器 = 判断跟进 + 校准 / 贝叶斯)里;全部难度压在这两个验证器诚不诚实上,不在 loop 怎么搭。


来源与参考