一、背景
ai-berkshire是一套基于巴菲特/段永平/费雪/格雷厄姆四大投资流派的 AI 投研工具集,原本依赖 Claude Code 作为运行时环境(Claude Code 负责读取 skill prompt → 调用 LLM → 执行工具 → 管理多 Agent 编排)。
开源链接:GitHub - xbtlin/ai-berkshire: AI 时代的伯克希尔:基于 Claude Code / Codex 的价值投资研究框架。巴菲特·芒格·段永平·李录四大师方法论 + 多Agent并行研究。| AI-era Berkshire: a value investing research framework built for Claude Code / Codex. 4 masters' methodologies + multi-agent adversarial analysis. · GitHub
这种依赖带来两个问题:
- 必须安装 Claude Code,且需要 Anthropic API(国内访问不便、账号余额管理麻烦);
- 无法脱离 Claude Code 运行,不能打包成分发工具,也不能用国内大模型 API。
目标:改造为一套在 Windows 上可独立运行的 Python 工具,支持国内 AI 库(DeepSeek、通义千问、Moonshot 等),不依赖 Claude Code。
二、改造思路
核心是用 Python 替代 Claude Code 的运行时职责:
用户输入 → main.py 解析参数 ↓ skill_loader 加载 skills/*.md 并替换 $ARGUMENTS ↓ llm_client 发送给 LLM API ←→ tools.py 执行工具 ↓ (run_command / read_file / write_file LLM 返回文本或工具调用 / web_search / web_fetch / spawn_agent) ↓ (循环直到完成) 输出报告关键设计
| 模块 | 职责 |
|---|---|
main.py | CLI 入口,解析命令行参数,启动技能执行 |
config.py | 从.env加载配置(API key、模型、provider) |
skill_loader.py | 加载skills/*.md,替换$ARGUMENTS,构造 system prompt |
tools.py | 6 个工具定义与执行器 |
llm_client.py | LLM 客户端,支持 Anthropic 和 OpenAI 兼容 API,实现 function calling 循环 |
双 API 支持
通过.env中的LLM_PROVIDER切换:
anthropic→ 走 Anthropic Claude 官方接口openai→ 走 OpenAI 兼容接口(DeepSeek、通义千问、Moonshot、本地 Ollama 等都兼容)
国内模型通过 OpenAI 兼容接口接入,无需改动业务代码。
三、安装验证过程(踩坑记录)
阶段 1:一键安装脚本的中中文乱码
最初用install.bat做一键安装,但批处理文件保存为 GBK 编码、终端是 UTF-8 时,中文注释会被解析成命令,报'AI' 不是内部或外部命令这类错误。
解决:把 install.bat 的所有输出改成纯 ASCII,避免编码问题。
阶段 2:依赖安装
python -m pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple注意:cmd.exe 里 URL不能加反引号或引号,否则会被当作 URL 的一部分传给 pip。
验证:
python -c "import openai, anthropic; from duckduckgo_search import DDGS; print('OK')"阶段 3:冒烟测试的 f-string 语法错误(Python 3.13)
_setup_helper.py里在 f-string 内部用了{\"version\"}转义,Python 3.13 对 f-string 语法更严格,直接报SyntaxError: unexpected character after line continuation character。
解决:重写_setup_helper.py,把内联的测试代码改为写入临时 .py 文件再执行,彻底避开引号转义地狱。
阶段 4:config.py 空文件导致 ImportError
运行时报:
ImportError: cannot import name 'load_config' from 'config'排查发现config.py是空文件(之前写入被静默拦截),其他 3 个模块(skill_loader / tools / llm_client)都正常。
解决:重新写入config.py,实现.env加载 + 配置 dataclass。
阶段 5:API 余额与配置错配
第一次运行报402 Insufficient Balance,且诊断信息显示配置错配:
模型: deepseek-v4-pro ← 模型名是 DeepSeek 的 Provider: anthropic ← 但 Provider 却是 anthropic两个问题:
- Provider 与模型不匹配:DeepSeek 用 OpenAI 兼容接口,
LLM_PROVIDER必须是openai,不是anthropic; - 模型名不存在:
deepseek-v4-pro不是 DeepSeek 官方型号,正确的是deepseek-chat; - 余额不足:报错格式不是 DeepSeek 官方格式,疑似走了第三方中转账号。
解决:.env四项必须配套一致:
LLM_PROVIDER=openai LLM_API_KEY=sk-你的deepseek密钥 LLM_BASE_URL=https://api.deepseek.com/v1 LLM_MODEL=deepseek-chat阶段 6:端到端验证通过
python main.py dyp-ask "用一句话解释什么是好生意"输出:
✅ 整个链路跑通:环境安装 → config 加载 → skill prompt 组装 → LLM API 调用 → 中文输出正常。
四、使用方法
1. 安装
cd E:\Code\Open\ai-berkshire-main\standalone python -m pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple2. 配置 .env
copy .env.example .env notepad .env三个国内选项任选其一:
DeepSeek(推荐)
LLM_PROVIDER=openai LLM_API_KEY=sk-xxxx LLM_BASE_URL=https://api.deepseek.com/v1 LLM_MODEL=deepseek-chat通义千问
LLM_PROVIDER=openai LLM_API_KEY=sk-xxxx LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 LLM_MODEL=qwen-plusMoonshot(Kimi)
LLM_PROVIDER=openai LLM_API_KEY=sk-xxxx LLM_BASE_URL=https://api.moonshot.cn/v1 LLM_MODEL=moonshot-v1-128k3. 运行技能
:: 列出所有技能 python main.py --list :: 巴菲特买入前 Checklist python main.py investment-checklist 腾讯 :: 股价异动快速归因 python main.py news-pulse 拼多多 :: 四大师综合深度研究 python main.py investment-research 美团 :: 段永平问答(最轻量) python main.py dyp-ask "拼多多护城河在哪"五、总结
成果
- 成功将
ai-berkshire从 Claude Code 依赖改造为 Windows 独立运行工具; - 支持国内 AI 库(DeepSeek / 通义千问 / Moonshot),通过 OpenAI 兼容接口接入,无需改动业务代码;
- 保留原项目全部 20 个技能功能,包括需要 function calling 的复杂技能(investment-checklist、news-pulse 等)。
踩坑总结
| 坑 | 根因 | 解决 |
|---|---|---|
| install.bat 中文乱码 | GBK/UTF-8 编码不一致 | 批处理输出改纯 ASCII |
| pip install 无输出 | cmd 不识别反引号 | URL 不加任何引号 |
| f-string 语法错误 | Python 3.13 更严格 | 测试代码写临时文件执行 |
| ImportError load_config | config.py 空文件 | 重新写入 config.py |
| 402 Insufficient Balance | Provider 与模型错配 + 余额不足 | .env四项配套配置 |
关于国内模型的注意事项
国内模型的 function calling 能力整体弱于 Claude/GPT-4o:
- DeepSeek / 通义千问:支持 function calling,能正常跑需要工具调用的技能;
- Moonshot:支持但稳定性略差;
- 如果某个 skill 跑起来 LLM 不调工具只给文本,换 DeepSeek 或 Qwen 试试。
适用场景
- 想用原项目投研技能但不想装 Claude Code 的用户;
- 想用国内大模型 API(成本更低、访问更稳)的用户;
- 想把工具打包分发给他人使用的场景。