Lecture 06

大语言模型与金融智能体(LLMs and AI Agents in Finance)

学完本讲,你将能利用开源工具独立设计并实现一个金融垂直领域的 AI Agent——从需求分析、架构设计,到工具与数据接入、框架实现、评估与合规考量。

Financial Machine Learning · Lecture 06

本讲地图

LLM 能力与局限  →  Agent 认知架构与 Harness  →  金融垂直 Agent 实战  →  评估、治理与研究前沿
   (Part 1)              (Part 2)                    (Part 3)                  (Part 4)
章节 内容
Part 1 大语言模型能力底座精要:能力边界、提示词、RAG、函数调用、LLM 的计量经济学框架
Part 2 Agent 认知架构、Harness 工程与设计方法:七子系统、协作模式、协议、框架选型、
效率与可验证性
Part 3 金融垂直领域 AI Agent 实战:需求与数据生态、论文案例回访、四件套落地、
DeepSeek Harness 专章
Part 4 评估、治理与学术前沿:评测基准、风控合规、顶刊文献与研究展望
Financial Machine Learning · Lecture 06

预期学习成果

核心学习成果:利用开源工具独立设计并实现一个金融垂直领域 AI Agent
(需求分析 → 架构设计 → 工具与数据接入 → 框架实现 → 评估与合规考量)。

层级 学完后你能……
识记—理解 解释 LLM 的核心能力边界与金融应用方式
理解—应用 描述 Agent 认知架构、Harness 七子系统、设计维度与主流开源工具(框架/运行时)
分析—评价—创造 独立设计并实现一个金融垂直领域 AI Agent
Financial Machine Learning · Lecture 06

主轴案例简介:财报智能解读与投研辅助 Agent

  • 场景:输入股票代码+自然语言问题 → 输出一份带引用、可审计、无收益承诺的财报分析报告
  • 八节点流水线(全程贯穿本讲知识点):
数据接口层  知识库层     工具库层       Agent 运行时(编排+护栏)        输出
 AkShare ─→ 财报RAG ─→ 指标计算 ─→ 问答 ─→ 研报要点生成 ─→ 合规检查 ─→ 人在环确认 ─→ Markdown 报告
 (抓取)     (解析)     (纯函数)   (生成)        (生成)        (规则+自检)    (interrupt)
本讲知识点 案例落点
提示词、结构化输出 每个节点的 system prompt 与输出 schema
RAG 知识库 财报文本向量检索问答
函数调用/工具库 指标计算、合规规则、格式化
多 Agent 协作 数据/解析/分析/合规多角色分工
记忆与状态 会话中保留"已读报表、已算指标"
评估、熔断、可观测、人在环 Part 3 评估页、故障演示、审计日志
Financial Machine Learning · Lecture 06

Part 1 · 大语言模型能力底座精要

  • Transformer 直觉(要点回顾)+ Scaling 与后训练
  • 上下文、多模态、模型时点快照(2026-09)
  • 按任务选模型与"最低校验配置"
  • 提示词工程、结构化输出、RAG、函数调用(四大工程接口)
  • LLM 的计量经济学框架:预测 vs 估计、训练泄漏与前视偏差、测量误差与验证样本纠偏
  • 场景与边界、金融专用模型辨析
  • 要点回顾

来源:Vaswani et al. 2017 arXiv:1706.03762 等

Financial Machine Learning · Lecture 06

Transformer 直觉

  • 注意力(Attention):每个词元(token)按相关性加权"看"上下文中的其他词元 → 长程依赖直接建模
  • 位置编码:给序列注入顺序信息;残差+层归一化:让深层网络可训练
  • 预训练—微调范式:海量文本自监督预训练 → 下游任务微调/提示适配
  • 金融意义:整份财报/年报的长上下文读取成为可能

来源:Vaswani et al., "Attention Is All You Need", NeurIPS 2017, arXiv:1706.03762(检索 2026-09-28)

Financial Machine Learning · Lecture 06

Scaling:规模带来能力

  • 神经缩放定律:模型规模、数据量、算力与损失呈幂律关系 → "大力出奇迹"有据可依
  • Chinchilla(计算最优):训练数据量应与参数规模同比放大,而非只堆参数
  • "涌现能力"(emergent abilities):小模型没有、大模型突现的复杂行为——此为实践观察,机制仍在研究中
  • 金融推论:通用底座达到一定规模后,领域能力更多来自数据接入与工程结构(本讲主题),而非无脑微调

来源:Kaplan et al. 2020 arXiv:2001.08361;Hoffmann et al. 2022(Chinchilla)arXiv:2203.15556(检索 2026-09-28)

Financial Machine Learning · Lecture 06

后训练流水线:从"会读"到"会推理"

预训练(语言建模) → SFT(指令微调) → RLHF/DPO(与人类偏好对齐) → 推理模型(长链思考+RL)
  • SFT:教会"按指令回答";RLHF/DPO:教会"有用、诚实、无害"
  • 推理模型(Reasoning Models):训练中强化"先思考再作答"的长链推理(如 OpenAI o 系列、DeepSeek-R1 公开技术报告)
  • 工程含义:Agent 依赖的函数调用、结构化输出、多步规划大多是后训练阶段获得/强化的能力

来源:Ouyang et al. 2022 arXiv:2203.02155(InstructGPT);DeepSeek-R1, arXiv:2501.12948(检索 2026-09-28)

Financial Machine Learning · Lecture 06

上下文与多模态:金融需要什么

  • 长上下文:百万级上下文已是 2026 主流配置(如 GLM-5.2 支持 1M lossless context,docs.z.ai)→ 整份年报、招股书可整读
  • 原生多模态:文本+图表+K 线+扫描件统一理解(如 DeepSeek V4.1 Flash 原生多模态)→ 财报图表问答、OCR 场景
  • 工程注意:长上下文≠无限准确;关键数字仍建议检索/工具校验(对应"最低校验配置")

来源:Z.ai 官方说明(docs.z.ai/release-notes,检索 2026-09-28);DeepSeek 官方发布(api-docs.deepseek.com,检索 2026-09-28)

Financial Machine Learning · Lecture 06

开源模型vs闭源模型(2026-09)

快照仅用于选型背景;引用时以各厂商官方发布为准。撰写于 2026-09-28,使用前请复核。

开源模型 发布时间 一句话要点
DeepSeek V4.1 Flash 2026-09-10 原生多模态,更强更快更普惠(deepseek.com 官方 news)
Qwen3.5-397B-A17B 2026-02-17 开源旗舰 397B 总参/17B 激活(Qwen 官方)
GLM-5.3(+5.3-Flash) 2026-08-18/26 编码/智能体能力跃升;Flash 320B/18B 激活(docs.z.ai)
Kimi K3 2026-07-17 2.8T 参数,当时全球最大开源权重(Moonshot 官方)
Llama 5 2026-04-08 Apache 2.0,旗舰 600B+ 级、2M 上下文(Meta)
Mistral Small 4 2026-03-16 119B/6.5B 激活 MoE,256K 上下文(vLLM 模型卡)
闭源对照 发布时间 一句话要点
OpenAI GPT-6 Astra 2026-09-03 旗舰多模态(openai.com Safety Overview)
Anthropic Claude Opus 5.5 2026-09-22 旗舰长文档/商用(官方发布)
Google Gemini 3.8 Flash 2026-09-03 轻量旗舰档(blog.google 官方)

结论:2026 年开源与闭源差距持续缩小;Agent 工程的关键不再是"哪个模型最强",而是任务匹配+工程结构。

Financial Machine Learning · Lecture 06

按任务选模型

任务类型 首选方向 理由(基于厂商公开能力说明,非评测排名)
A 写论文/研报/长文档 长上下文+审慎写作档(如 Claude/Llama 系) 年报/条款归纳、论证链检查
B 实证研究编码 代码与工具调用均衡档(如 GPT 系) 清洗→回归→回测全流程
C 多模态材料 原生多模态档(如 Gemini/GPT/DeepSeek V4.1) 图表+文字+表格一体理解
D Agent 工程 函数调用/结构化输出稳定档 + 成本档 工具调用可靠性优先,批量用低成本模型
  • 预算敏感/批处理:DeepSeek 等性价比档(配合严格测试)
  • 关键结论复核:交叉模型验证(见下页"最低校验配置")
Financial Machine Learning · Lecture 06

推荐组合与"最低校验配置"

推荐组合(示例):主模型(工程与写作)+ 长文档/合规档(对外文本)+ 批量低成本档(清洗/抽取流水线)

关键结论的"最低校验配置"——金融场景不可省:

  1. 两模型交叉验证:同一结论用不同模型复述核对
  2. 数据/代码单元测试:边界条件、缺失值、异常值
  3. 规则约束:禁止无来源数字、禁止确定性收益承诺
  4. 人工复核:对外发布、投资建议、合规内容必做

原则:把模型当研究助理/工程助理,不当决策者;任何数字可溯源、任何结果可复现、任何对外材料可审计。

Financial Machine Learning · Lecture 06

提示词工程 1:目标与约束(差/好对照)

原理:先讲清"要解决什么问题、什么样算做得好",减少跑偏与幻觉。

❌ 差:"分析美团的财报。"

✅ 好:
目标:为投研讨论准备汇报要点
成功标准:关键数字可验证、口径说明、同业对比、风险点;不确定处标"需核实"
任务:作为互联网行业分析师,分析 2023Q4 业绩,
     1) 营收增长驱动(分业务) 2) 利润率变化原因 3) 现金流与资本开支
     4) 竞争格局  5) 与同业对比(口径差异说明)
输出要求:结论摘要 5 条→数据表(指标/本期/同比/口径/出处)→风险与待验证清单
约束:不编造历史收益结论;不确定处必须标注
Financial Machine Learning · Lecture 06

提示词工程 2:少样本、角色与防跑偏模板

  • Few-shot + 标签定义:先定口径(利好/利空/中性/信息不足),允许"信息不足"降低误判
  • 金融角色提示:先问澄清问题(标的时间/市场/用途)再作答;风险内容避免确定性措辞
  • 防跑偏模板(通用):回答前输出 ①任务理解 ②执行步骤 ③需要补充的数据/假设;回答后输出 ④关键假设与口径 ⑤待核实清单 ⑥投资决策风险提示
自检清单(输出末尾强制):
- 是否有无来源数字?有则标"需核实"
- 是否把相关性当因果?如有,给出反例或替代解释
- 结论是否可复现(数据/参数/窗口)?
Financial Machine Learning · Lecture 06

结构化输出:给模型装上"契约"

  • JSON Schema 约束:规定字段、类型、必填项;用 schema 校验输出,不合格重试
  • 函数级输出(constrained decoding):生成内容直接映射为函数参数(与「函数调用」衔接)
  • 财报指标示例 schema:
{"指标": "ROE", "数值": 0.152, "单位": "比率", "口径": "归母净利润/平均净资产", "来源": "2025年报-资产负债表"}
  • 工程要点:结构化输出是 RAG 引用、审计日志、合规检查的"地基"——输出不可解析,后面一切免谈
Financial Machine Learning · Lecture 06

Retrieval‑Augmented Generation (Agent 的"外接记忆")

  • 为什么金融必须 RAG:模型知识有截止日期;私有/最新语料(财报、公告、政策)不在参数里;输出要可追溯引用
  • 四步流程:
语料分块 → 向量化(embedding)→ 相似检索(top-k)→ 拼入上下文生成(带引用)

来源:Lewis et al. 2020 arXiv:2005.11401(RAG 原始工作,检索 2026-09-28)

Financial Machine Learning · Lecture 06

函数调用(Function Calling):从"说话"到"做事"

tools = [{
  "type": "function",
  "function": {
    "name": "calc_roe",                          # 工具名
    "description": "根据净利润与平均净资产计算 ROE",
    "parameters": {"type": "object", "properties": {
        "net_profit": {"type": "number", "description": "归母净利润"},
        "avg_equity": {"type": "number", "description": "平均净资产"}},
      "required": ["net_profit", "avg_equity"]}}
}]
# 模型返回 tool_calls → 你的代码执行真实函数 → 结果回传 → 模型继续
  • 模型不执行函数,只负责"决定调用哪个工具、填什么参数"——可审计、可拦截
  • 这是 Agent 的技术前奏:「函数调用」之后,工具、循环、多步执行就构成了 Harness
  • 来源:OpenAI/Anthropic 函数调用文档(撰写当日复核 API 细节;检索 2026-09-28)
Financial Machine Learning · Lecture 06

课堂小练 1:改写一个金融提示词

任务:把下面的"差"提示词改写成"好"提示词(用本页列出的要素:目标+成功标准/约束/结构化输出/防幻觉条款)。

❌ "分析宁德时代的财报。"

评价要点(对照检查):①任务与受众明确 ②成功标准可验证 ③输出结构指定 ④禁无来源数字/收益承诺 ⑤不确定处标注。

Financial Machine Learning · Lecture 06

LLM 的计量经济学框架:为什么"能用"不等于"结论有效"

来源:Jens Ludwig, Sendhil Mullainathan & Ashesh Rambachan, "Large Language Models: An Applied Econometric Framework", Annual Review of Economics 18: 283–316(2026);arXiv:2412.07031。JEL: C10, C52。

问题:LLM 让处理文本变得极便宜——用财报电话会预测股价、度量社交媒体极化、从旧报纸回溯消费者情绪、廉价模拟问卷。但 “能把LLM输出接进流程"与"结论有效”是两码事。

为什么它抗拒传统统计分析:参数十亿计、训练数据不公开、训练算法无法形式化——作者称之为 “非凡的工程成就,却没有我们惯常的统计基础”。

Financial Machine Learning · Lecture 06

对策:把 LLM 当黑箱,问"它必须满足什么条件"

对策:把 LLM 当黑箱,转而回答——它必须满足什么条件,实证使用才有效(结论不随架构迭代而失效)。

应用 你在做什么 必须满足
预测问题 用文本预测结果(如用财报电话会预测股价) 无训练泄漏(见该节)
估计问题 用文本度量经济概念再估下游参数 必须有验证样本(见该节)
Financial Machine Learning · Lecture 06

LLM 其实是两个算法:一个抽象,管住三类不确定性

定义(作者口径):LLM 是从训练数据集 到字符串间映射的映射; 是它在 上的文本生成器。由此 LLM 实际是两个算法:

算法 是什么 谁在控制
训练算法 拿数据集 学出映射 厂商(研究者看不见)
文本生成器 训练算法的产物,用户交互的对象 研究者+厂商

这个框架把三类设计选择全部装进来了:

选择 归属
提示词策略(不同策略=文本生成器的不同设定) 研究者
温度、top-(推理模型常不让用户调→固有随机性无法消除) 厂商+研究者
推理模型"思维 token";结构化输出后处理(可能不遵守) 厂商/研究者

关键含义: 涵盖预训练+后训练全部阶段的字符串——"训练数据"不只是预训练语料。

Financial Machine Learning · Lecture 06

把"LLM 不确定性"拆成三层——本讲"最低校验配置"的理论依据

把"LLM 不确定性"拆成三层——本讲"最低校验配置"的理论依据

层 不确定性来源 研究者可控? 本讲落点
模型内部 黑箱机制、思维 token ✗ 外部验证兜底(见「验证样本的两个用途」)
训练数据 不公开;预训练+SFT+RLHF+RLVR 全阶段 ✗ 训练泄漏(见该节)
生成配置 提示词、温度、top- ✓ 部分 提示词与校验(见提示词工程与最低校验配置)
Financial Machine Learning · Lecture 06

三层不确定性(二):三条推论

三条推论:

  1. 提示词不是"润色"而是"设定":换提示词=换一个文本生成器——「提示词工程」的"差/好提示词"对照,在计量上是两个不同设定
  2. 随机性可能不可消除:推理模型常不让调温度——可复现性靠固定版本+记录配置,不是靠随机种子
  3. 厂商侧可不打招呼就改:同一提示词不同月份结果不同而无公开变更公告——这是模型快照与最低校验配置的计量学理由
Financial Machine Learning · Lecture 06

基准测试给不了你答案:为什么"榜单高分"不能担保你的任务

作者的判断:现有的评测方法对"造更好的模型"极其有效,但对"某个 LLM 在你的新任务上会表现如何"几乎没有指导意义。

两个理由:

  1. 基准的极限:LLM 在相似任务上表现波动很大;没有一个模型在所有基准上完美;错误模式常常出人意料
  2. "世界模型"之问:模型在基准上的好成绩,究竟来自可迁移的能力,还是对训练语料的记忆?——这一问直接引出训练泄漏一节
Financial Machine Learning · Lecture 06

基准局限对金融研究的三条含义

