乐于分享
好东西不私藏

AI Berkshire:15K Star 价值投资 Agent 框架,把四大师方法论写成可执行流程

AI Berkshire:15K Star 价值投资 Agent 框架,把四大师方法论写成可执行流程

AI Berkshire:15K Star 价值投资 Agent 框架,把四大师方法论写成可执行流程

摘要

ai-berkshire 是一套同时兼容 Claude Code 与 Codex 的投资研究 Skill 合集 ,2026 年 4 月 7 日发布, 截至 8 月 11 日已获 15355 Star、2278 Fork, MIT 协议,最近一次提交在 8 月 10 日。

它把巴菲特、芒格、段永平、李录四位投资人的方法论拆成 20 个 Skill 文档(合计 239.3 KB),配 10 个零依赖 Python 工具(合计 153 KB)。

本文不复述 README,而是把它的两个核心工具下载到本地实际跑通, 验证其数据严谨性机制是否真的生效, 覆盖市值验算、多源交叉验证、报告数据抽检三条链路。

结论:这个项目真正的工程价值不在"四大师人设", 而在**它承认 LLM 会算错、会编造、会静默降级, 并为每一种失败模式写了检查点**。

背景

直接问大模型"某公司值不值得买", 得到的通常是一篇"一方面……另一方面……"的平衡文章, 结尾配上"投资有风险请自行判断"。看起来没错,但无法用于决策。

比模棱两可更危险的是三类静默错误。第一类是算术错误, 模型心算市盈率、市值时会出现小数点漂移;第二类是单位混淆, 港币亿与人民币亿混排会让市值凭空差出一成;第三类是联网失败后的伪装, Agent 搜不到资料时退回训练知识作答,却仍输出一份格式完整的"研究报告"。

第三类最致命, 因为它在外观上与正常输出完全一致。这不是假想。该仓库 issue #58(2026-07-08 提交 , Claude Code v2.1.177)记录的正是这个场景:用户运行团队型指令分析某上市公司 ,四个后台 Agent 的联网搜索被权限拦截,报告照常生成, 只在角落标注了"基于训练知识"。

AI Berkshire 的设计目标因此不是"让 AI 会分析", 而是"让 AI 在不可靠时暴露自己不可靠"。这个定位决定了它的工程重心全部压在校验层 ,而非提示词层。

技术分析

三层架构

项目分三层。Skill 层是 20 个 Markdown 文档, 每个对应一个斜杠命令入口, 覆盖深度研究、财报分析、行业筛选、持仓管理、思维工具五类场景。轻量 Skill 直连工具快进快出 ,不经过 Agent 层。

Agent 层只对团队型 Skill 生效。投研团队指令会先建立团队, 再用四个后台子 Agent 并行研究同一家公司, 分别承担商业模式、财务估值、行业竞争、风险管理层四个角色, 最后由主控角色汇总研判。四个 Agent 各自独立搜索、独立取数、独立评分, 等于四倍的信息源与四个互不干扰的视角。

工具层是 10 个 Python 脚本, 负责精确计算、行情取数与报告抽检。仓库同时维护 21 个 Codex skill 包 ,由同步脚本从 Skill 源文件自动生成,保证两端流程同源, 不会出现双份文档各自漂移的问题。

精确计算:拒绝浮点数的金融算术

核心计算工具共 465 行,零外部依赖, 只用标准库。全部计算走 28 位精度的十进制上下文, 浮点数在入口处即被转成字符串再转 Decimal,规避二进制浮点误差。

python

from decimal import Decimal, Context, ROUND_HALF_EVEN _CTX = Context(prec=28, rounding=ROUND_HALF_EVEN) def exact(value) -> Decimal:  """把任意数值转为精确 Decimal,避开 float 陷阱。"""  if isinstance(value, float):  return Decimal(str(value))  return Decimal(str(value)) def verify_market_cap(price, shares, reported_cap):  """市值验算:股价乘以总股本,与报告市值比对。"""  p, s, r = exact(price), exact(shares), exact(reported_cap)  calculated = _CTX.multiply(p, s)  deviation = abs(float(calculated - r) / float(r)) * 100  return deviation <= 5

阈值设计有两级:偏差超过百分之五判定为错误, 并列出三条排查方向(股本是否最新、单位是否一致、股价是否最新);百分之一到百分之五之间给出警告但放行 ,归因为股价波动或股本变化。

脚本里的编码强制切换函数。Windows 控制台默认使用 GBK, 输出告警符号会抛出编码异常, 导致最该被看到的"偏差超标"路径直接崩溃退出。作者专门强制切换标准输出编码来堵这个洞 ,这类细节通常只有真正跑过多平台才会发现。

报告抽检:把交付物当作待验货物

抽检工具共 553 行, 实现了"提取、取数、判决"三步流水线。它从生成的报告里正则识别财务数字, 随机抽样一成五,要求 Agent 逐个回到权威信源取数比对,通过才准出, 不通过则打回并说明原因。

这里有一个容易被忽略的正则细节。早期版本的数字捕获组不含符号位, 负数百分比会被抓成正数,核验时报告值与信源值符号相反、偏差翻倍,产生假打回。

python

