FIS×Anthropic Financial Crimes 模式拆解
B14(Day 131-140)把内部规则基线接上了外部 ground-truth(IBM AMLworld 真标签)做去循环 eval,解决的是「数字可信不可信」。从今天起的 B15 把视角抬高一层:先搞清楚一个生产级金融犯罪 Copilot 应该长什么样,再围绕它建对抗/HITL 测试套件。今天是 B15 的开篇——拆解 2026-05 FIS×Anthropic Financial Crim
阶段: B15 · FIS×Anthropic 模式 + 对抗/HITL 套件(Day 141-150) 标签: #financial-crimes #hitl #aml-copilot #context-engineering
今日导引(由浅入深)
B14(Day 131-140)把内部规则基线接上了外部 ground-truth(IBM AMLworld 真标签)做去循环 eval,解决的是「数字可信不可信」。从今天起的 B15 把视角抬高一层:先搞清楚一个生产级金融犯罪 Copilot 应该长什么样,再围绕它建对抗/HITL 测试套件。今天是 B15 的开篇——拆解 2026-05 FIS×Anthropic Financial Crimes 合作给出的五段链参考叙事,把我们手里已有的 src/aml 管线逐段对齐过去,标出缺口。这一天在 B1→B18 能力曲线上属于「从单点能力(eval/规则/SAR 生成)收敛成端到端架构叙事」的位置,紧接昨天的可复现 leaderboard,通向 Day 142-146 的对抗套件落地。最小可判定产出:一张 5 行的逐段缺口标记表,每段标清「谁是 LLM / 谁是规则 / 谁是人」以及缺哪类测试。
1. 机理精读
五段链定义。 2026-05 FIS×Anthropic 的金融犯罪合作给出的参考流水线是一条五段链:evidence 汇集 → typology 比对 → SAR draft → HITL 人审 → audit 轨迹。它不是某个单一模型调用,而是一条「数据 → 语义聚合 → 结构化判定 → 文书生成 → 人签 → 留痕」的责任流。每一段的失败模式不同,因此每一段的「实现技术」也必须不同。
为什么是五段而非更少。 一个自然的问题是:能不能把 evidence+typology 合成一段、SAR draft 直接接 file?答案是不能,理由是每段的失败模式与责任主体不同。evidence/typology 失败 = 漏报/误报(能力问题);SAR draft 失败 = 文书质量(可返工);HITL 失败 = 责任真空(法律问题);audit 失败 = 不可追溯(监管问题)。把它们合并就是把不同性质的风险混在一起判,无法分别度量和兜底。五段的颗粒度恰好让每段有独立的评测口径与防御层——这是 FIS×Anthropic 模式的工程精髓。
核心设计原则:分清谁是 LLM、谁是规则、谁是人。 这是整条链最值钱的一句话。把它拆开:
- evidence 汇集 / typology 比对用 LLM 做语义聚合——因为证据是非结构化文本(memo、KYC 备注、交易摘要),需要语义理解把散点拼成「这像 structuring / layering / mule」的假设。这一段允许 LLM 的概率性。
- SAR draft 由 LLM 生成,但必须人签——文书可以机器起草(5W1H 叙事自动化是真实提效点),但提交这个动作是法律行为,责任主体是合规官,不能让模型按自己的判断提交。
- OFAC / 阈值判定走确定性规则——SDN 命中、CTR > $10,000、SAR 30 日时限这类判定有唯一正确答案,必须 code-graded,绝不能交给概率性 LLM。把它交给 LLM 等于给监管硬线引入抖动。
为什么这样设计:信任边界 = 责任边界。 这套「谁是 LLM/规则/人」的划分本质是在画信任边界。LLM 适合做「召回候选 + 语义假设」,规则适合做「监管硬线 + 不可抖动判定」,人适合做「不可外包的法律签字」。把它们混在一个 prompt 里,就同时失去了规则的确定性和人审的责任落点——这正是 RAG-centric 旧叙事的盲区:它只解决「把证据塞进 context」,却没回答「哪段判定根本不该交给模型」。
关键权衡:自动化深度 vs 责任落点。 自动化越深,提效越大,但责任落点越模糊。FIS×Anthropic 模式给出的平衡点是:让 LLM 做到 SAR draft 为止,止步于 file。draft 自动化吃掉 80% 的体力活,file 这一步用 HITL 闸门把责任钉死在人身上。我们仓里 src/aml/hitl.ts 的 canAutoFile() 返回 typed false 正是这个原则的代码化身。
评测口径:两层。 评测参考 Anthropic《Demystifying evals》(2026-01)——分 code-graded(确定性硬断言,如 OFAC 必须 block)与 LLM-judge(语义模糊兜底,如 SAR 叙事是否覆盖 5W1H)两层。这条口径会贯穿整个 B15:对抗套件的硬线(OFAC/auto-SAR)必须 code-graded,语义抵抗(拒绝洗白话术)才用 LLM-judge。
与相邻概念的边界:五段链 ≠ 单 agent 循环。 容易把五段链误读成「一个 ReAct agent 自己跑五步」。区别在于:ReAct 循环里每一步都是同一个 LLM 自主决策,五段链里每段的执行主体不同(LLM / 规则引擎 / 人),且段间有强制闸门(HITL)。前者是「能力编排」,后者是「责任编排」——金融犯罪场景要的是后者,因为责任落点(谁签字、谁担责)必须显式,不能藏在 agent 的自主循环里。这也是为什么 FIS×Anthropic 模式没把它做成一个全自动 agent,而是一条带人审闸门的流水线。
与 AML 监管映射。 五段链不是凭空设计,它对应监管要求的 AML 调查生命周期:可疑活动识别(evidence/typology)→ 调查与定性(typology)→ 上报文书(SAR draft)→ 合规官审批(HITL)→ 可审计留痕(audit)。每一段都有对应的监管义务,因此「省掉某段」不只是工程取舍,而是合规风险——尤其 HITL 段(FinCEN 要求人签)和 audit 段(监管检查要求可追溯)不可省。
2. 推导 / 手算 / 代码走读
今天是架构映射日,把现有 src/aml 管线逐段对到五段链。已用 Read 打开相关源文件,引用真实符号:
- evidence 汇集 / typology 比对段 →
src/aml/generator.ts的getGoldenDataset()(line 473,另有getGoldenDatasetV11()line 769 作为 v1.1 难例增强)提供合成案件作为「证据底座」;真实生产里这一段会是 LLM 语义聚合,当前是确定性合成数据,诚实标注「教学合成」。 - typology 比对段 →
src/aml/typology.ts的assessCase()(line 321)。走读其行为:它对每种 typology 算聚合得分,ASSESS_THRESHOLD(line 44 注释:≥0.5)才输出topTypology(line 334-337 的循环取最高分且过阈值的类型)。这一段当前是规则而非 LLM——这是缺口:生产五段链此处应是 LLM 语义比对,我们目前用规则占位。 - SAR draft 段 →
src/aml/sarDraft.ts的draftSar(c, assessment)(line 61),把案件 + assessment 渲染成 SAR 草稿。 - HITL 人审段 →
src/aml/hitl.ts的 SAR 状态机。走读其不变量:状态draft→pending_review→approved→filed;file(r, now)(line 38)只有r.state === 'approved'才放行,否则抛'SAR can only be filed after human approval (HITL gate)';approve()(line 27)只能从pending_review转出;canAutoFile()(line 44)是 typedfalse—— 任何 caller 都无法把它翻成 true,这是 auto-SAR 的不可绕过防线 ✅。 - audit 轨迹段 →
hitl.ts里每次状态转移都log()(line 14)追加一条AuditEvent(append-onlyaudit数组)。但端到端的 audit 持久化(落盘/数据库)缺位——状态机内的 audit 是内存数组,没有跨会话持久层。这是 5 行缺口表里的一行。
5×缺口标记表(逐段 LLM/规则/人 + 缺口):
| 段 | 现状实现 | 应是 | 缺口 |
|---|---|---|---|
| evidence 汇集 | getGoldenDataset() 合成数据(规则) | LLM 语义聚合 | evidence 段无 memo 注入对抗测试 |
| typology 比对 | assessCase()/topTypology(规则) | LLM 语义比对 | typology 段抵抗率待跑(需 key),当前规则占位 |
| SAR draft | draftSar()(模板) | LLM 生成 | 叙事质量 LLM-judge 待跑 |
| HITL 人审 | hitl.ts 状态机 canAutoFile()=false ✅ | 人签 | 已建(无缺口) |
| audit 轨迹 | 内存 AuditEvent[](append-only) | 持久化留痕 | 缺 audit 持久化层 |
3. 今日实战
诚实标注:seed 计划把映射表写入
docs/aipa/day141-fis-pattern.md。该文件当前不在仓库(docs/aipa/下只有day14-week2-summary.md),故此处记录的是计划中的实战步骤与已就绪的代码依据,不声称该 doc 已 committed。
可执行步骤:
- 新建
docs/aipa/day141-fis-pattern.md,把上面五段链逐段映射到src/aml真实符号:generator.ts:getGoldenDataset→ evidence/typology;typology.ts:assessCase/topTypology→ typology 比对;hitl.ts(SAR 状态机)→ SAR draft + HITL;sarDraft.ts:draftSar→ SAR 文书。 - 逐段标注 LLM / 规则 / 人 三类角色(见上表第 2-3 列)。
- 列 5 行缺口标记表:哪段无对抗测试、哪段无 HITL 闸门、哪段缺持久化(见上表第 4 列)。
- 交叉引用
docs/aipa/day141-fis-pattern.md(视作产品文档交叉引用,非本仓代码走读)。
落地时的核对清单(每段一条,确保映射不失真):
- evidence 段:标注「当前
getGoldenDataset()合成数据 = 规则占位,生产应为 LLM 语义聚合」。 - typology 段:标注「
assessCase()阈值ASSESS_THRESHOLD≥0.5(typology.ts line 44)= 规则,非 LLM」。 - SAR draft 段:标注「
draftSar()(sarDraft.ts line 61)= 模板渲染,生产应 LLM 起草」。 - HITL 段:标注「
hitl.tscanAutoFile()=false✅ 已建,无缺口」。 - audit 段:标注「内存
AuditEvent[]append-only,缺持久化层」。
这份清单本身就是 5 行缺口表的可勾选版本,落 doc 时直接复用。
4. 今日实测 / 产出
- gap 映射表:seed 计划 committed 到
docs/aipa/day141-fis-pattern.md,含 5 行缺口标记。仓库现状核对:该 doc 文件当前不存在(待补写);上表内容即其骨架。 - 已建:
hitl.ts的 SAR 状态机,canAutoFile()= typedfalse✅(已 Read 确认,line 44);file()强制先approve()(line 38-39)✅。 - 缺口:evidence 段无 memo 注入测试;typology 段抵抗率待跑(需 key)。
- 不臆造任何抵抗率数字——所有「X/10」类指标在 B15 后段需真实跑 DeepSeek-V4 才产生。
5. 常见误区 / 陷阱
- 把五段链当一个大 prompt。 最常见的错——把 evidence/typology/SAR/OFAC 全塞进一次模型调用,既丢了规则确定性又丢了人审责任落点。五段链的价值正在于「分谁是 LLM/规则/人」。
- 让 OFAC/CTR 判定走 LLM。 监管硬线必须 code-graded。OFAC SDN 命中是 block/reject 不可 proceed 的硬停,交给概率性模型等于引入抖动。
- 把「SAR draft 自动化」误读成「SAR file 自动化」。 draft 可以机器写,file 必须人签。
canAutoFile()=false就是这条边界的代码锚点;auto-SAR「提效」叙事违反监管。 - 把规则占位当成 LLM 已上线。 当前
assessCase是规则,不是五段链里设想的 LLM 语义比对——映射表必须诚实标注这是「规则占位」,否则架构叙事失真。 - audit 用内存数组冒充持久层。
hitl.ts的audit: AuditEvent[]是 append-only 内存数组,进程退出即丢;生产 audit 必须落持久存储且不可篡改。映射表里这一段标「缺 audit 持久化」是对的,别把内存数组当成已满足监管留痕。 - 把这套叙事当「已实现的产品」讲。 五段链是参考架构 + 我们的逐段映射,多数段当前是规则占位/合成数据;面试/作品集里要讲成「我把生产参考模式映射到自己的管线并标出缺口」,而非「我做了一个生产 AML Copilot」。
- 把五段合并以「简化」。 工程直觉常想合并步骤减少调用,但五段的颗粒度是为了分别度量与兜底——合并即失去独立评测口径和 HITL 闸门,是 anti-pattern 而非优化。
- 引用旧 FIS/竞品模式而不复查。 agent 领域半衰期约 6 个月,2026-05 的 FIS×Anthropic 模式须在 W15 前重验是否被 Fiserv agentOS GA 等竞品模式更新——别把半年前的参考当永久真理。
6. 学习资源(每条带 YYYY-MM)
- FIS × Anthropic Financial Crimes 合作叙事(2026-05)——五段链参考来源,本日主线。
- Anthropic《Demystifying evals》(2026-01)——code-graded vs LLM-judge 两层评测口径。
- FinCEN SAR 规则 / 31 CFR(现行长效)——SAR 30 日时限、人签要求的法理依据。
- OFAC SDN List 合规要求(动态更新)——sanctions 硬停 block/reject 的来源。
- IBM AMLworld / AMLSim 数据集 (2024-04)——后续对抗套件的合成洗钱模式底座(>24 月,仅打底)。
- FATF / BSA AML 典型学(structuring / layering / mule network,现行长效)——typology 段判定的领域知识来源。
- 本仓
src/aml/hitl.ts(file/approve/canAutoFileSAR 状态机)——HITL 段的代码实现(代码走读)。 - 本仓
src/aml/typology.ts(assessCase/topTypology,ASSESS_THRESHOLD)+src/aml/generator.ts(getGoldenDataset)——typology/evidence 段当前规则占位(代码走读)。
SOTA检查 (2026-06 更新)
- 当前主流方案:FIS×Anthropic 模式(2026-05)仍为金融犯罪 GenAI 当前参考叙事,「evidence-as-context engineering + 分清 LLM/规则/人 + HITL 人签」是当前 SOTA 架构。
- 是否仍 SOTA:是(截至 2026-06)。需在 W15 前重验 Fiserv agentOS GA(预计 2026-08 月)是否给出竞品五段链模式——若给出,须并列对标。
- 过时黑名单:避免引用 RAG-centric 旧叙事——已被 evidence-as-context engineering 取代(旧叙事只解决「塞证据」,不回答「哪段不该交给模型」)。
- 2026 上下文工程主线:context engineering(结构化把 evidence 组织进 context)取代 RAG-centric「检索即一切」,是当前 agent 数据流的主流叙事;evidence 段的设计应以 context engineering 为框架。
- 下次复查点:W15 前(Fiserv agentOS GA)、2026-08 月 Fiserv 公告;执行当周 WebSearch 复查 FIS/Anthropic 是否更新模式,并复查 Data+AI Summit(06-15~18)是否有金融犯罪 GenAI 新参考架构。
7. 面试视角:怎么把今天讲成作品
AISA 面试常问 hiring manager 四问:数据流 / 评测 / 成本 / 为什么。今天的五段链映射直接喂前两问:
- 数据流:「我把 FIS×Anthropic 2026-05 的五段链(evidence→typology→SAR draft→HITL→audit)映射到自己的
src/aml管线,逐段标清谁是 LLM、谁是规则、谁是人。」 - 评测:「每段的失败模式不同,所以评测分两层——OFAC/auto-SAR 这类硬线用 code-graded,SAR 叙事质量用 LLM-judge。」
- 诚实度:「我标出了 5 行缺口——evidence 段缺 memo 注入测试、typology 段当前是规则占位、audit 缺持久化——这些是已知 gap,不是吹成已实现。」
这套讲法的力量在于:它展示的是架构判断力(哪段该交给谁)+ 诚实的缺口意识,而不是「我做了个 AML 产品」的空泛声明。这正是 AISA 区别于普通 PM 的地方。
衔接
- 昨天:Day 140 — 三方榜单与归档(带 CI 的可复现 leaderboard,B14 收尾)。
- 今天:把生产级五段链参考叙事拆解,逐段对齐
src/aml现有管线,标出 5 行缺口——为 B15 对抗套件定锚。 - 明天:Day 142 — 对抗威胁建模:AML Copilot 的攻击面(把缺口落成 4 类攻击面 + 10 任务硬判据骨架)。