- 人工智能
- AI Agent
- 金融科技
- AI 应用
- 大模型
- RAG
【免费下载链接】FinRobot
FinRobot: An Open-Source AI Agent Platform for Financial Applications using Large Language Models
导读
本文以 FinRobot 开源项目中财富管理(wealth-management)技能库的client-review技能文档为主线,系统拆解一个面向客户投资回顾会议的标准化筹备工作流:从客户档案收集、组合业绩测算、配置漂移分析,到谈话要点编排、主动建议生成与最终交付物产出。读者读完本文后,既能掌握该技能的六步实战流程与全部表格模板,也能理解 SKILL.md 这类技能文档在 FinRobot 引擎中是如何被解析、索引、检索并被 Agent 通过activate_skill激活调用的,从而在自己工作中复用同一套"方法论即文档、文档即技能"的工程范式。
一、技能文档概览:Frontmatter 与触发机制
client-review技能文件位于 SKILL.md,其 YAML Frontmatter 完整定义了技能的元数据:
| 字段 | 取值 | 含义 |
|---|---|---|
id | client-review | 技能唯一标识,供activate_skill(skill_id)精确定位 |
name | Client Review Prep | 面向用户展示的技能名称 |
version | 1.0.0 | 技能版本号 |
author | anthropic | 技能作者 |
domain | wealth-management | 技能所属领域(财富管理) |
description | 为客户会议筹备提供组合业绩摘要、配置分析、谈话要点与行动项 | 技能用途摘要 |
triggers | client review、meeting prep for [client]、quarterly review、prep for [client name]、client meeting | 触发关键词 |
requires_data/requires_tools/requires_skills | 均为空列表 | 声明所需数据、工具与依赖技能 |
compatible_models | 空列表 | 兼容模型约束(仅作信息提示) |
触发词表的使用场景
Frontmatter 中声明的五个触发器覆盖了客户会议的典型表达方式:季度回顾(quarterly review)、指定客户的会议筹备(meeting prep for [client]/prep for [client name])、泛化的客户会议(client meeting)以及直接命中技能名的client review。这意味着 Agent 在聊天场景中只要收到类似"帮我准备下张三的季度客户会议"这样的诉求,就能通过关键词匹配将该技能从候选列表中拉出。
引擎侧如何理解这段 Frontmatter
FinRobot 的 技能规范模块 用 Pydantic 模型Skill定义了技能加载后的数据结构:id、name、version、author、domain、description、triggers、requires_data、requires_tools、requires_skills、compatible_models、full_content(Frontmatter 之后的完整 Markdown 正文)与source_path(SKILL.md 的磁盘路径)。从源码注释看,requires_data/requires_tools/requires_skills会被解析但暂不强制执行,属于预留的依赖声明机制。
而 技能加载器 则负责把磁盘上的 SKILL.md 转换成Skill模型:文件必须以---开头并包含合法 YAML Frontmatter,id与name是必填字段,缺失将抛出SkillLoadError;description若缺失则自动回退到正文的第一个非标题段落。换言之,一个可被 FinRobot 正常加载的技能文档,其 Frontmatter 结构必须与本文件保持一致的约定。
二、技能在引擎中的检索与激活路径
client-review技能在运行时不会自动执行,而是由 Agent 按需激活。其底层调用链可以从 编排器 orchestrator.py 中看到:Agent 暴露了一个activate_skill(ctx, skill_id)工具,调用后会经由SkillRegistry精确查找或全量列出可用技能,命中后返回渲染出的方法论内容供 Agent 继续执行。若skill_runtime未就绪,工具会明确返回 "Skill system is not yet available",避免静默失败。
检索排序:名称 > 触发词 > 描述
技能注册表 registry.py 中的search()方法采用加权计分:技能名称命中 +3 分、触发词命中 +2 分、描述命中 +1 分,按总分降序、id升序返回。以client-review为例,当用户说 "quarterly review" 时,Client Review Prep技能因触发词命中获得 +2 分;当用户直接说 "client review prep" 时则名称命中获得 +3 分。list_summary()方法还会把全库技能按领域分组压缩成一行摘要(id: name — description截断版),供 LLM 在上下文窗口中快速了解可用技能,这正是"触发词表"被设计得精炼且可检索的原因。
与其他财富管理技能的协同关系
client-review并非孤立存在,它与同目录下的技能构成完整的财富管理闭环。在 skills/wealth-management 目录下还包含:
- client-report/SKILL.md:面向客户的正式业绩报告生成(季度/年度分发),产出 8-12 页带品牌标识的 PDF;
- portfolio-rebalance/SKILL.md:组合配置漂移分析与再平衡交易建议,含税务感知规则与洗售规则;
- tax-loss-harvesting/SKILL.md:应税账户亏损收割机会识别与替代证券推荐。
这些技能共享同一 Frontmatter 骨架(id/name/domain/triggers/requires_*字段齐全),说明它们是按同一套规范批量转换生成的项目原生技能,也印证了加载器 docstring 中"FinRobot native — output of convert_skills.py"的格式约定。实务中,客户会议前常用client-review完成快速筹备,会后如需正式报告则联动client-report,发现漂移超阈再联动portfolio-rebalance。
三、Step 1:客户档案收集(Client Context)
技能工作流的第一步是"先认识客户再开会",需要收集或查询的客户上下文要素包括:
- 客户姓名与家庭成员:覆盖整个 household 口径,避免遗漏配偶/联名账户;
- 账户类型:应税账户(Taxable)、传统 IRA、Roth、401(k)、信托(trust)等;
- 全账户合计 AUM:用于衡量组合整体规模与权重;
- 投资政策声明书(IPS):目标配置、风险承受能力、约束条件——这是后续所有漂移判断的基准;
- 人生阶段:积累期(Accumulation)、退休前(pre-retirement)、退休期(retirement)、传承期(legacy),不同阶段对应不同的收入与风险诉求;
- 上次会议日期与未决行动项:承接上次会议的遗留问题,保证议程连续性。
从同目录 client-report/SKILL.md 可以看出,正式报告还会额外补充报告期间、基准选择、品牌标识等参数,而会议筹备技能更强调"上次会议的遗留事项",两者形成"筹备→报告"的衔接。
四、Step 2:组合业绩测算(Portfolio Performance)
该步骤要求对每个账户以及家庭账户汇总口径分别测算业绩,核心指标表格如下:
| Metric | QTD | YTD | 1-Year | 3-Year | Since Inception |
|---|---|---|---|---|---|
| Portfolio return | |||||
| Benchmark return | |||||
| Alpha |
三个核心指标的含义与使用要点:
- Portfolio return(组合收益):净收益口径,同目录 client-report 技能在 Important Notes 中强调"除客户或合规要求 gross 口径外,业绩必须按净费用计算";
- Benchmark return(基准收益):基准须来自 IPS 而非"哪个好看选哪个",这是同一技能家族的共同约束(client-report 亦有相同提示);
- Alpha(超额收益):组合收益相对基准的超额部分,用于回答"我们跑赢/跑输基准多少"。
随后是**业绩归因(Performance Attribution)**要求,需要回答三类问题:
- 哪些资产类别/头寸驱动了收益表现?
- 前三大贡献者(Top 3 contributors)与前三大拖累者(Top 3 detractors)分别是谁?
- 是否存在单一头寸的过度影响(outsized single-position impact)?
五、Step 3:配置审查与漂移判定(Allocation Review)
第三步将当前配置与 IPS 目标配置逐类对比,模板表格覆盖七个资产类别:
| Asset Class | Target | Current | Drift | Action |
|---|---|---|---|---|
| US Large Cap | ||||
| US Mid/Small | ||||
| International Developed | ||||
| Emerging Markets | ||||
| Fixed Income | ||||
| Alternatives | ||||
| Cash |
该步骤给出了明确的判定阈值:凡漂移超过 IPS 设定的再平衡阈值(typically 3-5%)即需标记。与之呼应的是 portfolio-rebalance/SKILL.md 中更细粒度的十类资产划分与"小漂移在带内无需操作"的克制原则——会议筹备阶段只需识别漂移并给出 Action 列,而具体交易方案则交给再平衡技能处理,职责边界清晰。
六、Step 4:谈话要点与会议议程编排(Talking Points)
第四步要求生成一份带时间预算的会议议程,模板如下:
- 市场概览(2-3 分钟):简要宏观背景与展望;
- 组合业绩(5 分钟):表现如何?为什么?
- 配置审查(5 分钟):是否需要再平衡?
- 规划更新(5-10 分钟),覆盖四类生活与财务变化:
- 人生变化(职业、健康、家庭、购房、教育);
- 收入需求是否变化;
- 税务状况更新;
- 遗产规划更新;
- 行动项(5 分钟):下次会议之前我们要完成什么?
这套议程的时间预算合计约 22-28 分钟,既保证每个议题有明确的展开空间,又避免会议失控超时,是可直接套用的会议时间盒(time-boxing)模板。
七、Step 5:主动式建议清单(Proactive Recommendations)
基于上述审查结果,技能要求向客户主动提出以下方向的可执行建议:
- 再平衡交易:当漂移超过阈值时触发(与 Step 3 联动);
- 税务亏损收割机会(Tax-loss harvesting):对应同目录 tax-loss-harvesting/SKILL.md 的完整能力,包括亏损识别、替代证券、洗售窗口管理;
- 现金部署或提款规划:应对收入需求变化;
- Roth 转换机会(如适用);
- 受益人更新或遗产规划需求;
- 保险审查:寿险、伤残险、长期护理(LTC)保险。
八、Step 6:交付物产出(Output)
会议筹备的最终交付物清单包括五项:
- 一页式客户会议摘要(Word 或 PDF);
- 带基准的业绩对照表;
- 配置饼图(当前 vs 目标);
- 推荐行动项清单;
- 会议议程。
九、重要注意事项:会议沟通与合规纪律
技能在 "Important Notes" 部分给出了六条不可妥协的纪律,这是整个方法论中最具实战价值的部分:
- 会前先认识客户:回顾上次会议记录,掌握客户背景与历史沟通;
- 客户优先原则:从客户真正关心的话题开场,而不是从顾问想讲的内容开场;
- 直面坏业绩:若业绩不佳必须直接面对,不得隐瞒或粉饰;
- 闭环行动项:每次会议必须以带日期的清晰行动项和下一步收尾;
- 归档留痕:会议纪要与 IPS 的任何变更都必须文档化;
- 合规底线:所有会议材料必须符合公司政策与监管要求。
这六条纪律与同域技能(client-report 的合规审查、portfolio-rebalance 的交易理由留痕、tax-loss-harvesting 的全账户协调与税务记录)共同体现了 FinRobot 技能体系对财富管理"合规、留痕、客户优先"职业规范的系统化内置。
十、如何实际使用该技能
在 FinRobot 桌面端(finrobot_desktop)运行环境中,技能的使用路径为:
- 加载与索引:服务启动时由
SkillRegistry递归扫描 skills 目录树下所有**/SKILL.md文件,逐个经load_skill解析入库;解析失败的单份技能会被记录警告并跳过,不影响其余技能加载(见 registry.py)。 - 触发与选择:用户以自然语言提出需求(如"quarterly review"),Agent 依据技能名称/触发词/描述的加权检索结果,判断本任务适用
client-review技能。 - 激活执行:Agent 调用
activate_skill("client-review"),获取渲染后的方法论正文,随后按六步工作流逐步收集数据、填充表格、生成建议与交付物。 - 协同扩展:会后需要正式报告时激活
client-report,需要具体交易清单时激活portfolio-rebalance,需要税务优化时激活tax-loss-harvesting。
对于需要自定义技能的用户,参照本文件与同目录其他 SKILL.md 的规范(合法 YAML Frontmatter、必填id/name、以---开头、正文按## Workflow分步组织),即可通过convert_skills.py脚本(位于 scripts/convert_skills.py)将自有方法论转换为 FinRobot 原生技能格式,加载器会自动完成解析与注册。
结语
client-review技能文档是 FinRobot 财富管理技能库中"会议筹备"环节的标准方法论载体:它以结构化的 Frontmatter 声明元数据与触发词,以六步工作流覆盖客户档案、业绩测算、配置审查、议程编排、主动建议与交付产出,并以六条纪律约束沟通与合规底线。在引擎侧,spec.py、loader.py、registry.py 与 orchestrator.py 构成了"文档即技能"的完整支撑链路,而同一领域的 client-report、portfolio-rebalance、tax-loss-harvesting 技能则与之构成从筹备、报告到执行的财富管理服务闭环。理解并复用这套 SKILL.md 规范,即可让 FinRobot Agent 在真实客户服务场景中产出专业、合规、可执行的会议级交付物。
- 人工智能
- AI Agent
- 金融科技
- AI 应用
- 大模型
- RAG
【免费下载链接】FinRobot
FinRobot: An Open-Source AI Agent Platform for Financial Applications using Large Language Models
相关推荐
Meeting Prep Agent 的 client-review 技能实战指南:财富管理客户复盘会议的一站式会前准备方案
Meeting Prep Agent 的 client review 技能实战指南:财富管理客户复盘会议的一站式会前准备方案 本文围绕开源仓库 financia
人工智能AI 应用AI 技能/插件AI Agent金融科技Istio Operator 完全指南:IstioOperator API、Profiles 与 istioctl 安装/定制实战
Istio Operator 完全指南:IstioOperator API、Profiles 与 istioctl 安装/定制实战 本文以 Istio 仓库中的
人工智能AI Agent金融科技AI 应用大模型RAG财富管理客户回顾会议准备:financial-services 仓库 client-review 技能实战指南
财富管理客户回顾会议准备:financial services 仓库 client review 技能实战指南 本指南以开源仓库 financial servi
人工智能AI 应用AI 技能/插件AI Agent金融科技
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考