对金融研究的三条含义:

  • 别拿榜单当验收:金融任务(财报解读、情绪判定、事件抽取)几乎不在主流榜单里,必须自建任务级验证(本课的评估集、Part 4 的金融基准都基于此)
  • "能力强"是任务相关的:同一模型换任务,误差结构会变——所以下文的测量误差必须在自己的数据上测
  • 可复现性优先:记录模型版本与提示词是最低要求(模型快照与按任务选模型)
Financial Machine Learning · Lecture 06

论文的两个"落地例子":一个法案,一个金融新闻头条

例 1:国会法案 例 2:金融新闻头条(与主轴案例同源)
文本 法案描述 标题:"BNY Mellon Q1 EPS $0.94 Misses…"
结果 法案是否通过本院 发布后某窗口的已实现收益
协变量 提案人党派、投票分数 公司历史基本面
经济概念 法案政策主题 该标题对公司是正面/负面/中性

三个记号(本讲后续都用):=若资源无限、你自己逐条精读时的度量程序;=你真正想要的经济概念;=LLM 给的替代度量或预测。

关键提醒:="这条新闻是正面还是负面"——看似简单、实则口径依赖(谁定义正面?按什么窗口?)。口径写不清,后面的回归系数就没有意义。

Financial Machine Learning · Lecture 06

两类问题一张图:预测 vs 估计

                        你的研究属于哪一类?
                                │
          ┌─────────────────────┴─────────────────────┐
          ▼                                           ▼
 ① 预测 Prediction                               ② 估计 Estimation
   文本 r → 预测结果 Y_r                            文本 → 度量概念 V_r → 估参数
   例:财报电话会 → 股价                             例:标题 → 情绪 → 回归收益
   ✅ 唯一条件:无训练泄漏                           ✅ 必须有:验证样本
   ❌ 不满足:样本平均损失低估真实误差                ❌ 不满足:系数量级/显著性
      ——"回测很准"其实是记住了历史                     甚至**符号**都可能错
Financial Machine Learning · Lecture 06

为什么必须分清预测与估计

预测问题 估计问题
交付什么 一个预测 一个下游参数
主要威胁 训练泄漏——模型见过你的测试样本 测量误差——LLM 标注 ≠ 专家标注
解法 设计上机械排除 小验证样本+纠偏公式(见该节)
金融典型 用新闻预测收益、用电话会预测盈余 造情绪/不确定性/相似度指标再回归

本课定位:"评估集+LLM-as-Judge"属预测侧评测;Part 4"防泄漏/walk-forward"与本节同源。而估计问题在金融实证里更常见("用 LLM 造指标再回归"),本课此前未展开——下文补齐。

Financial Machine Learning · Lecture 06

预测问题(一):训练泄漏=一种遗漏变量偏误

唯一条件:无训练泄漏——研究者样本与 LLM 训练数据不得重叠。

作者把它写成"遗漏变量偏误":泄漏项衡量的是——

"得知某条文本被你抽进了样本"这件事,会多大程度更新你对'它是否在 LLM 训练数据里'的信念?

当样本内的文本更可能出现在训练数据中、且模型恰在这些文本上表现好时,偏误项为正 →样本平均损失高估了真实预测能力。

含义:"不知道训练数据里有什么"本身就是偏误来源——与测试集看着是否公平无关。

Financial Machine Learning · Lecture 06

训练泄漏的证据:经济数据集同样在训练语料里

论文的证据(不止计算机领域,经济数据同样中招):

  • 国会法案(1973–2016,抽 10,000 条;仅 7.4% 过众议院、6.0% 过参议院):GPT-4o 仅凭法案描述预测通过结果,众议院 91.2%、参议院 92.5% 正确——对"策略博弈决定结果"的任务,这个准确率高得可疑
  • 记忆检验:让模型只根据描述的前半段续写后半段——344 条法案被逐字复现,说明不只是"见过",而是背下来了
  • 注意:"完美复现"不是泄漏的必要条件(模型可不背诵而获益),但是有说服力的证据
Financial Machine Learning · Lecture 06

预测问题(二):金融里的泄漏就是"前视偏差"

场景:用未来的金融新闻头条预测股票收益。
错误做法:拿 2024 年头条做评估,却用训练数据覆盖到 2025 年的模型——泄漏项几乎必然为正:你和厂商都"看过"2024 年的新闻,任何"预测成功"都可能是背出来的。

正确做法(按设计机械排除):用开源、权重固定公开发布的模型(Llama/BLOOM/OLMo),或训练数据带时间戳的模型;评估样本只取发布晚于模型发布/截止日 的文档 → 机理上不可能进入训练集。

为什么闭源模型做不到:训练数据不公开且可能被持续微调;把测试数据发给闭源 API 本身有风险(可能进入后续微调);有研究估计数百个基准可能已通过 API 泄漏、并质疑其公开"知识截止日"是否可信;最值得警惕:同一提示词提交 GPT-4o 结果逐月变化而无公开变更公告。

Financial Machine Learning · Lecture 06

零泄漏的三种可信情形与一条否证

三种可信的"零泄漏"情形:① 预测未来文档(用早于该日期的权重);② 预测从未公开的保密文档;③ 从已知完整语料中随机抽样。

⚠️ 重要否证:提示词补救无效——"请忽略日期 之后的信息"这类指令不是泄漏的可靠解法。

Financial Machine Learning · Lecture 06

估计问题:测量误差会改变系数的量级、显著性、甚至符号

插值(plug-in)估计的强假设:LLM 必须处处复现既有度量 ——即"无测量误差"。作者说:在当前的证据下,这个假设很难辩护。

偏误长什么样(线性回归,命题 3):记 LLM 误差

  • 经济概念作因变量时:——偏误就是"LLM 误差对协变量的最优线性预测"
  • 经济概念作自变量时:偏误形式更复杂(衰减+误差与残差相关)
  • 关键警告:"模型很准"不能担保这两个偏误——要紧的是误差在你的回归里是否与经济变量相关
Financial Machine Learning · Lecture 06

估计问题(二):金融头条实测——换模型或提示词,估计就变

2019 年、6,000 只股票的新闻头条;5 个模型(GPT-3.5-Turbo/4o/4o-mini/5-mini/5-nano)× 9 种提示词。
发布后 1/5/10 日已实现收益对有正/负面标签回归,控制报告量级与前滞收益(标准误按日期与公司聚类)。
→ 结论:仅换模型或提示词,估计的方向与量级就明显不同,且哪两种提示策略更一致没有稳定规律。

Financial Machine Learning · Lecture 06

解法:一个小验证样本 + 两次回归,就能纠偏

解法:一个小验证样本 + 两次回归,就能纠偏

思路(借自老计量经济学:Bound & Krueger 1991;Bound et al. 1994):在随机抽取的一小部分文本上,用原度量程序 收集真值 (比如你自己精读并标注)。

  • 验证样本:可观察
  • 主样本:只能观察

纠偏公式(经济概念作因变量):

实现只要两步:① 主样本: 对 回归 → ;② 验证样本:误差对 回归 → ;③ 相减(推断用 bootstrap)。

Financial Machine Learning · Lecture 06

验证样本的两个用途与作者的关键结论

用途一 · 选型:对每个"模型 × 提示词"组合估计偏误 ,挑偏误最小的那个——这就把提示词工程从"手艺"变成可优化的对象。
用途二 · 纠偏:把 修正为 。

作者的结论(值得逐条记):

  1. 纠偏估计量相合且渐近正态
  2. LLM 输出是"放大"既有度量,而非"替代"
  3. 验证样本只需 125–250 条即可在偏误与覆盖率上获得实质改善
  4. 纠偏后的估计可能比"只用验证样本"更精确、标准误更小
  5. 验证样本大小是设计选择——像抽样调查定样本量那样权衡成本与精度

对金融研究的直接含义:用 LLM 造情绪/不确定性指标时,不要只报"与人工标注一致率";应当留出验证样本,报纠偏后的系数与区间。

Financial Machine Learning · Lecture 06

两条"看似可辩护、实则不行"的路线

❌ 路线一:宣称"输出没有误差"从而正当地插值——很难辩护:既要解释为何 LLM 在你任务上精确复现概念,又要解释为何它在基准上并不完美、那些脆弱性证据为何不适用于你。

❌ 路线二:给误差写个统计模型,再照搬测量误差文献的解法
常见设想是"不同提示策略的误差相互独立"→ 于是想用一个提示词给另一个提示词做工具变量。但:

  • 同一模型的不同提示策略之间,标签必然相关
  • 不同模型之间训练数据大幅重叠,故跨模型标签也相关
  • "我们的测量误差框架本不是为这种场景设计的"——测量来自一个行为未被完全理解的算法,且作用于一个我们观测不到的量
Financial Machine Learning · Lecture 06

陷阱三:把"真值"定义成 LLM 的输出

⚠️ 陷阱三:把"真值"定义成"LLM 的输出本身"
当概念过于主观时,有人干脆把研究对象定义为"GPT-4o 用某提示词产出的东西"——这样插值估计按定义就有效。但:换提示词要不要再发一篇?GPT-6 出来要不要重做所有用 GPT-5 的论文? 若 60% 的"模型×提示词"组合给正相关、40% 给负相关,我们学到了什么?

作者态度:我们关心的是底层经济概念,不是 LLM 的输出。面对歧义应承认并从多角度探测,而非把某一种操作化奉为正统。实践答案很清楚:花力气收集一个小验证样本。

Financial Machine Learning · Lecture 06

两种"新用途",其实还是估计问题:人类受试模拟 与 假设生成

① 人类受试模拟(in-silico subjects):把文本 重解释为实验设计或问卷, 为真人平均反应;用 LLM 反应替代 → 这正是一个估计问题:

  • 因此要求 "无测量误差"——LLM 必须复现真人在你的实验/问卷上的行为
  • 也要求 "无训练泄漏"——已发表的实验很可能就在训练语料里,所以真问题是:LLM 能否模拟"全新的"实验设计,而不只是复述记住的结果
  • 反例不少:模拟心理学实验产出更多假显著结果;民意调查上无法准确复现真人回答;经济推理任务上对提示词敏感
  • 实践修正:至少收集一部分真人反应——"in-silico 受试者是放大真人,而不是取代真人"
Financial Machine Learning · Lecture 06

新用途(二):假设生成与金融落点

② 假设生成:用 LLM 提出研究假设(建议工具变量、生成可解释假设等)——仍落在框架内,同样需要验证,而非"看着有新意就采信"。

金融落点:用 LLM 模拟储户挤兑、投资者反应、通胀预期(本讲 Part 4 的顶刊文献正是这类研究)——它们全部属于估计问题,因此全部需要验证样本:至少一部分真人/真实市场反应。

Financial Machine Learning · Lecture 06

作者的实证研究清单:四步自查(可直接作为作业与论文的检查表)

# 步骤 具体要写清什么
1 先判定问题类型 是预测(用文本预测 、评估样本平均损失)还是估计(度量概念 、估下游参数)?
2 预测:确保无训练泄漏 三者须明确:①目标总体?②抽样程序?③它与可能的训练语料什么关系?
3 估计问题:收集验证样本 随机抽一部分文本,用原度量程序 收集 ;用它选型并纠偏
4 报告纪律 报纠偏后系数与区间;说明模型版本、提示词、验证样本大小
Financial Machine Learning · Lecture 06

模型选择建议:作者明确反对依赖闭源模型

作者对模型选择的明确建议(与直觉相反,务必讲给金融学生):

"研究者应避免依赖闭源模型(OpenAI 的 GPT 系、Anthropic 的 Claude 系)"——因为其训练数据不公开、且可能被持续更新。
首选:开源+权重公开(或训练数据有文档)的模型,并配合按设计排除训练数据的评估样本。

与本课的关系:本页 4 步是「最低校验配置」与「评估集+LLM-as-Judge」的计量学版本——它回答为什么必须这么做与偏误怎么算。

Financial Machine Learning · Lecture 06

金融用武之地与能力边界

四大场景:金融分析(财报/研报/预测)|智能助手(投顾对话/政策解读)|数据处理(清洗/标注/ETL)|学术研究(文本测度/假设生成)

三大局限与对策(细节归档附录):

局限 表现 对策(本讲落点)
幻觉 虚构数字/事件/法规 检索+工具+规则+人工(Part 3 合规层)
时效 知识截止于训练日 RAG 接实时数据(见 RAG 技术前奏与知识库层实现)
数值不稳 复杂计算出错 计算交给工具库纯函数(见工具库层实现)

注:GPT-4 技术报告原文并无金融特定论述,此为课堂归纳。

Financial Machine Learning · Lecture 06

金融专用模型辨析

  • BloombergGPT(2023):金融领域里程碑模型(500 亿参数),但从未开源——不可本地部署、不可微调,属闭源参照系
  • 开源金融微调模型(FinGPT 等,2024 起):可本地部署,但维护状态/许可差异大,选用前查许可与更新(撰写当日复核)
  • 现状结论:2026 年主流路径 = 通用开源底座 + 私有数据 RAG + Agent 工程;领域微调只在数据量大、任务固定时划算

来源:Wu et al. "BloombergGPT", arXiv:2303.17564(检索 2026-09-28)

Financial Machine Learning · Lecture 06

Part 1 核心要点回顾(Takeaway)

  1. LLM 能力来自 Scaling + 后训练(SFT/RLHF/推理模型);细节在 L03/L05
  2. 工程化四大接口:提示词(结构化)、RAG、函数调用、工具——Agent 的技术前奏
  3. 模型选型看任务类型与校验成本,2026 年开源-闭源差距缩小;快照页记得"即时复核"
  4. 金融场景先定最低校验配置(交叉验证/单测/规则/人工)
  5. 局限(幻觉/时效/数值)靠检索+工具+规则+人工兜底——这正是 Part 2/3 的 Agent 结构要解决的问题
Financial Machine Learning · Lecture 06

Part 2 · Agent 认知架构、Harness 工程与设计方法

Agent 定义 → Harness 工程与七子系统 → 判据与实例 → 认知架构(机制+解剖视角)
      → 设计维度 → 五协作模式 → 工具接入生态 → 框架与运行时选型
      → 工程防护 → 效率(成功任务成本) → 收敛与可验证性缺口 → 前沿争议

本 Part 回答两个问题:Agent 与 Harness 是什么;怎么设计、怎么控本、边界在哪。

Financial Machine Learning · Lecture 06

Agent 定义与"为什么需要"

LLM 的四局限 → Agent 的四能力:

LLM 局限 Agent 补什么
单轮对话、无持续性 状态与记忆(会话/检查点)
无法执行操作 工具调用(函数/检索/代码执行)
知识截止于训练时间 知识库+数据接口(RAG/实时数据)
不能验证与迭代 循环(ReAct/反思)+评估
  • 三种并列定义:① Agent = Model + Tools + Instructions(OpenAI 最小公式)② Anthropic:分 "Workflows"(确定性管道)与 "Agents"(LLM 自主决策循环)③ Agent = 模型 + Harness——模型提供智能,Harness 把智能变成工作(arXiv:2609.00006 §1;见 Harness 工程节)
  • 四能力归位(对应七个规范子系统,后文详列):状态与记忆→④|工具调用→③|知识库/RAG→③+②|循环与评估→①+⑤
  • OODA 循环(本课教学类比框架):观察(Observe) → 判断/调整(Orient) → 决策(Decide) → 行动(Act)
Financial Machine Learning · Lecture 06

Harness 工程:把 Agent 的另一半讲清楚

Agent = 模型 + Harness——模型提供智能,Harness 把智能变成工作。

维度 内容
定义 Harness(运行时/runtime):把 LLM 与世界耦合起来的运行时层——经由循环(loop)、工具(tools)、上下文管理(context)、安全控制(safety)、编排(orchestration)、扩展面(extension)
学科 harness engineering 于 2026 年初被命名为一门学科:已有从业者指南、形式化定义、自动演化系统与自己的 arXiv 谱系
边界 Harness 不是模型、不是提示词模板集合、不是某一个框架——它是运行时本身(见七个规范子系统)

为什么它是本讲的真正主角——三篇论文从不同角度得出的同一判断:

来源 原文判断
arXiv:2609.00006 §1 模型提供智能,harness 把它变成工作;harness engineering = 这个运行时的设计与演化
arXiv:2608.23953 摘要 "约束 Agent 行为的是这一层,而不是它包裹的模型"(the binding constraint on agent behaviour)
arXiv:2608.25593 摘要 harness 可以盖过基座模型的贡献(can dominate the contribution of the underlying foundation model)
Financial Machine Learning · Lecture 06

Harness 工程(二):对金融的三句话落点

对金融的三句话落点:① 模型可以换(见按任务选模型);② Harness 决定可控性(护栏、检查点、人在环都在这一层);③ Harness 决定"每次成功任务的成本"(效率:按「成功任务成本」计价)。

与本讲既有内容的关系:Part 1 讲模型(可替换的一半),Part 2 讲 Harness(本讲主体),Part 3 把 Harness 落到财报解读案例的代码里。

