virattt / dexter
Dexter 🤖
Dexter 是一个自主金融研究智能体,它能在工作中进行思考、规划和学习。它利用任务规划、自我反思和实时市场数据来执行分析。可以把它想象成专门为金融研究打造的 Claude Code。
目录
- 👋 概述
- ✅ 前提条件
- 💻 如何安装
- 🚀 如何运行
- 📊 如何评估
- 🐛 如何调试
- 📱 如何与 WhatsApp 配合使用
- 🤝 如何贡献
- 📄 许可证
👋 概述
Dexter 能够接收复杂的金融问题,并将其转化为清晰、逐步的研究计划。它使用实时市场数据执行这些任务,检查自己的工作,并不断优化结果,直到得出一个有数据支撑的、可信的答案。
关键能力:
- 智能任务规划: 自动将复杂查询分解为结构化的研究步骤
- 自主执行: 选择并执行合适的工具来收集金融数据
- 自我验证: 检查自己的工作,并迭代直至任务完成
- 实时金融数据: 可访问利润表、资产负债表和现金流量表
- 安全特性: 内置循环检测和步骤限制,防止无限执行
- Bun 运行时(v1.0 或更高版本)
- OpenAI API 密钥([在此获取](https://platform.openai.com/api-keys))
- Financial Datasets API 密钥([在此获取](https://financialdatasets.ai))
- Exa API 密钥([在此获取](https://exa.ai))—— 可选,用于网络搜索
✅ 前提条件
安装 Bun
如果你尚未安装 Bun,可以使用 curl 进行安装:
macOS/Linux:
curl -fsSL https://bun.com/install | bash
Windows:
powershell -c "irm bun.sh/install.ps1|iex"
安装完成后,重启终端并验证 Bun 是否安装成功:
bun --version
💻 如何安装
- 克隆仓库:
- 使用 Bun 安装依赖:
- 设置环境变量:
git clone https://github.com/virattt/dexter.git
cd dexter
bun install
# 复制环境变量示例文件
cp env.example .env
# 编辑 .env 文件并添加你的 API 密钥(如果使用云服务商)
# OPENAI_API_KEY=your-openai-api-key
# ANTHROPIC_API_KEY=your-anthropic-api-key (可选)
# GOOGLE_API_KEY=your-google-api-key (可选)
# XAI_API_KEY=your-xai-api-key (可选)
# OPENROUTER_API_KEY=your-openrouter-api-key (可选)
# 为智能体提供的机构级市场数据
# FINANCIAL_DATASETS_API_KEY=your-financial-datasets-api-key
# (可选) 如果在本地使用 Ollama
# OLLAMA_BASE_URL=http://127.0.0.1:11434
# 网络搜索 (首选 Exa,Tavily 作为备选)
# EXASEARCH_API_KEY=your-exa-api-key
# TAVILY_API_KEY=your-tavily-api-key
🚀 如何运行
以交互模式运行 Dexter:
bun start
或者在开发模式下使用监听模式运行:
bun dev
📊 如何评估
Dexter 包含一个评估套件,用于针对一组金融问题测试智能体。评估使用 LangSmith 进行跟踪,并采用 LLM-as-judge 方法对答案的正确性进行评分。
运行所有问题:
bun run src/evals/run.ts
对数据随机抽样运行:
bun run src/evals/run.ts --sample 10
评估运行器会显示一个实时界面,展示进度、当前问题以及实时准确率统计。结果会记录到 LangSmith 以供分析。
🐛 如何调试
Dexter 会将所有工具调用记录到一个 scratchpad 文件中,用于调试和历史追踪。每个查询都会在 .dexter/scratchpad/ 目录下创建一个新的 JSONL 文件。
Scratchpad 位置:
.dexter/scratchpad/
├── 2026-01-30-111400_9a8f10723f79.jsonl
├── 2026-01-30-143022_a1b2c3d4e5f6.jsonl
└── ...
每个文件包含以换行符分隔的 JSON 条目,用于追踪:
init:原始查询tool_result:每次工具调用及其参数、原始结果和 LLM 摘要thinking:智能体的推理步骤
Scratchpad 条目示例:
{
"type": "tool_result",
"timestamp": "2026-01-30T11:14:05.123Z",
"toolName": "get_income_statements",
"args": {
"ticker": "AAPL",
"period": "annual",
"limit": 5
},
"result": { ... },
"llmSummary": "检索了苹果公司5年的年度利润表,显示营收从2740亿美元增长至3940亿美元"
}
这使得检查智能体收集了哪些数据以及它如何解释结果变得非常容易。
📱 如何与 WhatsApp 配合使用
通过将你的手机链接到网关,即可通过 WhatsApp 与 Dexter 聊天。你发送给自己的消息将由 Dexter 处理,回复也会发送回同一个聊天窗口。
快速开始:
# 链接你的 WhatsApp 账户(扫描二维码)
bun run gateway:login
# 启动网关
bun run gateway
然后打开 WhatsApp,进入你自己的聊天窗口(给自己发消息),向 Dexter 提问。
有关详细的设置说明、配置选项和故障排除,请参阅 [WhatsApp Gateway README](https://github.com/virattt/dexter/tree/main/gateway)。
🤝 如何贡献
- Fork 本仓库
- 创建一个功能分支
- 提交你的更改
- 推送到该分支
- 创建一个 Pull Request
重要提示: 请保持你的 Pull Request 小而精,这将有助于更轻松地进行审查和合并。
📄 许可证
本项目采用 MIT 许可证。