字节笔记本
2026年8月29日
Dexter:开源金融研究编码代理
编码代理已经会读仓库、改代码、跑测试。换到财报、10-K、同业对比,多数人还是自己开十几个标签页。Dexter 是一个专做这件事的开源代理:把复杂问题拆成研究步骤,自己拉实时数据,再回头检查有没有漏。作者把它说成「给金融研究用的 Claude Code」。
仓库在 virattt/dexter,TypeScript + Bun,版本号目前是 1.0.4。它不是交易机器人,README 也写得很清楚:教育、娱乐和信息用途,输出可能过时或错,不能当投资建议。
它实际会做什么
你丢进去一句自然语言,比如「Apple 过去五年自由现金流怎么变,现在估值贵不贵」。代理会拆任务、选工具、拉数据、自己验收,循环到它觉得站得住再给你答案。内置了步数上限和循环检测,避免一直转圈。
工具按用途分几层:
- 财务:
get_financials(利润表、资产负债表、现金流量表、指标、分析师预期)、get_market_data(价格、新闻、内部人交易)、read_filings(10-K / 10-Q / 8-K 按章节抽)、stock_screener(按 PE、增速、利润率筛) - 研究:网页抓取、浏览器(Playwright)、可选的
web_search(Exa / Perplexity / Tavily / LangSearch 谁配了用谁) - 代理自己:
spawn_subagent拆子任务并行、skill加载专项流程、memory_*读写持久记忆、cron/heartbeat做定时清单 - 本机:读文件、写文件、改文件(后两个要你批准);Unix / macOS 上还有
bash,同样每条命令都要批准
财务数据默认打到 Financial Datasets 的 API。这是作者自己的数据产品,工具层写死了这个端点。能用,但换数据源要自己改代码。模型这边比较松:OpenAI、Anthropic、Google、xAI、OpenRouter、Moonshot、DeepSeek,或者本机 Ollama。
装起来
需要 Bun 1.0+,再准备至少一把 LLM 密钥,以及一把 Financial Datasets 密钥。网页搜索可选。
curl -fsSL https://bun.com/install | bash
# 重开终端后
bun --version
git clone https://github.com/virattt/dexter.git
cd dexter
bun installpostinstall 会装 Playwright 的 Chromium,第一次会慢一点。然后把示例环境文件拷出来:
cp env.example .env最少填这几项:
OPENAI_API_KEY=sk-...
FINANCIAL_DATASETS_API_KEY=...有 Anthropic / Gemini / OpenRouter 的钥匙也可以写进去,交互里再切模型。想让它上网搜,再加 EXASEARCH_API_KEY 或 TAVILY_API_KEY。本地模型把 OLLAMA_BASE_URL 指到 http://127.0.0.1:11434 即可。
启动:
bun start开发时用 bun dev,会 watch 源码。进去之后直接问,不必先配一堆 slash command。
第一次可以这样问
问题写具体一点,代理拆步骤才有抓手。比如:
对比 AAPL 和 MSFT 过去 5 年的毛利率、营业利润率和自由现金流,
并各抽一份最近的 10-K 里「风险因素」做摘要。或者让它走内置的 DCF 技能:
给 NVDA 做一版 DCF,把 WACC 和永续增长率的敏感性也算出来。
仓库里有一份 src/skills/dcf/SKILL.md。代理匹配到「估值 / 内在价值 / 贵不贵」这类说法时,会先 skill 把这份流程加载进来:拉财务数据、算 FCF 增速、按行业估 WACC、五年预测加终值、折现到每股,再做 3×3 敏感性,最后把假设和不确定的地方一起写出来。这是流程模板,不是黑盒估值器。换一套增长率,数字会跟着走。
身份文件是仓库根上的 SOUL.md:它会按这份人格说话,偏「先拿数据再下判断」,不会每句都加「视情况而定」。你不喜欢这个口吻,改这一份就行。
跑完怎么对答案
每次提问会在 .dexter/scratchpad/ 下写一个 JSONL,文件名带时间戳。里面按行记:
init:你的原问题tool_result:工具名、参数、原始返回、模型自己的摘要thinking:中间推理
对答案时先翻这份日志,比盯终端滚动条快。常见对不上的原因:Financial Datasets 额度用尽、某个 ticker 没有对应报表、网页搜索密钥没配却问了「市场上怎么看」。
另外还有一套评测:bun run src/evals/run.ts,可以加 --sample 10 抽几道财务题跑。计分走 LLM-as-judge,轨迹会打到 LangSmith(要配 LANGSMITH_API_KEY)。第一次试用可以跳过。
想从手机问:WhatsApp 网关
仓库自带一个 WhatsApp 通道,用 Baileys 把你的号链上本地进程。消息发给自己,Dexter 处理后回同一条会话。
bun run gateway:login # 扫二维码
bun run gateway细节、配置项和排错见仓库里的 WhatsApp Gateway README。这是自托管,不是官方 Bot API,会话掉了要重新扫码。
用之前心里要有数
- 不是投顾。 输出可能错、可能过时。拿它当研究助理,别拿它下单。
- 数据绑在一家 API 上。 财报、行情、SEC 文件都走
api.financialdatasets.ai。免费额度有限,生产用量要自己看账单。想换数据源,得改src/tools/finance/。 - 写文件和 bash 会改你的机器。 这两类工具默认要批准。别在装了生产密钥的目录里随手开自动批准。
- 许可。 README 写的是 MIT;GitHub 仓库元数据目前没挂 SPDX,以仓库里的 LICENSE 文件为准。
如果你已经会用 Claude Code 一类的终端代理,Dexter 的心智模型几乎不用重新学:拆任务、调工具、自己验收。差别是工具箱换成了财报和文件,而不是 git 和测试。适合自己写研究备忘录、做同业对比、把 10-K 先压成提纲;不适合当自动交易或「一句话出买卖点」的黑盒。