Financial Machine Learning · Lecture 06

Harness 的七个规范子系统(实证解剖·上)

来源:arXiv:2609.00006 §2.3/Table 1(11+1 个生产级 harness 源码解剖,约 400 万行;检索 2026-09-29)。任何 harness 都须在这七项上表态——哪怕表态是"故意不做"(Aider 即不做编排)。

# 子系统 职责
1 Agent loop 推理与动作交替;停止条件与失败恢复
2 LLM integration 说厂商协议;组装 prompt;缓存/思考/路由
3 Tools & actions 定义并执行 Agent 能做什么
4 Memory & context 配给上下文窗口;跨轮次/跨会话持久化

两个横切面(不单列为子系统):界面层(TUI/CLI/IDE 协议/HTTP server/SDK)|会话基座(transcript、持久化、resume/fork)

Financial Machine Learning · Lecture 06

Harness 的七个规范子系统(实证解剖·下)

# 子系统 职责 「最小→最大」实现(语料观测)
5 Safety & permissions 决定什么能跑、什么要问、什么禁止;隔离执行 步数上限 → 策略规则+LLM 审批复核器+三平台 OS 沙箱(Codex)
6 Orchestration 派生与协调子 Agent;连接其他 Agent Aider 故意不做 → 递归组合(Claude Code)/跨厂商协调(Omnigent,元层)
7 Extensibility 让用户与生态加能力:配置/钩子/Skills/插件/MCP 结构化类型(Python Protocol) → 一切皆扩展的运行时(Pi)/插件市场(Codex)

两条读表结论(出处同前页):① 最小实现极低——Mini-SWE-Agent 约 100 行实现全部七子系统,SWE-bench Verified 自报成绩与三个数量级更大的系统同区间;② 编排的最小形态是"故意缺席"——Aider 坚持单 Agent,为"不要为多 Agent 而多 Agent"提供实证背书。

⚠️ 适用范围:编码 Agent 语料的实证解剖,非金融定理;金融差异见可验证性缺口。课堂动作:把主轴案例的八节点映射到这张表(答案见「编排子系统实现」)。

Financial Machine Learning · Lecture 06

Workflow vs Agent:判据

维度 Workflow(确定性管道) Agent(自适应系统)
状态管理 预定义条件(if-else) LLM 推理动态决定
决策机制 编译时确定 运行时生成
错误处理 静态重试 自我诊断+策略调整

判断标准(三行判别式):

  • 流程是 DAG(无回路)→ Workflow
  • 存在"失败则重试/调整"自循环 → Agent
  • 跳转逻辑由 LLM 动态决定 → Agent

金融实务倾向先 Workflow、后局部 Agent 化——可控性优先(见三元权衡)。

Financial Machine Learning · Lecture 06

实例对比:FinRpt-Gen vs AI Scientist-v2

FinRpt-Gen(Workflow 型):9 个 Agent 节点、固定流水线(抽取→分析→预测→Judge),价值在"分工"而非"决策"。

AI Scientist-v2(Agent 型):含 Debug Loop——运行失败→读 traceback→自主修正→重试(论文标题即 "Workshop-Level Automated Scientific Discovery",arXiv:2504.08066)。

代码生成 → 执行 → [失败?] ──否──→ 进入下一阶段
              ↓ 是
         读 Traceback → 调整策略重试(最多 N 次)

同一个"研报生成"任务:固定标的+固定模板 = Workflow;开放选题+自主探索 = Agent。判据是决策点在编译期还是运行期。

Financial Machine Learning · Lecture 06

认知架构(机制视角):规划/记忆/工具/协作

对齐 Google Agents 白皮书三层(Orchestration / Memory / Tools),机制视角看运行时怎么协作:

机制 一句话 主轴案例落点
规划(Planning) 把目标拆成步骤并推进 "财报问答→指标→报告"的任务链
记忆(Memory) 短期状态+长期知识 会话中记住"已读报表、已算指标"
工具(Tools) 调用外部函数与环境 数据抓取、指标计算、合规规则
协作(Collaboration) 多角色/多体分工 数据/解析/分析/合规四角色

下一页用解剖视角看同一件事(组件有哪些),两视角互补。

来源:Google, "Agents" Whitepaper(撰写当日复核链接;检索 2026-09-28)

Financial Machine Learning · Lecture 06

认知架构(解剖视角):Agent 运行时分层

分层图见下一页(单独成页,避免拥挤);本页给出要点与术语口径。

AI Agent = 模型底座 + Harness(模型之外的运行时)+ 知识库 + 工具库 + 数据接口 + Skills(本课教学解剖框架,非行业标准命名)

  • Harness 的内部构成:即七个规范子系统——①循环策略(ReAct 等)⑤护栏与权限 ⑥编排 ⑦扩展(工具协议/Skills)+横切会话基座;记忆归子系统 ④、可观测为横切关注点,均不单列为平级组件
  • 两种粒度互补:本页是分层视图(整个系统怎么摆),七个规范子系统页是解剖视图(模型之外的运行时由什么组成)——考试与分析题一律要求能切换两种粒度
  • 判定口诀:知识库=有什么事实;数据接口=当前值是什么;工具库=怎么算/怎么做
Financial Machine Learning · Lecture 06

认知架构(解剖视角):分层图(教学框架)

AI Agent = 模型底座 + Harness(模型之外的运行时)+ 知识库 + 工具库 + 数据接口 + Skills(本课教学解剖框架,非行业标准命名)

               ┌─────────────── 用户 / 运营者 ───────────────┐
               │                    ▲ 人在环 ─ 确认/干预     │
   ┌───────────┴────────────┐       │                       │
   │   Harness(运行时)     │◀─────┴── 护栏(guardrails)    │
   │ ①循环 ⑤安全 ⑥编排 ⑦扩展 │──────▶ 可观测(追踪/日志)       │
   │ +横切:会话基座/界面层  │                               │
   └───┬────────┬────────┬──┘                               │
       │        │        │                                  │
  知识库(KB)  工具库(Tools) 数据接口(Data)                    │
  事实/文档   怎么算/怎么做  当前值/端点                       │
  (RAG)      (纯函数/脚本)  (AkShare/EDGAR/FRED)             │
       │        │        │                                  │
   ┌───┴────────┴────────┴────────────────────┐             │
   │ Skills 层:可复用技能包(提示词+脚本+校验) │             │
   └──────────────────────────────────────────┘             │
              模型底座(LLM:开源/闭源/本地)◀── 函数调用/结构化输出

读图三条:① 模型底座在最下,可替换;② Harness 居中调度(循环/状态记忆/护栏/协议/可观测),记忆与护栏不单列为平级组件;③ 判定口诀:知识库=有什么事实|数据接口=当前值是什么|工具库=怎么算/怎么做。

两种粒度互补:本页是分层视图(整个系统怎么摆),前一页是解剖视图(模型之外的运行时由什么组成)——考试与分析题要求能自由切换两种粒度。

Financial Machine Learning · Lecture 06

本讲核心观点:垂直领域智能体 = 本地知识库 + 数据接口 + skill 库 + 脚本库

通用 harness 已经商品化;垂直智能体的价值全部落在这四件套上。

 通用 Agent 运行时 / Harness(循环·编排·安全·会话·扩展 —— 别在这里创新)
      ▲              ▲               ▲              ▲
 ┌────┴────┐    ┌────┴────┐    ┌────┴────┐    ┌────┴────┐
 │本地知识库│    │ 数据接口 │    │ skill 库│    │  脚本库 │
 │ 私有事实 │    │  当前值  │    │  怎么做 │    │  怎么算 │
 └─────────┘    └─────────┘    └─────────┘    └─────────┘
      └────────── 领域能力积累在这里 ──────────┘
件 判据 内容物
本地知识库 有什么事实 年报/公告/合同、监管条文、口径手册;向量库、图谱
数据接口 当前值是什么 行情、三表、宏观;连接器+缓存+限流+降级
skill 库 怎么做 角色提示、步骤编排、输出 schema、自检清单
脚本库 怎么算 指标纯函数、口径转换、对账断言;确定性、可单测
Financial Machine Learning · Lecture 06

四件套的三条纪律(为什么这样切分)

纪律 1 · 通用层不要自研。 循环、重试、压缩、沙箱、会话记录——用成熟 harness。证据:11 个生产 harness 无一处 import 通用框架(约 400 万行),循环这一层已无人竞争(pi 796 行/dsh 515 行)。预算全投四件套。

纪律 2 · 知识与算力分离。 模型只做"理解与生成",任何数字都出自脚本库——可审计、可复现、可单测。

纪律 3 · 四件套都要可版本化。

件 版本化对象 缺了会怎样
本地知识库 语料版本+切分参数 同一问题两次回答不一致
数据接口 缓存快照(as-of 时点) 无法复现历史结论
skill 库 提示词与输出 schema 版本 输出漂移无人察觉
脚本库 单测+口径注释 口径悄悄变化,数字不可比
Financial Machine Learning · Lecture 06

规划:ReAct / Plan-and-Execute / 反思

模式 思路 适用 案例落点
ReAct Thought→Action→Observation 交替推进 探索性问题 财报问答:先查报表再回答
Plan-and-Execute 先整体计划,再逐步执行 任务结构清晰 研报生成:计划→抓数→分析→成稿
反思(Reflection) 执行后自评、修正 质量要求高 合规自检、指标口径复核
  • ReAct 出处:Yao et al. 2022, arXiv:2210.03629
  • 金融提示:计划先行降低"想到哪做到哪"的失控风险;反思用于对答案的批判性复检

来源:Yao et al. arXiv:2210.03629;Anthropic 工程博客(检索 2026-09-28)

Financial Machine Learning · Lecture 06

记忆:短期与长期

  • 短期记忆(工作状态):当前任务上下文、已调用结果;工程载体=状态对象(会话检查点)、会话窗口
  • 长期记忆:外部存储——向量库(RAG 知识)、键值/数据库(指标缓存、用户偏好)
  • 主轴案例:会话中记录"已读 2025 年报、ROE=15.2%"——避免重复读取与重复计算(省钱、减少幻觉面)
  • 对应子系统 ④(Memory & context);生产系统的共识是"只追加、可重放的会话记录"(收敛五要素之二),三种强度:
    • 强:事件溯源+运行时不变式"可见 ⇒ 已记录"+replace 操作(dsh);
    • 中:只追加条目+寄存器(pi);
    • 弱:检查点,但恢复会改写历史(deepagents)。
  • 设计趋势:行为策略正从提示词散文迁移到配置(九十天源码 diff 的观察)——"写进 prompt 的规矩"会变成"写进配置的规矩"
  • 为什么金融要在意:只追加且可重放=审计与回放的前提(见审计与回放一节);会改写历史的记忆层,事后无法自证

记忆是"知识截止"的第二道解药:模型忘了没关系,记忆系统记得。

Financial Machine Learning · Lecture 06

工具:模型的手和眼

  • 三类工具:函数调用(确定性计算)|检索(查文档/数据库)|代码执行(复杂计算、E2E 操作)
  • 工具定义四要素:名称、描述(给模型看的说明书)、参数 Schema、错误返回约定
  • 主轴案例示例:
{"name": "get_financial_statements", "description": "获取指定股票指定期间财务报表",
 "parameters": {"symbol": "600519", "statement": "资产负债表", "period": "2025年报"}}

工具描述写得好,模型才"会用"——描述是 prompt 工程的一部分(提示词工程技巧在此复用)。

  • 对应子系统 ③(Tools & actions);生产系统的量级:43 个强类型工具(Claude Code)到仅 bash(Mini-SWE-Agent)
  • 工具越多越贵:工具 schema 进上下文就是固定成本,因此延迟加载(deferred loading)成为主导模式——按需把工具说明"渐进披露"给模型(收敛五要素之四,见效率:按「成功任务成本」计价)
Financial Machine Learning · Lecture 06

设计维度:单体 vs 多体

为什么拆多体(认知负荷分解):

优势 说明 案例
认知分工 每个 Agent 只装有限上下文 TSci 四角色流水线
并行处理 子任务同时推进 数据抓取与模板准备并行
故障隔离 单点失败不拖垮全局 合规 Agent 独立于生成 Agent

三种编排形态:Sequential(依赖链)/ Parallel(多视角)/ Hierarchical(分层指挥)

  • 设计提示:先单体跑通,再拆多体;不要为"多 Agent"而多 Agent(成本与失控风险随之上升)
Financial Machine Learning · Lecture 06

设计维度:自治-可控-可观测三元权衡

              自治性 Autonomy
                    ▲
                   /|\
                  / | \
                 /  |  \
                ▼   ▼   ▼
          可控性 Control    可观测性 Observability
  • 给 Agent 多少决策权?→ 决定工作流 vs 自治循环
  • 出错如何干预?→ 熔断、人在环、紧急停止
  • 行为如何被追踪?→ 日志、trace、审计回放
场景 倾向
合规量化交易 高可控+高可观测,低自治
科研探索(选题/假设) 高自治,预算护栏兜底
研报生成(半自动) 中间态:流水线+人审
Financial Machine Learning · Lecture 06

多 Agent 协作模式 1:Crew / Role / Task(SOP 驱动)

核心思想:角色化(role)+ 任务书(task)+ 接口契约(schema)+ 质量网关(检查点)

TSci 角色 职责 输出
Curator 数据清洗、特征工程 标准化时序数据
Planner 基于特征选模型 模型配置
Forecaster 执行预测 数值+置信区间
Reporter 可解释报告 结构化文档
  • 设计要点:接口 Schema 先行;每环节设质量网关;识别无依赖环节并行化
  • 金融落点:研报流水线(FinRpt-Gen 即此模式的 9-Agent 版本)
Financial Machine Learning · Lecture 06

多 Agent 协作模式 2:ReAct 循环(动作内化)

DeepAnalyze-8B 的五动作 Token(arXiv:2510.16872,自主数据科学模型):

Token 功能
⟨Analyze⟩ 规划、推理、反思
⟨Understand⟩ 结构化数据理解
⟨Code⟩ Python 代码生成
⟨Execute⟩ 环境执行+反馈
⟨Answer⟩ 最终输出
  • 创新点:动作内化进模型 Token,无需外部编排——Harness 的极限情形(「Harness 工程」的例证)
  • 教学意义:同一思想在外部框架=显式 ReAct 循环;在内生派=动作 Token
Financial Machine Learning · Lecture 06

多 Agent 协作模式 3:层级路由(Hierarchical)

  • manager-analyst 模式:管理者拆解任务、分析师执行、结果回报;管理节点负责风控与自我批判
  • 代表案例 FinCon(arXiv:2407.06567):单股交易与组合管理两档,manager-analyst 层级通信+风险控制/自我批判+概念化言语强化
  • 适用:任务层级天然存在(宏观决策→标的分析→数据执行)的金融场景
Financial Machine Learning · Lecture 06

多 Agent 协作模式 4:批判-改进循环(Critique-Revision)

  • Denario(arXiv:2510.26887,天体物理/科学发现多 Agent):Idea 模块 propose-critique 双代理——Idea Maker 生成创意 → Idea Hater 批判 → 修订 → 循环
  • 循环护栏(取自论文与代码配置):nfails(执行失败上限)、nrounds(消息上限,默认 500);timeout 出自代码配置
  • 金融落点:研报生成后由"批判 Agent"挑毛病(数字口径、逻辑链、合规表述)再交付

通用价值:对抗式自检是降低幻觉与不一致性的有效机制。

Financial Machine Learning · Lecture 06

多 Agent 协作模式 5:并行集成(Ensemble / MoA)

  • MoMoE(arXiv:2511.13983):多专家并行(LLaMoE+GPT-4o+DeepSeek 等)→ Final Agent 仲裁;金融情感分类 SOTA:Accuracy 75.5% / F1 76.6%
  • 风险:"多数偏置"——多个 Agent 犯相同错误会带偏最终决策
  • 对策:引入外部验证器(检索/规则)、分歧显式化、仲裁 Agent 独立
  • 金融落点:多模型投票用于情感/分类场景;交易信号慎用(错误同源风险)
Financial Machine Learning · Lecture 06

工具接入生态:MCP(2026 状态)

Model Context Protocol——Agent 与工具/数据的标准接口:

  • 2024-11 Anthropic 提出;2025-12-09 Linux Foundation 成立 Agentic AI Foundation(AAIF),MCP 为三个创始项目之一(另为 goose、AGENTS.md;来源 aaif.io)
  • 规范最新稳定版 2026-07-28(重大更新:协议无状态化、移除 initialize 握手、MRTR 等;Anthropic 官方博客确认)
  • 架构:MCP Client(Agent 侧)= 标准 JSON-RPC 2.0 ↔ MCP Server(工具/数据侧)
