还在比谁的Prompt更长?金融圈那帮悄悄上线AI分析的家伙,早就换赛道了。他们现在让Claude自己查数据、自己核对条款、自己生成一整套交割文件,而你甚至看不到Prompt在哪里。
Anthropic在它的financial-services仓库里埋了一套技能驱动架构,不是白皮书,不是Demo视频,是实打实能跑的Python代码。它用几个SKILL.md文件定义出完整的金融分析流程,然后用一个叫SkillAgent的东西把流程塞进Messages API,再配合MCP连接器打通数据源——最后让你拿到手的就是一份可以交付的分析结果,而不是一堆需要二次加工的对话记录。这篇文章不打算复述文档,而是把它的骨架拆出来给你看,告诉你这东西怎么在十分钟内变成你自己的分析引擎。
技能驱动这件事,为什么在金融场景特别值钱
别再往提示里塞整本操作手册
传统做法是把所有上下文、规则、示例一股脑塞进系统提示,然后祈祷模型别在第三步就开始自由发挥。金融分析天然不适合这么玩。一个并购分析需要覆盖目标公司画像、财务数据核对、条款合规检查、风险触发点扫描,每步依赖不同的工具和数据源,中间任何一步的判断失误都可能让整个输出变成废纸。
技能驱动架构的做法正好反过来。它把每个分析动作拆成独立的“技能”,每个技能有自己的描述、输入输出规范、工具需求和执行步骤,模型不需要记住一切,它只需要知道在当前这一步调用哪个技能。这么做带来的直接好处是:分析流程可以审计、可以复现、可以局部修改而不影响全局。你把SKILL.md文件当成技能的“执行规范说明书”,模型读完就知道自己该怎么干,而不是靠你苦口婆心地叮嘱。
金融对确定性有近乎偏执的需求
普通聊天应用容错率高,一句话不对可以再说一遍。但在生成投资备忘录或风险报告时,一个数据引用错误就可能引发合规问题。技能驱动架构从设计上就限制了模型自由发挥的空间。每个技能的输出会经过明确的校验和转换,不合格的工具调用会被拦截,缺少必要数据的步骤会直接中止。这不是“减少幻觉”那种模糊承诺,而是在系统层面强制实施的约束。
更关键的是,金融领域的分析剧本往往需要多轮工具调用循环。查完公司基础信息,需要根据结果决定是继续做深度财务分析还是直接触发风险预警。传统Prompt模式在这种分支逻辑面前显得笨拙不堪,而技能架构天然支持条件跳转和迭代循环。Anthropic的设计显然不是拍脑袋,他们早就看清楚了:金融不是需要一个更会聊天的机器人,而是需要一个能跑通复杂工作流的执行系统。
Anthropic把教科书撕了重写
翻一遍市场上有多少AI代理框架还在用“定义角色->写提示词->手动搭工具”这套流程,你就知道Anthropic的做法有多反常。它把技能的定义权交给了领域专家——你只需要写好SKILL.md,不需要管底层API怎么调用,不需要关心消息格式怎么拼接。SkillAgent这个中控组件替你完成了所有翻译工作,把Markdown格式的技能描述原封不动地转化为Messages API能理解的消息结构,同时注入可用的工具列表。
这背后是一个更深的洞察:真正能在金融场景落地的AI系统,其最大瓶颈从来不是模型能力,而是领域知识的工程化表达。SKILL.md的出现就是把这种隐性知识显性化、结构化、可执行化。你可以把它想象成一种专为AI代理设计的“交易剧本”,既有严格的结构,又保留了人类专家的判断空间。
核心骨架拆解:你的第一套运行中的金融代理
SKILL.md——它不是文档,是执行规范
打开一个典型的SKILL.md文件,你会看到几个固定的分区:技能名称、触发条件、必要输入、工具列表和分步指令。它不是写给人类阅读的说明,而是一份机器可解析的行为定义。Python端通过一个简单的解析器把Markdown区块拆成结构化字段,然后构建成一个技能对象,塞进可搜索的注册表。
这个注册表是整个系统的中枢。当你发出一个模糊指令,比如“帮我分析一下这家公司适不适合收购”,SkillAgent会先从注册表里找出匹配的技能组合,按依赖关系排好序,再逐条注入到Messages API的对话流中。注意,注入的不是提示词片段,而是包含工具调用规则的完整执行单元。这意味着你再也不需要手动设计多轮对话的状态机,SkillAgent替你维护了整个上下文状态。
解析器的实现出奇地简洁,用标准库的re和json就足够了。Anthropic没有引入任何自制的DSL,也没有要求你用YAML或特殊格式,就是纯粹、直接的Markdown,因为它相信:降低编写门槛远比语法糖重要。实际用下来你会发现,写一个新的金融分析技能,基本就等同于写一份结构化的SOP。
SkillAgent怎么把剧本变成迭代循环
SkillAgent的核心逻辑其实很薄。它维护两个关键队列:待执行的技能列表和当前上下文缓冲区。每次调用Messages API前,它从队列头部取出下一个技能,将其指令和工具声明打包进消息体,发给Claude。返回结果后,SkillAgent解析模型的输出,提取工具调用、处理执行结果、更新上下文,然后决定是继续执行当前技能还是跳到下一个。
这种迭代工具调用循环彻底解决了金融分析中多步依赖的问题。例如,技能A要求先调用财务数据接口获取三张表,技能B接到数据后必须做比率计算并判断是否超过阈值,如果超过则触发技能C进行深度风险核查,否则直接跳到技能D生成摘要。整个过程不需要人工介入,SkillAgent像一台精密的分发器,把每一步的输出准确传递给下一步的输入。
而且它自带容错。如果某次工具调用超时或返回异常值,SkillAgent会根据技能定义中的fallback规则决定重试、跳过还是中止。这种在野外环境里打磨出来的健壮性,是很多实验室框架不具备的。你当然可以把它替换成你自己的重试逻辑,但默认的实现已经覆盖了绝大多数金融数据接入会遇到的坑。
MCP连接器——数据管道的水龙头
技能的定义做得再漂亮,没有数据也是空转。Anthropic的方案是用MCP(Message-based Communication Protocol)连接器把外部数据源统一封装成可调用的工具。在你的Python代码里,一个MCP客户端实例可以对接彭博终端、内部数据仓库或者任何REST API,并以标准化的接口暴露给SkillAgent。
这一步的巧妙之处在于,它把数据接入和技能逻辑彻底解耦了。你可以用同一个技能定义,今天连测试数据库,明天切到生产环境,不需要改一行技能描述。MCP连接器负责所有认证、格式转换和错误处理,SkillAgent只看到一组扁平的工具函数。按这个架构,金融机构里的每个分析团队可以独立维护自己的技能库,而数据工程团队专心维护MCP连接器,双方互不干扰但又能无缝集成。
更进阶的玩法是,你可以把MCP连接器本身也变成一个技能。当某个分析流程需要从新数据源获取信息时,SkillAgent会动态地请求连接器注册,加载对应的工具定义,然后继续执行。这种动态扩展能力让整个系统的天花板变得很高,你不需要在一开始就把所有可能的工具都预置进去。
从能跑到能打,中间还差哪几座山
技能注册表不维护,三个月就变成废墟
任何靠技能驱动的东西都会面临同一个问题:技能会过时。金融市场的规则在变,分析口径在调,监管要求每个季度都可能更新。SKILL.md文件如果只是往文件夹里一扔,三个月后没人记得哪个技能还靠谱。
解决办法不是搞一个花哨的管理平台,而是把可测试性直接嵌进技能定义里。你可以在SKILL.md中加入一个test区块,规定给定什么输入应该返回什么工具调用、或者输出必须包含哪些关键字段。每次更新技能后,用一套轻量的回归测试跑一遍全部注册表的技能,不通过的自动标为待修。这个思路在Anthropic的仓库里以示例形式出现,但如果你要上生产,必须把它变成强制的CI步骤。没有自动化验证的技能库,比没有技能库更危险。
原型跑通和交付给客户之间,还隔着合规
在本地复现一遍SkillAgent的Demo只需要半小时,但要把它嵌进某家券商的投行工作流,你需要面对审计记录、权限隔离、版本回溯这些硬骨头。好消息是,技能驱动架构天然适合做审计——每一步技能调用、每一个工具请求和响应都可以被序列化成不可篡改的日志。你甚至可以在消息层加一套数字签名,确保分析过程从头到尾没有被篡改。
权限控制的要点在于,不同的技能可能需要不同的数据访问级别。你不应该让执行风险分析的SkillAgent能访问所有MCP连接器,更细粒度的做法是在SkillAgent实例化时就绑定好它所拥有的工具权限集。Python的上下文管理器可以优雅地处理这种临时权限注入,而不会把整个系统的安全模型搞得千疮百孔。
版本回溯方面,把SKILL.md文件放进Git仓库是最简单的起步方式,每次变更带着明确的提交信息和负责人。真正投产时最好再包一层语义化版本号,让SkillAgent在启动时能声明它依赖的技能版本,避免因为上游技能更新悄悄改变了调用方的行为。这些不是科幻构想,而是已经在几家先行者的内部平台上跑起来的实践。
照搬Anthropic的设计,反而可能误入歧途
Anthropic提供的是一个参考实现,不是一套给所有人开箱即用的产品。它的很多假设——比如使用Anthropic自家的Messages API、技能定义和工具调用的格式——都绑定了自己的技术栈。如果你用的是其他模型厂商,或者希望把SkillAgent部署到云端无服务器环境,就需要进行适配。
关键要保留的是技能驱动的思想,而不是那几行Python代码。你可以把SKILL.md的解析逻辑移植到TypeScript,把MCP连接层换成gRPC,或者把SkillAgent重构成一个独立的微服务。只要核心的抽象保留——可搜索的技能注册表、可注入的执行单元、可审计的工具调用循环——你就拥有了这个架构中最值钱的部分。其余的都是工程细节,可以按自己的基础设施裁剪。
有一件事不能省:无论你怎么改,都要为每个技能保留一个人类可读的描述入口。当某一天分析结果出偏差时,业务人员需要能追回去看究竟是哪个技能的执行逻辑出了问题,他们不看代码,他们看那份你已经不太打开了的SKILL.md。把它写得清楚一点,总有一天会救你自己一命。

