返回 AICAP-180
B15 · Day 141FIS×Anthropic 模式 + 对抗/HITL 套件

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.tscanAutoFile() 返回 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 打开相关源文件,引用真实符号:

  1. evidence 汇集 / typology 比对段src/aml/generator.tsgetGoldenDataset()(line 473,另有 getGoldenDatasetV11() line 769 作为 v1.1 难例增强)提供合成案件作为「证据底座」;真实生产里这一段会是 LLM 语义聚合,当前是确定性合成数据,诚实标注「教学合成」。
  2. typology 比对段src/aml/typology.tsassessCase()(line 321)。走读其行为:它对每种 typology 算聚合得分,ASSESS_THRESHOLD(line 44 注释:≥0.5)才输出 topTypology(line 334-337 的循环取最高分且过阈值的类型)。这一段当前是规则而非 LLM——这是缺口:生产五段链此处应是 LLM 语义比对,我们目前用规则占位。
  3. SAR draft 段src/aml/sarDraft.tsdraftSar(c, assessment)(line 61),把案件 + assessment 渲染成 SAR 草稿。
  4. HITL 人审段src/aml/hitl.ts 的 SAR 状态机。走读其不变量:状态 draft→pending_review→approved→filedfile(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)是 typed false —— 任何 caller 都无法把它翻成 true,这是 auto-SAR 的不可绕过防线 ✅。
  5. audit 轨迹段hitl.ts 里每次状态转移都 log()(line 14)追加一条 AuditEvent(append-only audit 数组)。但端到端的 audit 持久化(落盘/数据库)缺位——状态机内的 audit 是内存数组,没有跨会话持久层。这是 5 行缺口表里的一行。

5×缺口标记表(逐段 LLM/规则/人 + 缺口):

现状实现应是缺口
evidence 汇集getGoldenDataset() 合成数据(规则)LLM 语义聚合evidence 段无 memo 注入对抗测试
typology 比对assessCase()/topTypology(规则)LLM 语义比对typology 段抵抗率待跑(需 key),当前规则占位
SAR draftdraftSar()(模板)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。

可执行步骤:

  1. 新建 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 文书。
  2. 逐段标注 LLM / 规则 / 人 三类角色(见上表第 2-3 列)。
  3. 列 5 行缺口标记表:哪段无对抗测试、哪段无 HITL 闸门、哪段缺持久化(见上表第 4 列)。
  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.ts canAutoFile()=false ✅ 已建,无缺口」。
  • audit 段:标注「内存 AuditEvent[] append-only,缺持久化层」。

这份清单本身就是 5 行缺口表的可勾选版本,落 doc 时直接复用。

4. 今日实测 / 产出

  • gap 映射表:seed 计划 committed 到 docs/aipa/day141-fis-pattern.md,含 5 行缺口标记。仓库现状核对:该 doc 文件当前不存在(待补写);上表内容即其骨架。
  • 已建hitl.ts 的 SAR 状态机,canAutoFile() = typed false ✅(已 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.tsaudit: 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.tsfile/approve/canAutoFile SAR 状态机)——HITL 段的代码实现(代码走读)。
  • 本仓 src/aml/typology.tsassessCase/topTypologyASSESS_THRESHOLD)+ src/aml/generator.tsgetGoldenDataset)——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 任务硬判据骨架)。