┌────────────┐   JSON-RPC 2.0    ┌──────────────┐
│ MCP Client │ ←──────────────→  │  MCP Server  │
│  (Harness) │  tools/resources  │ (数据/工具)   │
└────────────┘  prompts          └──────────────┘
  • 金融意义:财报、行情、新闻等数据源可封装成统一 MCP 服务器,Harness 无需改代码即可接新数据
  • 2026 的实证反转:Skills 在采纳率上超过了 MCP——SKILL.md 技能包 9/11 vs MCP 8/11(11 个生产编码 harness 源码审计);且 SKILL.md 格式与 .agents/skills/ 路径跨厂商趋同,出现注册表、信任分级,以及语料中首批由 Agent 自己编写的技能
  • 工程含义:能力扩展的第一选择正从"接一个协议服务器"转向"写一个技能包"(更轻、可延迟加载);本课 Skills 三件套与此同向
  • 来源:modelcontextprotocol.io / aaif.io / claude.com/blog;arXiv:2609.00006 §12.5(检索 2026-09-29)

Financial Machine Learning · Lecture 06

工具接入生态:A2A(2026 状态)

Agent-to-Agent——Agent 之间如何协作:

  • 2025-04 Google 提出;2025-06-24 捐赠 Linux Foundation
  • 稳定版 v1.0 于 2026-03-12 发布(官方博客:production-ready standard),当前补丁版 v1.0.1(2026-05-28)
  • 2026-08-27 加入 AAIF(Growth Stage,非创始项目)
  • 核心概念:Agent Card(描述能力与连接信息的公开清单,等价于"服务目录")
┌──────────┐   A2A 协议(HTTP/JSON)  ┌──────────┐
│ Agent A  │ ←────────────────────→  │ Agent B  │
└──────────┘   Agent Card 发现        └──────────┘
  • 与 MCP 的分工:MCP=Agent 与工具的接口;A2A=Agent 与 Agent 的接口(互补,2026 常组合使用)
  • 第三条线:ACP(Agent Client Protocol)——已在 6 个系统落地,并长出一个新角色 "harness hosting"(托管 harness):OpenHands 可以把 Claude Code、Codex 或 Gemini CLI 当作可互换的后端来跑
    → 含义:Agent 之间的接口不止"协作",还有"托管彼此的运行时"(2026 新形态,接平台化(三条读表结论))
  • 来源:a2a-protocol.org / github.com/a2aproject/A2A/releases;arXiv:2609.00006 §12.2/§13.3(检索 2026-09-29)

Financial Machine Learning · Lecture 06

开源框架全景:四大流派

流派 Harness 风格 代表(2026-09 版本)
A. 严谨编排派 显式状态图/状态机,可审计可回滚 LangGraph 1.2.12
B. 角色流水线派 角色+任务书,SOP 驱动 CrewAI 1.15.22、AG2 1.1.0
C. 轻量运行时派 极简 ReAct/代码执行循环 OpenAI Agents SDK 0.22.x、smolagents 1.26.0、PydanticAI 2.51.0、Agno 3.0.11
D. 数据/RAG 派+平台派 数据工作流/可视化编排 LlamaIndex 0.14.25|Dify 1.17.x、n8n 2.40.x

流派本质 = Harness 设计风格(七个规范子系统的落地分类):图式/角色/轻量/平台——选型先认风格,再认框架(版本与检索日期撰写当日复核)。

  • 补一层视角(2605.18747):code as agent harness——代码不再只是产出物,而是 Agent 推理、行动、环境建模与执行验证的操作基底;该综述按三层组织:harness interface(代码连接 Agent 与推理/行动/环境)→ harness mechanisms(规划/记忆/工具+反馈驱动控制)→ scaling the harness(单 Agent→多 Agent,共享代码产物支撑协调、评审与验证)→ 对本课的含义:框架与手写代码都是"用代码搭 harness",差别在于谁来写这段代码

Financial Machine Learning · Lecture 06

框架速览 1:编排与角色派

框架 版本 一句话定位
LangGraph 1.2.12 图/状态机式低层编排;长程有状态 agent;节点/边/检查点/中断(本讲主轴)
AG2 1.1.0 AutoGen 继任;v1.0 起协议驱动重写(import ag2),经典 API 迁至 ag2-classic(官方文档确认)
CrewAI 1.15.22 角色化 crew 协作编排;含 Skills 概念(docs.crewai.com)
LlamaIndex 0.14.25 数据/RAG 框架;Workflows 与 AgentWorkflow 提供 agent 能力

安装示例:pip install "langgraph>=1.2"、pip install ag2 crewai llama-index(版本以 PyPI 为准)

Financial Machine Learning · Lecture 06

框架速览 2:轻量派、平台派

框架 版本 一句话定位
OpenAI Agents SDK 0.22.x 轻量运行时:handoffs/guardrails/sessions
PydanticAI 2.51.0 类型安全、结构化输出优先(2026-09-25 发布,GitHub release)
smolagents 1.26.0 HF 极简"代码执行式"(CodeAgent)
Agno 3.0.11 原 phiData(2.7.10 后停更)更名而来(官方迁移文档)
Dify 1.17.x 可视化 LLMOps/Agent 平台,可自托管
n8n 2.40.x 自托管工作流自动化(含 AI/LangChain 节点)
Financial Machine Learning · Lecture 06

框架速览 3:2026 新项目(dsh 与 Pi 的定位)

2026 新项目:

  • DeepSeek Harness(dsh)(github.com/deepseek-ai/deepseek-harness):DeepSeek 官方 harness,2026-08-13 开源,MIT、TypeScript、哲学是**"Everything is a Plugin"**,developer preview
    • 为什么升级:它是唯一同时拥有第三方源码级研究与预注册实测的 harness——arXiv:2608.23953 把它作为三个案例之一逐行读取;arXiv:2608.01347 附录 O 用它做了 harness 扩展实验(−74.7%/−82.2% 即出自此)
    • 真实组成(论文口径,非推测):agent spine、本地 bash/文件工具、subagent 委派、todo 状态、JSONL 持久化/检查点、token 计量、自动上下文压缩;另有 Code Mode 与 workflow orchestration(未进入该实验的处理臂)
    • 实测版本:CLI/运行时 0.1.0rc7;被测组合为 dsh-jsonrpc-agent(无人值守 SDK 组合,非 CLI 交互模式)
  • Pi / pi-agents(pi.dev):★ 注意区分——arXiv:2608.23953 研究的 pi(Earendil 的极简编码 harness,796 行 loop 文件)与框架速览里的 npm 包 pi-agents 0.21.0(2026-08-29,Apache-2.0,工作流编排扩展:sequence/parallel/map/loop/switch+maxAgents/maxCost 预算)
  • Pi / pi-agents(pi.dev):编码 CLI 智能体的工作流编排扩展(npm pi-agents 0.21.0,2026-08-29,Apache-2.0;支持 sequence/parallel/map/loop/switch 与 maxAgents/maxCost 预算;下载量级小,生态早期)

选型纪律:新不等于好——课程与作业的主轴框架选 LangGraph(成熟、显式可控);新丁进速览与前沿观察,不作作业默认。

Financial Machine Learning · Lecture 06

选型决策树

第 0 问(自己写循环 vs 用框架)已独立成页——它是选型的第一步,且证据量较大。

任务容错率如何?
 ├─ 低容错(金融)→ 流程确定? → 确定: LangGraph / CrewAI(显式图/流水线)
 │                              → 需适应: LangGraph + 护栏 + 人在环
 └─ 高容错(研究/探索)→ 需要多大自主性?
                          ├─ 强自主: OpenAI Agents SDK / smolagents / Pi
                          └─ 可控自治: LangGraph 子图 + 预算护栏
数据密集(RAG 为主)→ LlamaIndex;非技术团队/可视化 → Dify / n8n
工程语言偏好:Python → 上述全部;TypeScript → LangGraph.js / DeepSeek Harness(preview)

决策树的应用例:

金融场景 推荐 理由
财报 RAG 问答 LlamaIndex(AgentWorkflow) 数据/RAG 原生
研报流水线 CrewAI / AG2,或 LangGraph 角色分工成熟;要审计则选后者
量化研究 Agent LangGraph + PydanticAI 显式可控+类型安全
合规客服/话术 LangGraph + guardrails 状态机+护栏契合
最快原型 OpenAI Agents SDK / smolagents 轻量起步
可视化管理 Dify(自托管) 低代码+LLMOps
跨系统自动化 n8n 工作流节点丰富
Financial Machine Learning · Lecture 06

选型第 0 问:自己写循环,还是用框架?

第 0 问(必须先答):自己写循环,还是用框架?

实证背景:约 400 万行 Python/TypeScript/Rust 的 11 个生产级编码 harness 中,无一处导入通用 Agent 框架——LangChain、LangGraph、LlamaIndex、AutoGen、CrewAI、PydanticAI、Genkit、Google ADK 全部零命中;Gemini CLI 连 Google 自家的 Genkit/ADK 都不用。它们全部手写异步循环+确定性检索(ripgrep、tree-sitter、glob、自动发现的 Markdown 上下文)。

但边界要说清(否则会误读成"框架无用"):① Aider 有一个可选的 llama-index extra,仅对它自己的文档做 doc-RAG,不是 agent loop 编排;② OpenCode 把内层 LLM/工具管线委托给 Vercel AI SDK(provider 抽象层,非编排框架);③ 生产 harness 面对的是代码检索,而金融文本是非结构化语义检索,RAG 仍然必要(见「知识库层实现」)。

判据:

情形 选择 理由
要审计/复核/教学透明、状态图要能画出来 用框架(本课选 LangGraph) 显式状态、检查点、可读性;治理成本低
团队要长期自研、要榨性能、要接多个异构 harness 手写循环 生产实践的选择;框架的抽象会成为天花板
只是做原型/验证想法 用轻量框架或轻量运行时 起步快
需要可外部校验的审计记录(可验证性缺口) 无论哪条路,都要自己补 现成 harness 全部没有
Financial Machine Learning · Lecture 06

场景-框架推荐表(选型决策树的应用例)

金融场景 推荐框架 理由
财报 RAG 问答 LlamaIndex(AgentWorkflow) 数据/RAG 原生
研报流水线 CrewAI / AG2 角色分工成熟
量化研究 Agent LangGraph + PydanticAI 显式可控+类型安全
合规客服/话术 LangGraph + guardrails 状态机+护栏契合
最快原型 OpenAI Agents SDK / smolagents 轻量起步
可视化管理 Dify(自托管) 低代码+LLMOps
跨系统自动化 n8n 工作流节点丰富
Financial Machine Learning · Lecture 06

课堂小练 2:给场景选框架

三个场景,选一个框架并说出理由:

  1. 券商投研部:固定模板的季度研报自动生成流水线 → (参考答案:CrewAI/AG2 或 LangGraph;理由:SOP 固定、需审计)
  2. 私募:财报摘要"分析师问答"产品原型,团队 2 人、三天出 demo → (参考答案:LlamaIndex/OpenAI Agents SDK/smolagents;理由:RAG 为主、起步快)
  3. 银行合规:话术生成+强制人工复核通道 → (参考答案:LangGraph;理由:显式状态+interrupt 人在环)

理由比框架重要:先答"是什么流派/Harness 风格",再答"具体框架"。

Financial Machine Learning · Lecture 06

常见失败模式

  1. 死循环与「按成功任务成本」失控:无界循环烧光 token——设 nfails/nrounds/timeout 类硬上限(Denario 配置口径:nfails、nrounds 默认 500);成本要按"每次成功任务"计量(见效率:按「成功任务成本」计价),不是按 token 数
  2. 多数偏置:多 Agent 同错 → 决策被带偏(MoMoE 的"多数偏置"教训,见并行集成一节)——外部验证器/分歧显式化
  3. 幻觉传播:单 Agent 幻觉经协作放大——分阶段验收+Judge Agent+工具校验
  4. 输入缺陷直接烧钱(实证,2608.01347):误导性架构提示 = 推理成本 2.61×(测得最贵的输入缺陷);范围模糊 = 成功率最低 83% 且推理 1.44×;任务拆两轮 ≈1.31×、每轮重述 ≈1.38×;而无关上下文 1.03×、冲突约束 1.05× 影响可忽略
    → 教训:"提示词里塞得多"不等于安全,塞错了最贵
  5. "更努力"可能更差:证据触发的努力升级(effort escalation)反而劣于固定策略——预注册规则在 64–68% 任务上激活,Sonnet 5 约等于 always-xhigh、Opus 5 劣于 always-low(效率:按「成功任务成本」计价页的 dsh 实测亦显示 effort 收益高度依赖 harness)
  6. "多方案=更稳"是错觉:强制多方案分支无成功率收益(96.5% → 95.2%;不一致块 26:13 反而偏向基线);易题上 98.8% → 96.4%,且越界编辑 2.5×
    → 只在"比较方案本身就是任务要求"时使用

通用对策:预算上限(按成功任务成本)、超时熔断、输出 schema 校验、关键事实强制检索、输入缺陷前置检查(范围与假设先澄清)。

Financial Machine Learning · Lecture 06

效率:按「成功任务成本」计价(harness 效应实测)

终端指标换掉:Agent 效率 = cost per successful task(每次成功任务的成本,由 Agent 轨迹诱发);
token 与缓存计数是轨迹的测量值,不是充分的优化目标。

① harness 对成本的影响,大于提示词(同模型/同任务/同提示词,匹配单元对比):

观测项 Claude Code PI.DEV
固定前缀(transmitted fixed prefix) 12–15× 于对方 基准
轮次 2–7×(10–41 轮) 5–7 轮
每次成功成本 5–30× 基准
成功率 ≈100%(相当) ≈100%
工具画像 约一半调用是测试执行(验证重) 22%
Financial Machine Learning · Lecture 06

效率实测:dsh 五臂成本与 harness×effort 交互

② 本课自家 harness 的预注册实测(DeepSeek Harness 0.1.0rc7、dsh-jsonrpc-agent 无人值守组合、模型固定 Claude Sonnet 5、5 任务×5 臂×3 重复=75 次有效运行、全部臂全解):

臂 平均计费成本 相对 baseline
baseline(保持出厂行为) $0.2753 —
policy(效率策略附到 system persona) $0.2114 −23.2%
rewrite(wrapper 提示纠正) $0.2109 −23.4%
effort(自适应覆盖 reasoningEffort) $0.0696 −74.7%
full(三者叠加) $0.0490 −82.2%
  • effort-only 占 baseline→full 降幅的 90.9%;作者定性:在被测 dsh 组合中"effort 控制主要在纠正一个高算力默认设置"
  • ③ 最反直觉的一条——harness×effort 交互:同一套控制器逻辑,在 Claude Code 下 effort-only 约 −19%、full 约 −27%;在 dsh 下是 −74.7% / −82.2%
    → 不存在可搬运的"82% 效果";效率结论必须连同 harness 一起报告
  • ④ 缓存要正确解读:provider 侧前缀缓存减少约 61% 的应付账单(实付≈无缓存时的 39%),但行为指标不变——计费下降 ≠ 行为效率提升
Financial Machine Learning · Lecture 06

效率实测(二):harness×effort 交互、缓存与四条限定

金融落点:预算熔断应管每次成功任务的成本(成功率与成本同时约束);按任务选模型页的批量/低成本档也要用这个口径核算。

⚠️ 四条限定(必须连同数字一起讲):①版本 0.1.0rc7、被测组合为无人值守 SDK 组合(非 CLI);②模型是 Claude Sonnet 5,未测 DeepSeek 模型;③5 个激活夹具全部为成功率封顶(ceiling)任务,因此证明的是"该配置下算力过度配置",不是难任务上的最优 effort 策略;④dsh 与 Claude Code 的绝对成本不可直接比较(prompt/工具/压缩/缓存流量均不同)。

Financial Machine Learning · Lecture 06

工程防护 1:熔断 / 限流 / 超时(课堂示例代码)

class CircuitBreaker:                       # 通用工程模式(课堂示例,非论文内容)
    def __init__(self, failure_threshold=5, timeout=60):
        self.failure_count, self.state = 0, "CLOSED"
        self.timeout, self.threshold = timeout, failure_threshold
    def call(self, func, *args):
        if self.state == "OPEN" and not self._cooled_down():
            raise CircuitBreakerOpen()
        try:
            result = func(*args); self.failure_count = 0; self.state = "CLOSED"
            return result
        except Exception:
            self.failure_count += 1
            if self.failure_count >= self.threshold: self.state = "OPEN"
            raise
    def _cooled_down(self):
        return False  # 简化示意:真实实现记录时间戳并支持 HALF_OPEN 试探

金融落点:行情接口抖动、模型 API 超时——熔断降级(返回缓存/报错)而不是堆重试。

Financial Machine Learning · Lecture 06

