GitHub 上近期爆火的一个开源项目——Dexter,短短几个月突破 23.5K Star、2.9K Fork,一度登上 GitHub 日榜榜首。
作者一句话精准概括了它的定位:
Think Claude Code, but built specifically for financial research.
像 Claude Code 一样,但专攻金融研究。
Dexter 是什么?
Dexter 是一个终端里的 AI 金融研究员,能自动拆解问题、调用真实财报数据、自我验证。它不是聊天机器人,而是有「灵魂设定」(Buffett + Munger 投资哲学)的 Agentic 系统。
传统 AI 金融工具的痛点在于幻觉——你问 ChatGPT「苹果公司 2024 年营收增长驱动因素是什么」,它能给出听起来头头是道的分析,但数字可能是编的或过时的。在金融领域,幻觉是致命的。
Dexter 的解法:不要让 AI 凭感觉回答,而是让它真正去「查」,查完再「想」,想完还要「验」。
三层架构:
- Planning(规划层):把问题拆成一步步研究任务
- Execution(执行层):选对工具,去真实数据源拉数据
- Validation(验证层):检查自己的答案,发现不一致就迭代
Dexter 就像一个有巴菲特思维框架的新入职实习生:你给它一个问题,它会先列研究计划,然后去数据库查资料,查完自己对一遍逻辑,确认没问题再来汇报。
项目的核心配置文件之一是 SOUL.md——给 AI 写的「灵魂文档」,明确设定了 Dexter 的投资哲学:
- 来自巴菲特:「价格是你付出的,价值才是你得到的。」
- 来自芒格:「总是逆向思考——先问什么会让这个投资失败。」
- 核心原则:诚实优于舒适,实质优于表演。
这不是花哨的 prompt engineering,这是在给一个会「自主决策」的 Agent 设定价值观。
技术架构拆解
Dexter 用 TypeScript + Bun 开发,基于 LangChain 构建 Agent 核心,用 Ink(React for CLI)渲染终端 UI。项目结构清晰:
src/
├── agent/ # Agent 核心:循环逻辑、上下文压缩、Scratchpad
├── tools/ # 工具集:财报数据、网页搜索、浏览器
├── skills/ # 技能扩展:DCF 估值等 SKILL.md 工作流
├── model/ # 多 LLM 提供商抽象层
├── memory/ # 记忆管理
└── evals/ # 评估套件(LangSmith)
Agent 循环
核心 Agent Loop 在 src/agent/agent.ts 里,680 行代码,逻辑清晰。每一轮循环做以下事情:
- 微压缩检查(Microcompact):每轮调用 LLM 前先检查是否达到触发阈值,达到则清理旧工具结果内容
- 剥离旧思维(stripOldThinking):只保留最近 2 条 AIMessage 的推理内容,旧的只留工具调用结构
- 调用 LLM(支持流式输出):优先用流式,失败自动降级为阻塞式调用
- 并发执行工具:所有读数据工具(get_financials、read_filings、web_search、browser 等)并发跑,写操作工具和 skill 工具串行执行
- 大结果持久化:超过 size 限制的工具结果写磁盘,只把摘要放进上下文
- 上下文阈值管理:触发阈值后,按顺序执行「记忆写盘 → 全量压缩 → 截断兜底」
最多跑 10 轮(可配置),内置循环检测,不会失控跑飞。
上下文管理:Agent 工程的教科书级实践
Dexter 实现了三层上下文管理策略,从轻到重依次是:
Microcompact(每轮检查:工具结果 >8 条,或总 token 估算 >80,000 时触发)
↓ 整体上下文超阈值
Memory Flush(把工具结果摘要写入本地记忆文件)
↓ 继续超阈值
Full Compaction(调用 LLM 生成一段上下文摘要,替换掉全部历史消息)
↓ 压缩失败兜底
Message Truncation(强制裁掉最老的几轮对话)
这个设计借鉴了 Claude Code 的上下文压缩机制,但在金融场景做了定制——财报数据往往很大,所以加了「大结果持久化」逻辑,把超大工具结果写到本地 .dexter/ 目录,不占用 LLM 上下文。
Skills 扩展系统
Dexter 有一套和 SOUL.md 一脉相承的扩展机制:Skills。每个 Skill 就是一个 SKILL.md 文件,Agent 启动时自动扫描并注入系统 prompt。
内置两个 Skill:
- DCF 估值:一套 8 步走的完整 DCF 分析工作流,从拉取 5 年现金流历史、计算 FCF 增长率、按行业估算 WACC,到生成 3×3 敏感性矩阵。内置三个合理性校验,防止估值跑偏
- X 情绪研究:一套多步骤的 X/Twitter 舆情研究工作流,把问题拆成 3-5 个定向搜索查询,迭代筛选后生成按主题分组的情绪简报
你可以自己写 SKILL.md 文件扩展 Dexter 的分析能力。
工具箱:金融数据能力
财务数据(FinancialDatasets API):
- 收入表、资产负债表、现金流量表
- 股价、市值等关键指标
- SEC 文件(10-K 年报、10-Q 季报、8-K 重大事件公告)
- 内部人士交易记录
信息检索:
- web_search:三级降级链(Exa → Perplexity → Tavily)
- x_search:X/Twitter 搜索工具
- browser:Playwright 驱动的真实浏览器
支持的 LLM 提供商:OpenAI(默认 gpt-5.4)、Anthropic、Google、xAI(Grok)、OpenRouter、Ollama 本地模型,通过 /model 命令随时切换。
透明:Scratchpad 机制
金融 AI 最让人不放心的是「黑盒」——它给出答案,你不知道它经历了什么。Dexter 的解法是 Scratchpad(草稿本)。
每一次查询,所有工具调用的入参、原始返回、LLM 摘要都会写到 .dexter/scratchpad/ 下的 JSONL 文件里。你可以像审计师一样逐条复盘它的推理过程。
WhatsApp 接入
Dexter 可以绑定 WhatsApp 账号,直接在聊天界面问它金融问题:
# 扫码绑定 WhatsApp
bun run gateway:login
# 启动网关
bun run gateway
绑定完成后,给「自己」发消息,Dexter 会边「思考」边回复。相当于随身带了一个 24 小时在线的投资研究员。
快速上手
# 1. 安装 Bun 运行时
curl -fsSL https://bun.com/install | bash
# 2. 克隆项目
git clone https://github.com/virattt/dexter.git
cd dexter
# 3. 安装依赖
bun install
# 4. 配置 API 密钥
cp env.example .env
# 编辑 .env,填入 OPENAI_API_KEY(必填)和 FINANCIAL_DATASETS_API_KEY
# 5. 启动
bun start
启动后直接用自然语言提问,例如:
- 「分析苹果 2024 年营收增长的核心驱动因素」
- 「做一个特斯拉的简易 DCF 估值」
- 「比较英伟达和 AMD 过去 3 年的利润率」
苏米注:Dexter 让我感兴趣的不只是它能做金融分析,而是它的工程哲学。SOUL.md 这个设计细节说明——作者不是在给 AI 写提示词,而是在给一个「自主行动者」设定价值观和思维框架。深度垂直 + 哲学自洽,比功能堆砌更难复制。它的三层上下文管理方案(微压缩 → 记忆写盘 → 全量压缩)也是值得学习的工程模式,特别适合需要处理大量工具调用结果的 Agent 项目。
项目链接
- GitHub:virattt/dexter ⭐ 23.5K+
- FinancialDatasets API:financialdatasets.ai