_SIGN = r'[+\-−–-+]?' _PATTERNS = [  (r'(' + _SIGN + r'[\d,,\.]+)\s*%', '%', 'percent'),  (r'(' + _SIGN + r'[\d,,\.]+)\s*[xX倍]', 'x', 'multiple'), ] def _clean_num(s: str) -> float:  """归一化 Unicode 减号、en-dash、全角符号为 ASCII。"""  s = s.replace(',', '').replace(',', '').strip()  for ch in ('−', '–', '-'):  s = s.replace(ch, '-')  return float(s.replace('+', '+'))

符号位涵盖半角正负号、Unicode 减号、短破折号与全角正负号,这类字符在模型生成的中文报告里出现频率相当高。

数据源规范与联网预检

数据规范文档要求每个关键数据必须来自两个独立来源, 并按市场划分优先级:美股用 macrotrends 加 stockanalysis ,港股用 aastocks 加 macrotrends 存托凭证, A 股用东方财富加巨潮资讯, 台股用 FinMind 加 Goodinfo。误差一成以内取主源, 一到五成标记差异,超过五成必须回查原始财报。文档还列出常见差异归因, 如会计口径、汇率换算时点、财年定义、合并范围,避免把正常差异误判为造假。

针对 issue #58 暴露的静默降级, 投研团队 Skill 在启动 Agent 前加了一道权限预检:先检查本地配置确认联网搜索在白名单中 , 未命中则停止执行而非继续。子 Agent 的提示词里也写死一条硬约束:联网失败禁止用训练知识冒充 ,必须在报告顶部标注置信度降级并上报主控角色。

实测验证

以下测试在 Python 3.13.12 环境执行,脚本从仓库主分支直接下载,未做任何修改。

市值验算双路径。正常场景传入股价 510、股本 91.1 亿股、报告市值 4.65 万亿 ,输出偏差 0.08%,判定通过。随后构造单位混淆场景, 把报告市值换成人民币口径的 4.28 万亿, 工具输出偏差 8.55% 并触发错误分支,打印出三条排查提示。告警链路确实会触发 ,不是摆设。

多源交叉验证。传入四个来源的营业收入(7518、7500、7520、8100 亿) ,工具以中位数 7519 亿为基准, 前三个来源偏差分别为 0.01%、0.25%、0.01% 全部通过, 第四个偏差 7.73% 被标记为不通过, 并提示优先采用公司年报或交易所数据。离群值识别准确。

估值指标验算。传入股价 510、每股收益 23.5、每股净资产 120、每股自由现金流 18、股息 2.4 , 输出市盈率 21.70 倍、盈利收益率 4.61%、市净率 4.25 倍、净资产收益率 19.58%、股息率 0.47% ,全部为精确十进制结果。

报告抽检全流程。构造一份含 9 个数据点的测试报告, 提取子命令按一成五抽样选出 3 个(市盈率、同比增速、经营利润率), 其中负号被正确保留,验证了前述符号修复确实生效。判决阶段, 市盈率偏差 0.09% 通过,同比增速偏差 0.00% 通过, 经营利润率偏差 7.96% 触发警告。

最终输出"准出"结论,同时提示一个数据点两来源不一致, 可能是会计口径差异或汇率因素, 需人工复核。分级判定逻辑与文档描述完全一致。需要说明的是,抽检工具本身不联网, 取数环节仍由 Agent 完成, 工具只负责抽样与判决。这意味着它能拦住"数字抄错", 但拦不住"Agent 和报告一起错"。

影响范围

维度 实测数据 来源依据
Star 数 15355 Repo API,2026-08-11
Fork 数 2278 Repo API
贡献者 12 Contributors API
开放 issue 27 Repo API
Skill 文档 20 个,239.3 KB Contents API
Python 工具 10 个,153 KB Contents API
Codex 技能包 21 个 仓库目录统计
许可证 MIT 仓库 LICENSE
首个发布 v1.0.0,2026-04-07 Releases API
运行依赖 Python 3.7 以上,零第三方库 源码分析

建议

**第一, 实盘收益率截图不构成可验证证据**。项目首页展示了 2024 年与 2025 年的账户收益截图并对比主要指数。这是作者的个人陈述 ,第三方无法核验, 也无法区分框架贡献与个人判断、市场环境的贡献。请把它当作作者动机说明, 而非工具效果背书。

**第二, 务必先放行联网搜索权限再启动团队型 Skill**。这是本项目最危险的失败模式。运行投研团队或财报团队指令前 ,确认权限白名单已包含联网搜索,否则后台 Agent 会静默退化为训练知识作答, 且输出格式与正常报告无异。

**第三, 慎用跳过权限确认模式**。项目文档为减少交互摩擦推荐了跳过审批的启动参数。该模式关闭全部工具审批保护 ,Agent 可无确认执行任意命令。仅在完全可信的仓库、命令与工作目录下使用, 不要在克隆的第三方代码上开启。

第四,工具校验的是一致性,不是真实性。交叉验证只能发现来源间的分歧, 若两个数据源同源或同时出错,验证会顺利通过。抽检比例仅一成五, 未被抽中的数据点不提供任何保证。

**第五, 输出是研究材料而非投资建议**。Skill 会强制产出"通过、不通过、灰色地带"的结论和价格区间 ,这种确定性来自模板约束, 不代表判断本身可靠。四大师评分本质是模型按人设生成的文本,与真人观点无因果关系。

    📌 关注「AI新视线」,回复关键词获取完整量化模型和研报数据。

    扫码关注「AI新视线」

    穿透噪音,看见本质