工程防护 2:状态管理 / 检查点 / 可观测(课堂示例)

  • 状态管理:全局共享状态 + 各 Agent 私有状态 + 检查点快照(支持回滚/审计回放);标注课堂工程示例
  • 对齐生产形态:状态记录按"只追加、可重放"设计(生产 harness 的共识,见收敛五要素),并引入 "可见 ⇒ 已记录"不变式——凡进入模型上下文的内容都必须落盘可追溯(dsh 的运行时断言),这是可审计性的设计原则而非事后补丁
  • 全链路追踪:每个决策点、工具调用、状态变迁记 span(span_id/parent/时间/上下文)
  • 三层可观测性:
层级 指标示例 采集方式
系统级 延迟、错误率、资源 Prometheus/Grafana 类
Agent 级 决策质量、工具使用率 自定义埋点
业务级 任务完成率、成本 业务系统

金融运维格言:不可观测的 Agent 不可上线——审计回放依赖的就是状态与追踪(见金融风控与合规治理)。

⚠️ 但"可观测"≠"可验证":三个生产级 harness 都有可观测、都没有可被外部方独立校验的记录(见可验证性缺口)。可观测是"你自己能看",可验证是"别人不用信你也能查"——金融场景要的是后者。

Financial Machine Learning · Lecture 06

Harness 收敛与「可验证性缺口」——金融的下一个竞争轴

三个哲学对立的 harness,收敛到同一个中间形态(deepagents:电池全含|pi:极端极简|dsh:一切皆插件):

# 收敛要素 语料证据(三种实现)
1 商品化的循环 pi 的 loop 文件 796 行;dsh 的 driver 515 行;deepagents 不自己写循环(委托 LangGraph)——没有一家在循环上竞争
2 只追加、可重放的会话记录 强度排序:dsh 强(事件溯源+运行时"可见 ⇒ 已记录"断言+replace 操作)> pi 中(追加条目+寄存器)> deepagents 弱(恢复仍改写历史)
3 模型怪癖外置为数据 da:profile 类层次|pi:compat 数据目录|dsh:adapter 配置+运行时能力解析
4 上下文的渐进披露 da:skills 索引(name/desc/path)|dsh:投影+每个能力的 token/KV 契约
5 正交扩展缝 da:middleware/backend/profile|dsh:service-definition 三元组 locator

未收敛的维度:OS 级沙箱——dsh 有(bwrap/Landlock,且失败时抛错而非降级)、deepagents 部分、pi 故意不做("把自己容器化")

Financial Machine Learning · Lecture 06

可验证性缺口:三个 harness 全部为零

可验证性缺口(本页高潮)——三个 harness 全部为零:

层级 内容 现状
运维可重建 运行时自己能否重建发生了什么 dsh 达到(最强),但其文档坦白边界:ctx.tools.restrict() 是"一种可见性组合,不是权限边界"
外部可校验 外部方无需信任运行时即可校验的、防篡改的记录 三个 harness 全部为零
领域溯源 数据截止到何时(as-of)/结果能否出域/成本上限是否守住了 无人触及

作者的解读(也是本课的用法):这是预测性缺口,不是疏忽——三个 harness 收敛于"终端前开发者所需的一切",而可验证性恰是该受众不需要的,所以收敛在此停止;于是它成为provenance 不可选的领域(金融/合规/医疗)的下一个竞争轴。

金融落点(本讲最强的一句):本讲反复强调的"可解释、可审计、人在环、审计回放",在 2026 年的生产级 harness 里是空白——小组项目若做"可外部校验的金融 Agent 审计记录"(小组项目选题 E),做的不是课程练习,而是前沿缺口。

Financial Machine Learning · Lecture 06

前沿争议:Harness 是「设计」的还是「生成」的?

三种立场,来自三篇论文:

立场 来源 主张与证据
A 设计 arXiv:2609.00006 90 行最小可用 harness(scaffold)+18 条设计建议+29 个可复用设计模式——harness 是工程制品
B 收敛 arXiv:2608.23953 中间形态已稳定(收敛五要素);差异化不发生在五要素里,而发生在边界(可验证性缺口)
C 生成 arXiv:2608.25593 把 harness 形式化为可组合、可机器生成的产物,受固定四模块协议治理;JIT-Agent 为任意现成 agentic LLM 即时合成任务自适应 harness、修复 harness、并从配置档案中自演化
Financial Machine Learning · Lecture 06

立场 C 的成绩单(论文自报,未经本课独立复现):

观测 结果
DeepSeek-V4-Flash + JIT-Agent DeepSearchQA 超过 GPT-5.6(+9.1)
同前 OdysseyBench +4.3
GLM-5.2 + JIT-Agent 最高 +20.2 分
JIT-Agent 生成的 harness 性能与 OpenCode、Claude Code 等成熟运行时相当
跨模型族 DeepSeek V4 / Mimo-V2.5 / Qwen3.6 一致改善
定位 首个为即时 harness 生成而造的模型;"harness 智能"是可训练、可迁移、可复利的维度,与模型规模化正交
Financial Machine Learning · Lecture 06

前沿争议(二):本课立场与课堂讨论

本课立场(要讲明):即便 harness 可以被生成,金融场景仍要求有人能说清"为什么是这个 harness"——可解释、可审计、可治理的前提是设计者理解设计。这正是合规边界与可验证性缺口的交集。

课堂讨论(可作讨论题 6):如果 harness 能自动生成,投研 Agent 的"设计文档"还有价值吗?谁为它的行为负责?

Financial Machine Learning · Lecture 06

2026 主流 harness 全景(一):厂商原生三强

本组各页是主流 harness 的横向速览(对应开源框架全景与选型决策树两页);逐系统细节见 arXiv:2609.00006。

harness ≠ 框架。框架是你 import 的库;harness 是能直接跑起来的运行时。以下来自 11+1 个编码 harness 的源码级横断解剖(arXiv:2609.00006,约 400 万行)。

系统 厂商 语言·规模 签名能力(论文口径)
Claude Code Anthropic TS · ~500K+ 延迟工具加载;prompt-cache 共享 fork;"别人抄的参照物"
Codex CLI OpenAI Rust · ~1.1M Agent 自维护跨会话记忆;工具调用即 V8 执行的代码
Gemini CLI Google TS · ~600K+ 模型路由当运行时调度;语料中唯一 A2A 服务器
Financial Machine Learning · Lecture 06

2026 主流 harness 全景(二):开源主力(上)

系统 语言·规模 签名能力(论文口径)
Mistral Vibe Python · 20–40K 中间件管线式循环;把 rewind 暴露到 ACP 上
OpenHands Python · 80–110K 资源锁定的并行工具;可把对手 harness 当 ACP 后端托管
Aider Python · 20–40K 13 种多态编辑格式;语料中唯一带排序的 repo map
Mini-SWE-Agent Python · ~5K 约 100 行的下限:七子系统全有,全是极简实现
Financial Machine Learning · Lecture 06

2026 主流 harness 全景(三):开源主力(下)

系统 语言·规模 签名能力(论文口径)
Hermes Python · ~600K+ 自改进 skill 循环;lineage compaction;verify-on-stop
Pi TS · 80–110K 一切皆扩展的核心;会话树版本控制
OpenCode TS · ~500K+ 客户端/服务器式 harness;语法感知的命令权限
OpenClaw TS · ~500K+ 网关式委派;回复前跑 Active-Memory 子 Agent(非 SWE 对照)
Financial Machine Learning · Lecture 06

2026 主流 harness 全景(三):三条读表结论

结论 1 · 循环已经不竞争了。 pi 的 loop 796 行、dsh 的 driver 515 行、deepagents 干脆不自建循环(委托 LangGraph)——没有一家靠循环做出差异;差异发生在扩展面、安全与会话记录。→ 支撑"垂直领域智能体=四件套"。

结论 2 · 市场已完成"工具 → 平台"转向(2026 上半年)。

  • 每家厂商都在发 harness;元层已经出现——Omnigent(Databricks)在 harness 之上编排 harness:23 个规范适配器+16 个别名、5 种集成模式、三层策略面(CEL+Python+LLM 分类器,fail-closed)
  • 同时 harness 变可导入 SDK、框架厂商反过来发 harness(harness–framework 合流),并出现市场、迁移成本工具、企业治理层

结论 3 · 扩展标准已分出胜负。 SKILL.md 技能包 9/11 领先 MCP 8/11;ACP 6 个系统,并长出第三角色 "harness hosting"(OpenHands 把 Claude Code/Codex/Gemini CLI 当可互换后端)。

harness 层已经"有得选、可替换、能托管"——创新应落在四件套,而不是重写循环。

Financial Machine Learning · Lecture 06

选型补充:成熟 harness 怎么选(一)

**选型决策树回答"自己写 vs 用框架";本页回答更前置的一问:直接把某个成熟 harness 拿来改,选哪个。

你的场景 优先考虑 理由
金融垂直 Agent 二次开发(本课推荐) DeepSeek Harness(dsh) 一切皆插件、配置即组合;有第三方源码解剖与预注册实测(dsh 专章:见「推荐落地底座」起各页)
要最成熟的生态与扩展 Claude Code 延迟工具加载、prompt-cache 共享 fork
要跨会话记忆 / 重工程 Codex CLI 自维护跨会话记忆;工具调用即代码
要云原生 + A2A 互通 Gemini CLI 语料中唯一 A2A 服务器
Financial Machine Learning · Lecture 06

选型补充:成熟 harness 怎么选(二)与三条纪律

你的场景 优先考虑 理由
要最薄的研究基线 Mini-SWE-Agent / Pi 约 100 行七子系统/会话树版本控制
要多 harness 统一编排 Omnigent(元 harness) 多厂商收在一个 API 后,含 fail-closed 策略面
要可自托管开源底座 OpenHands / OpenCode 并行工具与资源锁定/客户端-服务器架构

三条使用纪律:

  1. 先量成本再比功能——不同 harness 的每次成功成本可差 5–30 倍(见效率:按「成功任务成本」计价)
  2. 可验证性自己补——生产 harness 都没有外部可校验记录(见可验证性缺口)
  3. 扩展优先写 Skill,别改内核——SKILL.md 已是事实标准(9/11)
Financial Machine Learning · Lecture 06

Part 2 核心要点回顾(Takeaway)

  1. Agent = 模型 + Harness:模型可替换,Harness 决定行为、可控性与成本(见「Harness 工程」)
  2. Harness 七子系统:循环/LLM 集成/工具/记忆上下文/安全权限/编排/扩展+两个横切面——任何 harness 都要在七项上表态(详见七个规范子系统两页)
  3. 判据:DAG=Workflow;自循环+LLM 决策=Agent;金融从 Workflow 起步
  4. 运行时分层:Agent = 模型底座+Harness(运行时)+知识库+工具库+数据接口+Skills(教学框架);原"Harness 层"=编排子系统
  5. 设计维度:自治-可控-可观测三元权衡;单体先跑通再拆多体(Aider 的"编排故意缺席"是实证背书)
  6. 五协作模式:Crew/ReAct/层级/批判-改进/并行集成——按任务选模式
  7. 生态:MCP=Agent↔工具;A2A=Agent↔Agent;ACP+harness hosting=托管运行时;Skills 采纳率已超 MCP(9/11 vs 8/11)
  8. 选型第一问:自己写循环 vs 用框架——生产编码 harness 无一用通用框架;本课选 LangGraph 是教学与治理选择(见「选型决策树」)
  9. 效率:用 「成功任务成本」 而非 token 数;harness 是实验因子,"82%"不可搬运(见「效率:按「成功任务成本」计价」)
  10. 前沿与缺口:收敛五要素已稳定,外部可验证性三个 harness 全部为零——金融的下一个竞争轴(见「Harness 收敛」与「可验证性缺口」)

Financial Machine Learning · Lecture 06

Part 3 · 金融垂直领域 AI Agent 实战

需求分析 → 数据生态 → 论文案例回访(运行时分层解剖)→ 主轴案例从 0 到 1 实现
       (六步法:需求→架构→数据接口→知识库→工具库→Harness→Skills→测试评估与合规)
  • 本 Part 是"创造"层级核心:每个知识点都落成代码,代码全部进 L06-Lab/
  • 课堂演示脚本与作业骨架见后文各节
Financial Machine Learning · Lecture 06

需求分析 1:用户画像与任务分解

用户故事:投研分析师每天要读 10+ 份财报 → 想要"输入代码+问题,输出结构化分析要点"。

任务树(逐步分解):

财报解读 Agent
 ├─ 抓取:财报三表 + 行情 + (可选)公告
 ├─ 解析:数字入结构化字段(知识库层)
 ├─ 指标:ROE/毛利率/流动性……(工具库纯函数)
 ├─ 问答:自然语言问财报(RAG 检索增强)
 ├─ 报告:研报要点生成(提示词+结构化输出)
 └─ 合规:禁收益承诺/免责声明/人工确认

需求纪律:写清非目标(不提供买卖建议、不做盈利预测保证),边界即合规。

Financial Machine Learning · Lecture 06

需求分析 2:数据与工具盘点

数据项 来源候选 格式 频率 许可/合规
财报三表 AkShare / SEC EDGAR 表格/文本 定期 公开数据,注明来源
行情 AkShare / OpenBB 时序 日/分钟 免费源限频
公告/新闻 AkShare 公告接口/新闻源 文本 实时 版权注意转载边界
宏观 FRED 时序 日/月 免费 API key
  • 盘点表模板(入 L06-Lab/homework/project_template/project_spec.md)
  • 选型原则:免费优先、许可明确、失败可降级(缓存)
Financial Machine Learning · Lecture 06

需求分析 3:合规边界(金融 Agent 特有约束)

约束 工程落点
防数据泄漏 测试期数据隔离、walk-forward(见「治理 1」)
隐私 客户/内部数据不出域;本地部署选项(见「开源模型本地部署选项」)
可解释性 每个数字带来源引用;指标口径可查
人在环 关键输出(研报/建议类)人工确认后才可发布
投资建议边界 规则层禁止收益承诺/确定性预测;强制免责声明

合规不是"装饰",它是需求的一部分——在需求文档阶段就写进验收标准。

Financial Machine Learning · Lecture 06

数据生态 1:开源数据源速览

数据源 覆盖 许可/门槛 合规要点
AkShare A 股/港股/宏观/公告,免费 公开数据聚合,限频 标注来源;尊重上游限流
Tushare A 股/基金/宏观 积分制(部分免费) 遵守服务条款
OpenBB 多源聚合(美股等) 开源 SDK+API key 数据许可随上游
FRED 美国宏观 免费 API key 注明 series id 可复现
SEC EDGAR 10-K/10-Q 全文 公开免费 版权归申报公司,可引用

各源接口与状态撰写当日复核;课堂代码默认 AkShare+离线缓存(断网可演示)。
来源:各官网(检索 2026-09-28)

Financial Machine Learning · Lecture 06

数据生态 2:计算 / 回测 / 可视化工具链

环节 工具(Python) 说明
数据处理 pandas / numpy 时序清洗、对齐
财务指标 AkShare 内置 + 自写纯函数 口径自己定义(见「工具库层实现」)
建模/回测 scikit-learn;回测库撰写日核实 与 L04/L07 衔接
可视化 matplotlib / plotly 图表进报告
版本与依赖 requirements.txt 锁定 可复现(见「部署与成本控制」)

工具链原则:确定性计算全部交给纯函数——LLM 只做"理解与生成",不做算术。

Financial Machine Learning · Lecture 06

任务 → 数据/工具 → 合规要点映射表

任务 数据/工具 合规要点
财报抓取 AkShare/EDGAR 数据许可、时效标注
财报解析 知识库(分块+向量化) 引用原文段落
指标计算 工具库纯函数 口径定义明确
财报问答 RAG 检索 答案必须带引用
研报生成 提示词+结构化输出 禁收益承诺
合规检查 规则层+LLM 自检 免责声明强制
人工确认 人在环(interrupt) 发布留痕
全程审计 追踪/日志 可回放
Financial Machine Learning · Lecture 06

案例回访 1a:FinAgent——事实与更正(事实与更正)

  • 正式出版:ACM KDD 2024(第 30 届 SIGKDD 学术会议;DOI 10.1145/3637528.3671801)——不是 WWW'24(该会议无此文出版记录)
  • 真实架构:市场情报模块(多模态:数值+文本+K 线)+记忆模块(长期/短期+多样化检索)+双级反思模块+工具增强决策(技术指标+专家见解)
  • 实验:6 个数据集(股票+Crypto)、2022-06~2024-01(398 交易日)、9 个 SOTA 基线对比 6 项金融指标,平均利润提升 36%+;单一数据集收益 92.27%(相对提升 84.39%)
  • 来源:arXiv:2402.18485(摘要页,检索 2026-09-28);NTU 作者页 KDD'24 PDF;ACM DOI
Financial Machine Learning · Lecture 06

案例回访 1b:FinAgent——运行时分层解剖

要素 FinAgent 的对应
知识库 多样化记忆检索(长期记忆)
Harness 双级反思循环(低层洞见→高层决策)+工具增强决策
工具库 技术指标计算、整合型交易策略/专家见解
数据接口 多模态行情、K 线、新闻
Skills 两级反思与策略技能(内化于模块设计)
模型底座 多模态 LLM(论文为闭源商用模型时代设计)

关键洞察:Agent 策略牺牲部分收益换取更严格风控(股票实验 EW 回报高于 agentic;BTC 窗口短)——三元权衡的实证样本。

Financial Machine Learning · Lecture 06

案例回访 2a:FinRpt-Gen——任务与架构

  • 任务: Equity Research Report(ERR,研报"推荐理由")自动生成——首个 ERR 生成基准 FinRpt
  • 正式发表:AAAI-26,Proceedings of the AAAI Conference on Artificial Intelligence 40(1):507-515,DOI 10.1609/aaai.v40i1.37014(ojs.aaai.org 官方页确认)
  • 9 个 Agent、三段式:信息抽取(新闻/三表)→ 综合分析(财务/新闻/经营/风险)→ 预测;外加 Judge
  • FinRpt 数据符号表:概况 O |财务 F |公告 A |新闻 N |股价 P |市场 M
  • 来源:arXiv:2511.07322(v3, 2026-08-05);AAAI OJS(检索 2026-09-28)

注:论文摘要口径为"数据集构造整合 7 类金融数据",与正文符号表(6 类)的对照在撰写当日核对后再统一讲法(见交付说明【待核】项)。

Financial Machine Learning · Lecture 06

案例回访 2b:FinRpt-Gen——评估体系

评估维度 内容
11 指标评测体系 完成率/推荐准确率/BERTScore/ROUGE-L/数值引用率/LLM 六维质量分等
Judge Agent GPT-4o pairwise 对比+交换顺序消除位置偏差 → Adjusted Win Rate
效率数字 全流程 3-4 分钟/报告;LLM 判断与人工多数一致率 90%(45/50)
质量分 生成 4.1/5 vs 专家 4.3/5;Fleiss κ 0.67-0.82
  • 来源:arXiv:2511.07322;AAAI-26 正文(检索 2026-09-28)
Financial Machine Learning · Lecture 06

案例回访 3:TSci——时序预测多 Agent

  • TimeSeriesScientist(arXiv:2510.01538):首个 LLM 驱动的通用时序预测框架,四角色流水线
  • Curator(数据治理:Q/V 描述、缺失/异常、ACF/PACF)→ Planner(选模型)→ Forecaster(预测)→ Reporter(解释报告)
  • Leakage-safe:集成权重仅依赖验证集、滚动估计统计量、水平方向固定权重
  • 性能:8 个公开数据集,相对 LLM 基线 MAE 平均降低 38.2%
Financial Machine Learning · Lecture 06

案例回访 4:TradingAgents + FinCon

  • TradingAgents(arXiv:2412.20138):多智能体模拟交易团队(Researcher/Bull/Bear/Planner 等)辩论决策
  • FinCon(arXiv:2407.06567):manager-analyst 层级通信+风控/自我批判+概念化言语强化;单股与组合两个场景
Financial Machine Learning · Lecture 06

案例回访 5:SciAgents+ AI Scientist-v2 + DeepAnalyze

  • SciAgents(arXiv:2409.05556,Ghafarollahi & Buehler, MIT):本体知识图谱(33,159 节点/48,753 边,约千篇生物材料论文)+多 Agent(Ontologist/Scientist/Critic)+Semantic Scholar 检索;产出 7 字段假设 JSON,Novelty/Feasibility 1-10 评分;
  • AI Scientist-v2(arXiv:2504.08066):四阶段实验管理+Agentic Tree Search;
  • DeepAnalyze-8B(arXiv:2510.16872):自主数据科学(非金融);DataSciBench 59.91——仅次 GPT-4o,超 GPT-4-Turbo/Claude 3.5 Sonnet
Financial Machine Learning · Lecture 06

主轴案例:需求文档

项 内容
用户 投研分析师(学生扮演)
输入 --ticker 600519 + 自然语言问题(如"2025Q3 毛利率为何变化?")
输出 Markdown 分析报告(结论摘要/数据表/风险提示/免责声明/引用)
非目标 不给买卖建议、不做收益预测、不生成虚构数字
成功标准 指标口径正确且有来源;引用可追溯;合规规则全部通过;人工确认留痕
验收指标 指标准确率≥阈值(测试集)、引用率、合规拦截率、延迟/成本上限

完整模板见 L06-Lab/homework/project_template/project_spec.md——小组项目第一步。

Financial Machine Learning · Lecture 06

主轴案例:架构图(Agent 运行时分层 × 八节点)

                   用户提问(ticker + 问题)
                          │
        ┌─────────────────▼──────────────────────────────┐
        │ 数据接口层  AkShare 连接器 / EDGAR 连接器 / 缓存 │
        └─────────────────┬──────────────────────────────┘
        ┌─────────────────▼──────────────────────────────┐
        │ 知识库层    财报分块→向量库→检索(RAG)           │
        └─────────────────┬──────────────────────────────┘
        ┌─────────────────▼──────────────────────────────┐
        │ 工具库层    指标纯函数 / 合规规则 / 格式化        │
        └─────────────────┬──────────────────────────────┘
        ┌─────────────────▼──────────────────────────────┐
        │ Agent 运行时·⑥编排子系统 LangGraph 八节点状态图   │
        │   抓取→解析→指标→问答→报告→合规→人在环→输出        │
        │   + 检查点 + 熔断 + 每节点 trace                 │
        └─────────────────┬──────────────────────────────┘
        ┌─────────────────▼──────────────────────────────┐
        │Skills 层   "财报精读"/"研报要点"/"合规审查" 技能包│
        └─────────────────┬──────────────────────────────┘
                   人工确认(interrupt)→ Markdown 报告 + 审计日志

与七子系统的对应关系:图中原称"Harness 层"的方框 = Agent 运行时,它覆盖 ⑥编排子系统+⑤安全权限+⑦扩展+横切会话基座;工具库 = 子系统 ③(Tools & actions);知识库/数据接口 = 子系统 ③ 的下游资源;模型底座 = 子系统 ②(LLM integration);子系统 ①(Agent loop)与 ④(Memory & context)在 LangGraph 内由状态图与检查点承担。

Financial Machine Learning · Lecture 06

数据接口层实现(AkShare / EDGAR)

# L06-Lab/finrpt_agent/layers/data/akshare_connector.py
import akshare as ak

def fetch_balance_sheet(symbol: str) -> "pd.DataFrame":
    """获取资产负债表(新浪口径);失败时抛带上下文的异常"""
    df = ak.stock_financial_report_sina(
        stock=f"sh{symbol}", symbol="资产负债表")     # 接口名以 AkShare 文档为准
    return df

def fetch_daily_price(symbol: str, start: str, end: str) -> "pd.DataFrame":
    return ak.stock_zh_a_hist(symbol=symbol, period="daily",
                              start_date=start, end_date=end, adjust="qfq")
  • 工程要点:超时/重试/限流封装、离线缓存(parquet;课堂演示断网可跑)、字段口径文档化
  • 完整代码:L06-Lab/finrpt_agent/layers/data/(含 EDGAR 备用连接器与缓存)
  • 边界澄清(防误读):生产编码 harness 无一处用向量嵌入检索代码(用 ripgrep/tree-sitter/glob——确定性检索更快、更可解释);但这条结论限定于"代码检索"——金融文本是非结构化语义检索场景,RAG 仍然必要(见「知识库层实现」)。二者不是矛盾,而是"确定性检索优先,语义检索兜底"的分工。
Financial Machine Learning · Lecture 06

四件套落在财报解读 Agent 上

件 本案例的具体内容 代码位置(L06-Lab/)
本地知识库 财报正文+附注+模板库;每块带来源句柄 layers/kb/
数据接口 AkShare 三表+行情;EDGAR 备用;离线缓存 parquet layers/data/
skill 库 income_reader/report_writer/compliance_review layers/skills/
脚本库 ROE/毛利率/净利率等纯函数+单测 layers/tools/

验收口径:答案必带引用|断网可演示|技能有 schema 与自检|数字出自脚本。

两套语言对照:

运行时分层 四件套(本页观点)
数据接口层 / 知识库层 / 工具库层 / Skills 层 → 数据接口 / 本地知识库 / 脚本库 / skill 库
编排子系统+安全+扩展+会话基座 → 通用 harness(不自研)

一句话记忆:"通用层买现成的,领域层自己攒四件套"——小组项目评分按四件套逐项自检。

Financial Machine Learning · Lecture 06

知识库层实现(财报 RAG)

# 简化示意;完整实现见 L06-Lab/finrpt_agent/layers/kb/
chunks = chunk_text(financial_report_text)          # 按章节/段落分块(含来源句柄)
store.add(chunks)                                    # 向量化入库
hits = store.search(question, top_k=5)               # 检索
answer = llm(f"根据以下财报片段回答问题,并标注引用:[{hits}] {question}")
  • 设计要点:每块携带来源句柄(报表名/期间/页码)→ 生成时强制引用
  • 模板库(研报骨架、免责声明)也属于知识库层
  • 依赖(撰写日锁定版本):embedding 模型、向量库(如 chromadb/faiss 之一)
Financial Machine Learning · Lecture 06

工具库层实现(指标纯函数 + 单测)

def roe(net_profit: float, avg_equity: float) -> float:
    """ROE = 归母净利润 / 平均净资产(口径可配:期初/平均)"""
    if avg_equity == 0: raise ValueError("avg_equity 不能为 0")
    return net_profit / avg_equity

def gross_margin(revenue: float, cogs: float) -> float:
    if revenue == 0: raise ValueError("revenue 不能为 0")
    return (revenue - cogs) / revenue
  • 纪律:纯函数+单测(doctest/pytest),覆盖边界(除零/缺失)
  • 更多指标:净利率、流动比率、经营现金流/营收、资产负债率(口径注解逐项写明)
Financial Machine Learning · Lecture 06

编排子系统实现(本讲技术核心:LangGraph 八节点)

from langgraph.graph import StateGraph, END
from typing import TypedDict

class AgentState(TypedDict):
    ticker: str; question: str
    statements: dict; metrics: dict; report: str; logs: list

g = StateGraph(AgentState)
g.add_node("fetch",    fetch_node)      # 数据接口层
g.add_node("parse",    parse_node)      # 知识库层
g.add_node("metrics",  metrics_node)    # 工具库层
g.add_node("qa",       qa_node)         # 知识库+工具
g.add_node("report",   report_node)     # Skills: 研报要点
g.add_node("compliance", compliance_node)  # 规则+LLM自检
g.add_edge("fetch", "parse");  g.add_edge("parse", "metrics")
g.add_edge("metrics", "qa");   g.add_edge("qa", "report")
g.add_edge("report", "compliance")
g.add_conditional_edges("compliance", route_after_compliance,  # 合规不通过→report 重写
                        {"rewrite": "report", "pass": "human_confirm"})
g.add_node("human_confirm", human_node)  # interrupt 人在环
g.add_edge("human_confirm", END)
  • 编排子系统(⑥)= 胶水 + 可控性落点:状态 schema、条件路由、检查点(断点续跑)、熔断、每节点 trace
  • 它只是 Harness 的一层:完整 Harness 还含 ⑤安全权限、⑦扩展、①循环、④记忆与横切会话基座(详见七个规范子系统)——本页实现的是其中最能体现"可控性"的那层
  • 诚实限定:生产级编码 harness 无一处 import 通用 Agent 框架(见「选型第 0 问」);本课用 LangGraph 的理由是显式状态图便于教学与审计,不是"生产必须用框架"
  • 完整运行代码:L06-Lab/finrpt_agent/layers/harness/graph.py(依赖 langgraph>=1.2)
  • 可验证性落点(选做):每节点 trace 写成只追加日志+哈希链,使外部方无需信任运行时即可校验报告未被篡改(见「可验证性缺口」与小组项目选题 E)
Financial Machine Learning · Lecture 06

Skills 层实现(技能包 = 提示词 + 脚本 + 校验)

L06-Lab/finrpt_agent/layers/skills/
├── income_reader/      # 技能:财报精读
│   ├── prompt.md       # 角色/步骤/输出 schema(差/好对照见「提示词工程」)
│   ├── script.py       # 配套确定性代码(分块、抽取)
│   └── checker.py      # 自检:数字有来源?口径标注?
├── report_writer/      # 技能:研报要点(模板库)
└── compliance_review/  # 技能:合规审查(规则+LLM 双检)
  • 概念对照:Anthropic Agent Skills(2025-10 推出)、CrewAI Skills、AGENTS.md(AAIF 创始项目)
  • 实证更新:SKILL.md 事实上已趋同为标准——11 个生产编码 harness 中 9 个实现 SKILL.md 技能包(超过 MCP 的 8/11),路径 .agents/skills/ 跨厂商趋同,并出现注册表与信任分级;延迟加载(deferred loading)是主导模式(按需披露,省上下文成本,接「效率:按「成功任务成本」计价」)
  • 新议题:技能包的供应链——技能可由第三方甚至 Agent 自己编写(语料中已出现),因此**"装一个技能包"= 引入一份外部代码+提示词**:金融场景需做来源审查与信任分级(本课三件套打包法便于自审;检索 2026-09-29)
  • 来源:arXiv:2609.00006 §12.5;Anthropic/CrewAI 官方文档
Financial Machine Learning · Lecture 06

合规检查与人在环(护栏落点)

FORBIDDEN = ["建议买入", "目标价", "保证收益", "必涨"]        # 规则层一票否决
DISCLAIMER = "本报告由 AI 辅助生成,仅供学习研究,不构成投资建议。"
def compliance_check(report: str) -> tuple[bool, list[str]]:
    hits = [w for w in FORBIDDEN if w in report]
    return (len(hits) == 0, hits)
  • 三层合规:规则层(关键词/模式)→ LLM 自检层(语义级)→ 人在环(LangGraph interrupt,人工确认/修改后才能输出)
  • 警示——"可见 ≠ 可管":dsh 的运行时工具限制 ctx.tools.restrict() 在其官方文档中被明确描述为"一种可见性组合,不是权限边界"。把工具从模型视野里藏起来,不等于禁止它被调用——金融场景必须另设真实的权限边界(进程/文件/网络级),不能只靠提示词与可见性
  • 补充一点——人在环要留"可校验的痕":人工确认不能只是一条日志,应进入只追加、可重放的会话记录(见「可验证性缺口」),使"谁在何时批了什么"可被外部复核
  • 输出审计:报告版本、确认人、时间戳、全文 trace → 可回放(见「治理 1」)
Financial Machine Learning · Lecture 06

推荐落地底座:DeepSeek Harness(dsh)是什么

本课建议学生基于 dsh 二次开发,实现自己的垂直领域智能体。

维度 事实
出身 DeepSeek 官方 harness;2026-08-13 开源,MIT、TypeScript、developer preview
定位 service-locator 运行时——"连 agent loop 都是一行可替换的配置";哲学 everything is a plugin(约 230 个插件)
规模 loop driver 515 行(pi 796 行、deepagents 不自建)——循环不竞争,竞争力在插件面
本机可用 已装 @deepseek-ai/dsh@0.2.0-rc.2(2026-10-06)——现在就能跑
Financial Machine Learning · Lecture 06

为什么选 dsh 当教学底座

  1. 可读——核心循环 515 行、配置分层清晰:学生能读懂整个运行时,而不是面对黑盒框架
  2. 可替换——循环、工具、会话、压缩、模型适配都是配置行或插件:四件套各占一个扩展面(见「垂直领域智能体」)
  3. 可验证——内置 "可见 ⇒ 已记录" 运行时不变式与失败即报错的沙箱:金融最缺的两件事(见可验证性缺口),它已做好一半

与课程目标的关系:dsh 提供可审计的底座,把学生精力释放到领域四件套上——「四件套」主张的落地方式。

Financial Machine Learning · Lecture 06

dsh 的第三方证据(一):源码级横断研究选它为三案例之一

来源:arXiv:2608.23953(Dai Jiahong),三个哲学对立的 harness 源码级对照。

  • 三案例=deepagents(电池全含)/pi(极端极简)/dsh(一切皆插件)
  • 读法:pin 到 dsh-v0.1.1-rc.2,commit b150a551b,逐子系统对照并读 commit 历史
  • dsh 在一个接缝上直接复用了 pi 的实现(llm-pi-ai 依赖 pi 发布的 @earendil-works/pi-ai),源码内自述为 "design-verification twin"——作者据此不宣称三者独立发明
Financial Machine Learning · Lecture 06

dsh 的第三方证据(二):被预注册实验选作 harness 底座

来源:arXiv:2608.01347 附录 O。

项 内容
冻结 2026-08-19(baseline 激活门后、任何对照臂前);任务/提示/夹具/评测器/指标全不变——"The variable is the agent harness."
配置 dsh 0.1.0rc7;无人值守组合 dsh-jsonrpc-agent;模型固定 Claude Sonnet 5
规模 5 任务×5 臂×3 重复 = 75 次有效运行;15 个单元全部解出
结果 baseline $0.2753 → full $0.0490(−82.2%);effort 单臂 −74.7%(详见「效率:按「成功任务成本」计价」)
Financial Machine Learning · Lecture 06

dsh 架构解剖(一):七个子系统的 dsh 实现

用七个规范子系统解剖 dsh。看点:五个已收敛的要素它都做到强形态。

子系统 dsh 的实现(论文口径)
① 循环 515 行 driver,本身是一行可替换的配置(ctx.agentLoop)
② LLM 集成 adapter 配置+运行时能力解析;模型怪癖外置为数据
③ 工具 本地 bash+文件工具;注册表可暴露原生函数调用或 Code Mode
④ 记忆与上下文 事件溯源会话+"可见 ⇒ 已记录"断言+replace 操作;上下文自动压缩
Financial Machine Learning · Lecture 06

dsh 架构解剖(二):安全、扩展与两条金融关键设计

子系统 dsh 的实现(论文口径)
⑤ 安全与权限 bwrap / Landlock OS 级沙箱;失败抛错(SANDBOX_UNAVAILABLE)而不降级无沙箱;策略按调用而非按供应商
⑥ 编排 subagent 委派+workflow orchestration(可选)
⑦ 扩展 一切皆插件:配置行、钩子、Skills、MCP、插件市场

两条金融关键设计:① "可见 ⇒ 已记录"——模型看到过的一切必须能从日志重建,是运行时断言(审计地基);② 沙箱失败即抛错——宁可拒绝执行。

⚠️ 边界:只到运维可重建,未达第三方可校验;其文档坦白 ctx.tools.restrict() 是"可见性组合,不是权限边界"——少看见 ≠ 不能做。

Financial Machine Learning · Lecture 06

dsh 插件与配置:二次开发的接口在哪(一)

插件机制四条规则(论文口径):

规则 含义
插件=实现某服务的对象 没有专用基类、没有注册表清单
按稳定 context key 解析 消费方从不 import 实现 → 可整片替换能力世界
加载顺序用 inject 声明 依赖声明式,不靠 import 顺序
注册是可逆副作用 reload 时自动 unwind → 可热重载、可回退

配置=分层 patch:

空根 → bundle 层(dsh-base / dsh-sdk-minimal / dsh-web-app / …)
     → profile 自己的 cordis.patch.yml
     → home 级 $DSH_HOME/cordis.patch.yml
     → --patch 覆盖层            每条都是一层 patch,按序叠加成最终配置树
Financial Machine Learning · Lecture 06

dsh 插件与配置:二次开发的接口在哪(二)

约 230 个插件可归成五类——正好对应四件套与护栏:

类别 代表插件 对应
工具 dsh-tool-bash/-fs/-web/-todo/-subagent 数据接口
技能 dsh-skill/-filesystem/-office skill 库
会话 dsh-session-persistence-jsonl/-projection/dsh-compaction-* 本地知识库+审计取数
Financial Machine Learning · Lecture 06

dsh 的四个可运行入口

| 安全 | dsh-sandbox-policy/dsh-user-approval/-permission-presets | 合规护栏、人在环 |
| 模型/工作流 | dsh-llm-deepseek/dsh-llm-pi-ai/dsh-workflow/dsh-goal | 换底座、多步流水线 |

入口:dsh --profile sdk-minimal|dsh --profile headless "任务"|dsh plugin --profile <name> <pnpm args>

Financial Machine Learning · Lecture 06

基于 dsh 的二次开发六步路线(学生项目怎么做)

步 做什么 落在 dsh 的哪个面 交付物
1 起底座 dsh --profile sdk-minimal,跑通一个内置任务 profile 布局 基线+一份 session JSONL
2 接数据接口 写"取数工具插件"(行情/财报/宏观) 工具类插件 代码+单测+缓存策略
3 建本地知识库 语料入库,经 MCP/会话投影进上下文 dsh-mcp-*/-session-projection 语料清单+版本+引用可追溯
Financial Machine Learning · Lecture 06

六步路线(下):脚本库、skill 库与护栏

| 4 写脚本库 | 指标纯函数、口径校验、对账断言 | 工具/脚本面 | 纯函数+doctest |
| 5 编 skill 库 | 领域流程写成 SKILL.md(角色/步骤/schema/自检) | Skills 面 | 可复用技能包 |
| 6 上护栏与审计 | 权限预设、人在环、用 session JSONL 做成本复盘 | dsh-user-approval/-session-* | 合规自查表+成本报告 |

Financial Machine Learning · Lecture 06

dsh 二次开发的四条工程纪律

  1. 不要动循环——循环是配置行(ctx.agentLoop);改循环会让你失去官方升级能力
  2. 保持可升级——能力一律走插件/配置/Skill,不 fork 内核;下次 dsh 升级你不能脱队
  3. 成本按成功任务计量——从 session JSONL 取数(步数、token、缓存、工具调用、压缩事件),算 cost per successful task(见效率:按「成功任务成本」计价)
  4. 可验证性自己补一层——dsh 到"运维可重建"为止;要"外部方可校验"就得自己加只追加日志+哈希链(见「可验证性缺口」与「编排子系统实现」)

为什么强调:前两条保护升级能力,后两条回应金融的审计与成本要求——对应评分表"合规与可观测"那 15 分。

Financial Machine Learning · Lecture 06

最小骨架:一个取数工具 + 一个技能包

# 一个"取数工具"插件的形状(概念示意,非 dsh 官方 API)
@tool("get_financials")                  # 工具名 → 模型可见
def get_financials(symbol: str, period: str) -> dict:
    """取指定标的、指定期间的财报三表(口径见 docs/口径.md)"""
    df = cache_or_fetch(symbol, period)  # 数据接口:缓存 + 降级
    return {"rows": df.to_dicts(), "source": "akshare", "as_of": today()}
Financial Machine Learning · Lecture 06

最小骨架(二):技能包结构与四件套归位

skills/financial_reading/
├── SKILL.md        角色 / 步骤 / 输出 schema / 自检清单
├── script.py       配套确定性代码(分块、抽取)
└── checker.py      自检:数字有来源?口径标注?

这套骨架已构成一个最小垂直智能体:工具=数据接口、SKILL.md=skill 库、script/checker=脚本库、语料=本地知识库(四件套齐)。

与小组项目的关系:小组项目的选题 E(可外部校验的审计记录)与本题最契合——在 dsh 上补齐第 4 条纪律,就是本课最高阶的交付。

Financial Machine Learning · Lecture 06

三条落地路线对照:自研 / 框架 / dsh 二次开发

维度 ① 自研循环 ② 框架(本课主轴代码) ③ dsh 二次开发(推荐进阶)
起点成本 最高(全部自己写) 中(框架给状态图与检查点) 最低(起一个 profile 即可跑)
生产实践证据 11 个生产 harness 全部手写循环、无一处 import 通用框架 无生产 harness 采用 被 2608.23953 选为三案例之一;被 2608.01347 选作实验底座
可验证性 自己造 自己造 到"运维可重建"为止,外部可校验仍需自建
Financial Machine Learning · Lecture 06

三条落地路线对照(二):本课立场

本课立场: ① 教学用 ②——显式状态图最适合讲清"可控性落在哪里";② 工程推荐 ③——通用层交给成熟 harness,预算投四件套;③ ①留着当参照——知道生产 harness 都是手写循环,就不会把"用框架"误当成"工程成熟"。

三者不冲突:②与③实现的是同一个四件套,换的只是通用层——验证「四件套」的核心观点。

Financial Machine Learning · Lecture 06

课堂演示 1:正常链路

cd L06-Lab && python -m finrpt_agent.demo --ticker 600519 --question "2025Q3 毛利率为何变化?"

预期输出(八节点逐步打印):

  1. fetch:三表+行情抓取成功(或命中缓存) → 2. parse:关键字段入库
  2. metrics:毛利率/ROE 计算(含口径) → 4. qa:带引用回答
  3. report:研报要点(摘要5条+数据表+风险) → 6. compliance:规则全过
  4. human_confirm:人工确认(演示:批准) → 8. 输出 Markdown 报告+审计 JSON

技术保障:prepare_demo_data.py 预取缓存;单步超时;固定随机种子——课堂不翻车。

Financial Machine Learning · Lecture 06

课堂演示 2:故障与拦截

注入故障 系统行为 教学点
行情接口超时 熔断→读缓存降级 防护 1(熔断)真实生效
财报缺某期 显式报错+提示 不编数、不猜数
模型输出"建议买入" 合规节点拦截→重写→仍需人审 护栏三层
连续失败 预算/轮次上限触发 成本控制

演示脚本:L06-Lab/finrpt_agent/fault_demo.py(故障可离线注入,不依赖外网)。

Financial Machine Learning · Lecture 06

测试与评估(接 Part 4 评测方法)

层 内容
单元测试 指标函数(除零/缺失边界)、合规规则
回放测试 demo 会话记录→回归(输出变化即告警)
评估集 ≥20 条财报问答(含标准答案与引用检查点)
双评估 LLM-as-Judge(注明顺序/自利偏差)+人工抽样复核
指标 指标准确率/引用率/合规拦截率/延迟/成本

评估集模板与评分细则:L06-Lab/homework/project_template/evaluation_plan.md。

Financial Machine Learning · Lecture 06

开源模型本地部署选项(Ollama / vLLM)

底座方案 模型示例 资源需求(约) 适用
Ollama(一键) Qwen3 量化档 / DeepSeek 量化档 8–24GB 显存(取决于量化) 课程项目、个人实验
vLLM(高吞吐) Qwen 全精度档 多卡/大显存(撰写日复核具体档位) 批处理、小组服务
  • 切换一行代码:本地端点 OpenAI 兼容 → 换 base_url 即可,Harness 代码零改动
  • 资源表数字在撰写当日按 Ollama/vLLM 官方模型卡复核;成本对比(API vs 本地)见「部署与成本控制」
  • 来源:ollama.com / vllm.ai(检索 2026-09-28)
Financial Machine Learning · Lecture 06

部署与成本控制

项 做法
成本上限 Token 预算/轮次上限(见「选型决策树」);月度限额熔断
缓存 数据与中间结果缓存(fetch/embeddings)
日志与回滚 版本化输出+检查点回滚(见「工程防护 2」)
灰度 先内部用户,再逐步放开;人审比例逐步下调但要留底
费用量级 API 按 token 计费、本地按硬件折旧——以写稿当日厂商价目为准,课件只讲量级与方法
Financial Machine Learning · Lecture 06

课堂小练 3:现场跑通一小段

python -c "
import akshare as ak
df = ak.stock_financial_report_sina(stock='sh600519', symbol='资产负债表')
print(df.head(3))
"
  • 任务:① 跑通数据拉取;② 现场写 roe(net_profit, avg_equity) 并算出一期 ROE;③ 指出一个合规要点
  • 无网络时改用 L06-Lab/examples/ex1_function_calling.py 的离线模式(先 prepare_demo_data.py)
Financial Machine Learning · Lecture 06

实战复盘:六步 Checklist 与十个常见坑

六步:需求✅ → 架构✅ → 数据接口✅ → 知识库/工具库✅ → Agent 运行时(编排子系统)✅ → 测试/合规部署✅

十一个常见坑(课堂也会碰到的):

  1. 接口限流未处理(429) 2. 字段口径混淆(期初/平均净资产) 3. 时区/自然日边界 4. 数据许可不清 5. 幻觉日期/虚构公告 6. 密钥写进代码 7. 无缓存导致演示翻车 8. 合规规则只做表面 9. 没有"可被外部校验"的记录(只有 trace 不够) 10. 一开始就上多 Agent(Aider 的"编排故意缺席"是反例) 11. 把缓存与 token 节省当成效率改进(要按成功任务成本算)

输入缺陷前置检查:开工前先澄清范围(scope)与假设——误导性架构提示会让推理成本 2.61×,范围模糊会让成功率掉到 83%(见「常见失败模式」)。

Financial Machine Learning · Lecture 06

案例扩展:把运行时分层搬到其他场景(B/C/D)

场景 数据接口 知识库 工具库 编排子系统差异点
B 舆情监控 新闻源 事件/主体知识 情感分类、异动规则 定时触发+预警路由
C 合规客服 政策/法规库 法规 RAG 话术校验 严格护栏+强制人审
D 量化信号 行情/因子数据 因子说明文档 因子计算、回测 与 L04/L07 衔接;隔离测试期
  • 小组项目题目菜单即 A/B/C/D
  • 前沿观察:DeepSeek Harness(官方、一切皆插件、preview)与 Pi/pi-agents 可作为进阶自我探索主题——本课作业默认 LangGraph
Financial Machine Learning · Lecture 06

FAQ

  • 数据版权:公开数据可引用转述;整库搬运/商用需查许可(AkShare 上游为公开接口)
  • 接口不稳定:缓存+降级+重试;演示永远有离线预案
  • 财报是扫描件:多模态模型/OCR 预处理(见「上下文与多模态」)
  • 报表太长:分块+检索(见「知识库层实现」),而非整段塞上下文
  • 多 Agent 失控:限额+熔断+人在环+紧急停止(见「工程防护」)
  • 模型胡说:引用强制+规则拦截+人工复核(见「合规检查与人在环」)
Financial Machine Learning · Lecture 06

Part 3 核心要点回顾(Takeaway)

  1. 需求先行:用户故事→任务树→非目标→合规边界,写进验收标准
  2. 运行时分层落地:数据接口/知识库/工具库/编排子系统/Skills 各司其职,代码目录即架构
  3. 确定性计算交给纯函数+单测;LLM 只做理解与生成
  4. Harness=可控性落点:状态图、检查点、熔断、trace——金融 Agent 的"方向盘"
  5. 护栏不可省:规则层+自检层+人在环;审计可回放
  6. 论文回访教给我们:真实架构常常比想象简单,虚构细节会毁掉可信度(FinAgent 教训)
Financial Machine Learning · Lecture 06

Part 4 · 评估、治理与学术前沿

Agent 评测基准(通用→金融) → 评测方法学 → 金融风控与合规治理
        → 学术研究场景与方法论 → 顶刊文献 → 展望
  • 承接 Part 3:怎么证明 Agent "真的行"(基准)、怎么管住它(治理)、怎么用它做研究(学术)
Financial Machine Learning · Lecture 06

通用 Agent 评测基准

基准 出处 关键数字
GAIA HFAI+Meta FAIR;ICLR 2024(官方 proceedings 页);arXiv:2311.12983 466 题;人类 92% vs GPT-4+插件 15%——"对人类简单、对 AI 难"
AgentBench 清华 THUDM 等;ICLR 2024;arXiv:2308.03688 8 个交互环境(操作系统/数据库/游戏……)
  • GAIA 的意义:通用智能体基准,"工具使用+多步推理"是分水岭
  • 局限:通用基准的金融知识密度低 → 需要金融专用基准(见「金融基准」)
Financial Machine Learning · Lecture 06

工具-用户交互基准:τ-bench 与 τ²-bench

  • τ-bench(Sierra + Princeton,arXiv:2406.12045):Tool-Agent-User 三方交互评测,retail/airline 两个客服域;"agent harness"术语出处(见七个规范子系统一节)
  • τ²-bench(Sierra 官方继任,arXiv:2506.07982):双控(dual-control)环境,组合式任务生成器,覆盖对话式 Agent 的更多真实场景
Financial Machine Learning · Lecture 06

金融基准:FinBen 与 FinEval

基准 出处 规模
FinBen AI4Finance/The-FinAI;NeurIPS 2024 Datasets & Benchmarks(papers.nips.cc 确认);arXiv:2402.12659 36 数据集/24 任务/7 方面(含交易、Agent/RAG 评测;具体任务口径撰写日核对)
FinEval 复旦大学;NAACL 2025 Long(aclanthology 确认);arXiv:2308.09975 8,351 题:学术 4,661/行业 1,434/安全 1,640/金融 Agent 616
  • 来源:NeurIPS/ACL 官方页面(检索 2026-09-28)
Financial Machine Learning · Lecture 06

评测方法学:怎么"评"才算数

  • 指标维度:①成功 × ②端到端成本(cost per successful task) 为首要双指标,其后才是正确性(含引用核验)、延迟、安全性、合规拦截率
    → 依据:token 与缓存计数只是轨迹的测量值,不是充分的优化目标(arXiv:2608.01347 摘要)
  • 评估必须控制"决定轨迹的系统变量":prompt、effort、harness 是相互作用的实验因子,不是独立旋钮——同一提示词在不同 harness 下效果可反向(见效率:按「成功任务成本」计价)
  • LLM-as-Judge 的偏差:顺序偏差、自利偏差(偏爱自己)、长度偏差 → 缓解:交换顺序求 Adjusted Win Rate(FinRpt-Gen 做法)、双 judge、人工抽样
  • 评估集防污染:测试题不入提示词/不入知识库训练语料(与「治理 1」防泄漏同源思想)
  • 结论:单一指标不可信;金融场景 = 自动指标 + LLM 评审 + 人工抽样 三件套
  • 报告纪律:报告效率时必须连同 harness 与 effort 设置一起报告——否则数字不可比、不可复现(这是 2608.01347 的方法学主张)
Financial Machine Learning · Lecture 06

金融风控与合规治理 1:防泄漏与审计回放

  • 防数据泄漏:隐藏测试期 realized returns、walk-forward 滚动验证、评估窗口与训练窗口严格隔离(TSci leakage-safe 同款思想)
  • 审计回放:UUID 追踪每个决策与工具调用 → 出问题可完整回放(通用工程机制;v2026 曾误挂 FinAgent 论文,已改正归口)
  • 升级——"可回放"不等于"可验证":三个生产级 harness 的共性空白是"外部方无需信任运行时即可校验、防篡改的记录"(见可验证性缺口);金融/合规必须自己补这一层:哈希链+可信时间戳+第三方可校验的溯源(落点见「合规检查与人在环」与小组项目选题 E)
  • 人在环:关键输出人工确认;异常自动升级;保留人工接管接口

金融 Agent 的"事故复盘"三问:数据泄漏了吗?决策有痕吗?当时人在吗?

补充三问(领域溯源):这份数据截止到何时(as-of)?这个结果能否出域?成本上限是否守住了(可否被证明)?

Financial Machine Learning · Lecture 06

金融风控与合规治理 2:熔断、可观测与校验

  • 熔断/限流/心跳:接口熔断、预算熔断、会话心跳(见「工程防护 1」)
  • 三层可观测性:系统级/Agent 级/业务级(本页)
  • 最低校验配置回顾(回扣「最低校验配置」页页):两模型交叉验证、单测、规则约束、人工复核——从 Part 1 到 Part 4 贯穿全讲的底线
Financial Machine Learning · Lecture 06

学术研究场景与方法论

LLM 在金融研究中的三角色:

  1. 文本度量器:构造新测度(情绪、竞争力、专利文本……)——见「顶刊文献」
  2. 预测器:直接预测收益/宏观变量——见「顶刊文献」
  3. 模拟器:生成代理行为(存款人、投资者、通胀预期)——见「评测方法学」

研究最佳实践(学术规范):

  • 可复现:模型版本、提示词、随机种子、数据版本全公开
  • 防泄漏:报告期拆分严格(与 L07 起的实证资产定价方法论衔接)
  • 透明申报:AI 辅助内容的贡献声明(课程与期刊规范一致)
Financial Machine Learning · Lecture 06

顶刊文献 1:LLM 与资产定价(2024–2026 正式发表)

  • Lopez-Lira & Tang, "Can ChatGPT forecast stock price movements? Return predictability and large language models", JFE 184:104335(2026-10),DOI 10.1016/j.jfineco.2026.104335【Crossref 复验通过】——LLM 解读新闻文本预测收益,资产定价核心证据
  • 背景锚点:Cao et al., "From man vs. machine to man + machine", JFE 160 (2024) 103910(人机结合写研报);Zhou et al., Management Science 70(12) (2024)(中文文本机器学习定价)
Financial Machine Learning · Lecture 06

顶刊文献 2:LLM 文本测度与公司金融

  • Acikalin, Caskurlu, Hoberg & Phillips, "Intellectual property protection lost and competition…", JFE 182:104306(2026-08),DOI 10.1016/j.jfineco.2026.104306【复验通过】——LLM 文本测度用于公司金融/政策研究
  • Jha, Liu & Manela, "Does Finance Benefit Society? A Language Embedding Approach", RFS 39(5):1227-1266,DOI 10.1093/rfs/hhaf012【复验通过】——LLM 度量数百年书籍中的金融情感
  • 值得跟进:Kim, Muhn & Nikolaev, "Financial Statement Analysis with LLMs"——截至检索日仍为 SSRN 预印本,不作"正式发表"引用(录用动态见交付说明)
Financial Machine Learning · Lecture 06

顶刊文献 3:LLM 方法论与模拟实验

  • de Kok, "ChatGPT for Textual Analysis?", Management Science 71(9):7888-7906,DOI 10.1287/mnsc.2023.03253【复验通过】——生成式 LLM 做会计/金融文本的方法论(案例:非答案检测 96% 准确率、错误率降 70%)
  • Kazinnik, "Bank Run, Interrupted…", Management Science(在线 2026-07-06,未分配卷期),DOI 10.1287/mnsc.2024.06807【复验通过】——LLM 模拟储户挤兑,监管压力测试
  • Zarifhonarvar, "Generating inflation expectations with LLMs", JME 157:103859(2026-01),DOI 10.1016/j.jmoneco.2025.103859【复验通过】
  • Cheng, Lin & Zhao, "Does generative AI facilitate investor trading?", JAE 80(2-3):101821(ChatGPT 停服作外生冲击);Bertomeu et al., "The impact of generative AI on information processing", JAE 80(1):101782(意大利禁令准自然实验)【均已 Crossref 复验】
Financial Machine Learning · Lecture 06

Part 4 要点回顾与研究前沿展望

回顾:① 评测=通用基准(GAIA/AgentBench/τ-*)+金融基准(FinBen/FinEval)+方法学三件套;② 治理=防泄漏+审计回放+熔断+可观测+人在环;③ 学术=三角色+可复现规范;④ 8 篇顶刊文献全部经 Crossref 卷期/DOI 复验

前沿展望(2026):

  • 协议标准化:MCP/A2A 进入基金会治理;ACP+harness hosting(托管彼此的运行时)成第三条线;Skills 采纳率已超 MCP(9/11 vs 8/11)——Agent 互操作从"每家一套"走向标准
  • 评测体系化:τ²-bench 双控环境、FinEval Agent 类目扩张;"成功 × 端到端成本"双指标并强制报告 harness/effort 设置
  • Harness 演进:从手工设计走向可训练、可生成的 harness 智能(JIT-Agent:与模型规模化正交的第三维度,见「前沿争议」)
  • 可验证性成为下一竞争轴:provenance 敏感领域(金融/合规/医疗)需要"外部方可校验、防篡改"的记录——现有生产 harness 全部为零(见可验证性缺口)
  • 小模型协作:专用小模型组合击败通用大模型(TSci/DeepAnalyze 证明)
  • Flow Engineering:从提示词工程走向轨迹工程(数据收集→模式挖掘→自适应优化)
  • 课堂作业即前沿练习:你的小组项目就是一个"金融垂直 Agent"的评测样本

Financial Machine Learning · Lecture 06

个人作业

作业 1 · 提示词工程改写

  • 把"分析 XXX 公司财报"改写成"好"提示词(要素:目标+成功标准/约束/结构化输出/防幻觉条款)
  • 评分要点:要素齐全 4 分×5;可复现性(他人可执行)2 分

作业 2 · 组件级工具函数(1 个函数 + 运行截图)

  • 用 AkShare(或缓存数据)封装 fetch_balance_sheet(symbol)+roe(net_profit, avg_equity);类型标注+docstring+doctest
  • 接入一次函数调用对话(OpenAI 兼容端点或 Ollama;密钥用环境变量);截图提交
  • 模板:L06-Lab/homework/hw2_data_tool.py
Financial Machine Learning · Lecture 06

讨论问题+文献阅读

  1. 你研究领域的哪些任务适合 Agent?判断依据是什么(Workflow vs Agent 判据)?
  2. 强自治与强可控之间,金融应用如何权衡?用财报解读案例具体化(三元权衡)。
  3. 如何评估一个金融 Agent 的可靠性?基准与治理各做什么(Part 4)?
  4. 多 Agent"多数偏置"有什么好的解决方案(MoMoE 教训、外部验证、Judge)?
  5. 未来 2-3 年 Agent 会如何改变金融行业?哪些岗位会先发生变化?
  6. 如果 harness 可以自动生成(见「前沿争议」),投研 Agent 的"设计文档"还有价值吗?谁为它的行为负责?——用「可验证性缺口」与「合规检查与人在环」回答。
  7. 生产级编码 harness 无一处使用通用 Agent 框架(见「选型第 0 问」)。那么"用框架"在金融场景到底是降低风险还是引入不可控依赖?请给出你的判据。

文献阅读作业(4 组精读,八篇分配):每组 2 篇,回答"用了什么 LLM 方法/识别出什么机制/对你项目的启示"。

Financial Machine Learning · Lecture 06

<font size=5>

</font>

<font size=5>

</font>

> 勘误:v2026 将"Coordinator+学科 Worker"架构归为 SciAgent——该内容实为已撤稿的 OpenDCAI/SciAgent(arXiv:2511.08151,2025-11-17 作者主动撤稿,见 arXiv 撤稿页),本版已剔除;SciAgent(2409.05556)正确内容见「案例回访 5」。

引用:框架能力以各官方文档为准;实证见 arXiv:2609.00006 §13.2(检索 2026-09-29)

- **虚构内容已全部删除**:MCP 控制消息、UUID=SHA256、心跳监控等在论文中不存在(全文检索 0 命中)

- 教学价值:**leakage-safe 设计**是金融时序 Agent 的必考题(见「治理 1」呼应)

- 教学价值:辩论式协作(多视角对抗)与层级式协作(分工管控)代表了两种多 Agent 组织哲学

> 【新图】正式版由授课者美化;结构即 `L06-Lab/finrpt_agent/layers/` 目录。

- 教学价值:技能包=可复用知识资产,小组项目之间可交换验证

- **状态说明**:两者截至检索日(2026-09-28)为 arXiv 预印本+Sierra 官方记录,**不冒充顶会发表**

- 教学价值:金融客服/投顾对话类 Agent 可直接套用其任务模板做评估

- 教学设计:小组项目的评估集可采样自 FinEval 风格题目+自建财报问答集(见「测试与评估」)

- 教学落点:Part 3 财报解读 Agent 的"分析报告→信号"延伸即此类研究问题

**用 arXiv:2605.18747 的六条开放挑战收尾**(每一条都对应本讲一个落点): ① 超越最终任务成功率的评测② 不完整反馈下的验证(见「合规检查与人在环」)③ **无回归的 harness 改进**(见「效率:按「成功任务成本」计价」与「工程防护」两节)④ 多 Agent 间一致共享状态(见「并行集成」与「验证样本的两个用途」)⑤ **安全关键动作的人类监督**(见「合规检查与人在环」与「工程防护 1」)⑥ 多模态环境扩展(见「上下文与多模态」)

### 小组项目:用开源工具实现一个金融垂直领域 AI Agent(讨论) <font size=5> **题目菜单(5 选 1)**:A 财报解读与 RAG 问答 Agent(默认,扩展多公司/多期对比)|B 舆情监控 Agent|C 合规客服/政策问答 Agent|D 量化信号 Agent|**E 可外部校验的金融 Agent 审计记录(高阶选题)** > **选题 E 说明**:来自「可验证性缺口」的**前沿缺口**——生产级 harness 全部缺少"外部方无需信任运行时即可校验、防篡改"的记录。E 题要求为主轴案例补上:**只追加的会话记录+哈希链+可信时间戳+as-of 数据溯源+成本上限的可证明性**。这不是课程练习,而是**真实的研究缺口**(2608.23953 明确把"领域溯源"列为下一竞争轴)。 **验收标准**:需求文档(≤1 页)+**Agent 运行时分层架构图(并标注对应七个规范子系统中的哪几项)**+可运行代码(基于 project_template)+≥10 条评估用例+合规自查清单+现场演示 **加分观测点(不改变总分)**:① 成本报告是否用"**成功任务成本**"口径;② 是否说明**为什么用/不用框架**(选型决策树判据);③ 审计记录是否**可被外部方校验**(选题 E 则为核心要求) **评分量表(100 分)**: <div style="display:flex;justify-content:center"> | 项 | 分值 | 要点 | |---|---|---| | 需求与设计 | 20 | 用户故事/非目标/运行时分层架构(+七子系统标注) | | 实现正确性与可运行性 | 35 | 运行时分层齐全+2;**编排子系统含护栏与追踪+3** | | 评估与测试 | 20 | 用例质量、双评估 | | 合规与可观测 | 15 | 防泄漏/免责/日志回放;**可被外部校验的记录**(见可验证性缺口) | | 演示与文档 | 10 | 现场演示 + README | </div> **运行环境**:Python 3.10+、`requirements.txt` 版本锁定、默认 Ollama 本地模型(零成本)或自备 key;`L06-Lab/homework/project_template/` 提供骨架。 </font> ---

--- ### 附录 A:术语表(更新)与讲义精华归档 <font size=3> <div style="display:flex;justify-content:center"> | 术语 | 定义 | |---|---| | Agent | LLM 驱动的感知-规划-行动-反思自主系统(本课教学定义) | | **Harness** | **模型之外的整个运行时**(=七个规范子系统);τ-bench 首创"agent harness"用法,harness engineering 于 2026 年初成为学科(arXiv:2609.00006 §2.1) | | **Agent 运行时** | 本课对"模型+Harness+知识库+工具库+数据接口+Skills"整体的称呼(教学框架) | | **编排子系统** | 七个规范子系统之 ⑥(原 v2027 误称"Harness 层");本课 LangGraph 实现即此层 | | **七子系统** | Agent loop/LLM integration/Tools & actions/Memory & context/Safety & permissions/Orchestration/Extensibility+两横切面(界面层、会话基座) | | **成功任务成本** | cost per successful task——由 Agent 轨迹诱发的端到端成本,效率的终端指标(arXiv:2608.01347) | | **外部可验证性** | 外部方**无需信任运行时**即可校验的防篡改记录——三个生产 harness 全部为零(arXiv:2608.23953 §7) | | Skills | 可复用技能包=提示词+脚本+校验(Anthropic/CrewAI 概念) | | Workflow | 确定性管道(DAG),决策在编译期 | | ReAct / RAG / Function Calling | 推理-行动循环/检索增强生成/函数调用 | | MCP / A2A | Agent↔工具 / Agent↔Agent 的标准协议 | | 记忆 / Guardrails / OODA | 状态与知识/行为护栏/教学类比框架 | | Walk-forward | 严格时序隔离的滚动验证 | </div> **原讲义长文精华归档(6 条)**:场景详析四类、局限应对四法、大学生/专业人士/学术三类最佳实践、AI 伦理四则、未来展望与风险、监管适应——详见交付说明附录归档(不进正片)。 </font> --- ### 附录 B:框架对照表、推荐资源与致谢 <font size=5> <div style="display:flex;justify-content:center"> | 框架 | 流派 | 优势 | 不足 | 版本/检索日 | |---|---|---|---|---| | LangGraph | 严谨编排 | 显式可控、检查点 | 学习曲线 | 1.2.12(2026-09-28) | | AG2 | 角色流水线 | 对话式多体 | 状态流不如图式 | 1.1.0 | | CrewAI | 角色流水线 | 角色化快 | 复杂状态弱 | 1.15.22 | | LlamaIndex | 数据/RAG | 检索原生 | Agent 较薄 | 0.14.25 | | OpenAI Agents SDK | 轻量 | 上手快 | 生态绑定 | 0.22.x | | PydanticAI | 轻量/类型 | 结构化输出强 | 生态新 | 2.51.0 | | smolagents | 轻量/代码 | 极简 | 可控性弱 | 1.26.0 | | Agno | 轻量 | 维护接续 | 迁移波动 | 3.0.11 | | Dify / n8n | 平台 | 可视化 | 定制受限 | 1.17.x / 2.40.x | | DeepSeek Harness | 新丁 | 官方、插件化 | preview/TS | 2026-08 起(preview) | | Pi/pi-agents | 新丁 | 预算护栏好 | 生态早期 | 0.21.0 | </div> **推荐资源(全部附 URL 与检索日期 2026-09-28)**:OpenAI/Anthropic/Google 官方 Agent 指南(openai.com/agents 等撰写日复核);arXiv 论文清单(本讲引用的 arXiv 号与 DOI);数据源官网(akshare.akfamily.xyz、tushare.pro、openbb.co、fred.stlouisfed.org、sec.gov/edgar);基准主页(huggingface.co/gaia-benchmark、sierra.ai、FinBen 官方仓库)。 > 感谢你的学习与时间——**现在,去实现你自己的金融 Agent 吧。**(Questions welcome) </font>