Dexter 实战指南:AI 金融分析师的任务拆解术全揭秘
2026/9/7 16:03:40 网站建设 项目流程

Dexter 实战指南:AI 金融分析师的任务拆解术全揭秘

【免费下载链接】dexterAn autonomous agent for deep financial research项目地址: https://gitcode.com/GitHub_Trending/dexter19/dexter

想 10 分钟搞清一家公司上个季度的财务健康度,你得翻几份报表、算多少比率?Dexter 是一个自主金融研究智能体,能把这类复杂金融分析拆成可执行的步骤,替你把数据找齐、算完,再写成一份能读的报告。它怎么做到的?拆开看。

一、它到底在解决什么问题?

把 Dexter 想象成一位从不疲倦的财务分析师:你只给问题,它自己决定查什么、算什么、查几轮,最后把散落在各处的数字缝成一份结论。

它接住的是自然语言问题——"AAPL 和 MSFT 谁的增长更快"、"这个币最近的走势如何"。能覆盖的输入包括三张财务报表、SEC 监管文件(10-K、10-Q)、股票与加密货币行情、公司新闻、内部人交易、机构持仓,输出则是一段自然语言分析,必要时附带数据表格。

你不需要知道哪个 API 查三表、哪个查行情——它替你选。

二、一次问答的完整旅程

问题真正进来时,它第一步做什么?

把它想象成医生问诊:先听你说哪里不舒服,判断该做哪几项检查;每次检查结果一回来,就决定要不要再开单,直到能下诊断。

Dexter 的核心循环在 src/agent/agent.ts 的run()方法里,每一轮都是"想清楚 → 做动作 → 记结果 → 判断够不够":

  1. 模型读入你的问题和工具清单,决定调用哪些工具;每个决定都先记进工作区
  2. 工具执行完,结果回传,模型重新评估:信息够了就出答案,不够就进入下一轮
  3. 模型不再要工具、直接给文字答案时,循环结束,这份文字就是最终报告

中间有个关键角色:Scratchpad(临时工作区)。它定义在 src/agent/scratchpad.ts,每次提问开一份新档案,把原问题、每轮思考、每次工具调用的参数和结果逐条追加,以 JSONL 格式存到.dexter/scratchpad/

append(entry: ScratchpadEntry): void { appendFileSync(this.filepath, JSON.stringify(entry) + '\n'); }

需要它的原因:上下文迟早要压缩,而原始数据不能丢——档案既是压缩时的数据源,也是每次调用的完整审计记录。

问题 → 思考 → 工具执行 → 记入 Scratchpad → 再思考 → … → 最终答案

三、三个让分析不跑偏的"旋钮"

旋钮 1:工具匹配

工具统一在 src/tools/registry.ts 注册。每个金融工具都带一份"何时用、何时别用"的说明,直接写进系统提示词——模型按说明对号入座。比如查三表走get_financials,行情走get_market_data;且约定一次调用就传完整问题,由工具内部做路由。

没有它,模型会在相近工具间反复横跳,拿回来的数据一半用不上。

旋钮 2:上下文瘦身

工具结果塞回对话上下文,上下文会越滚越肥。src/utils/tool-result-storage.ts 里设了单条结果的体积上限:

export const MAX_TOOL_RESULT_CHARS = 50_000;

超限的完整结果落盘,上下文里只留 2000 字符预览和文件路径;上下文逼近模型窗口时,src/agent/compact.ts 让一个快的 LLM 把累积结果总结成保留全部关键数字的摘要,用"原问题 + 摘要"替换原始消息继续跑。

没有它,十几轮之后上下文溢出报错,前面的数据全部作废。

旋钮 3:迭代刹车

const DEFAULT_MAX_ITERATIONS = 10;

这是硬上限,写在 src/agent/agent.ts。另外每个工具单次提问建议最多调 3 次,接近上限时模型会收到提醒:"换工具、换关键词,或承认数据缺口"。

没有它,一个查不到数据的工具能被反复重试到耗尽 Token。

四、跟着一个真实问题走完全程

问题:"评估特斯拉 2024 年 Q3 的财务健康度。"

  1. 问题进来:识别要素——公司(Tesla)、时间点(2024Q3)、维度(财务健康度),Scratchpad 建档
  2. 第一轮取数:调read_filings拿 10-Q 里的资产负债与现金流(src/tools/finance/filings.ts);同时调get_financials要利润表、营收增长和关键比率(src/tools/finance/get-financials.ts)——两个调用并发执行
  3. 摘要压缩:两份结果回传,只把关键数字留在上下文,原始数据落盘(src/utils/tool-result-storage.ts)
  4. 继续深挖:看到现金流为正但资本开支高,补查自由现金流与历史比率趋势(src/tools/finance/key-ratios.ts);再调get_market_data拿股价区间与当季新闻(src/tools/finance/stock-price.ts)
  5. 整合输出:第三轮工具返回后模型判断信息足够,不再调用工具,直接输出结论——现金储备、资本开支压力、营收增速对比,一段能读的话

机制是真的在跑:工具按轮次并发、结果逐条入账、刹车随时生效。

五、代码地图(快速定位)

文件职责
src/agent/agent.ts智能体主循环:思考、执行、收敛
src/agent/scratchpad.ts每次提问的临时工作区,记录全部中间过程
src/tools/registry.ts工具注册表,决定模型"手里有什么"
src/agent/prompts.ts系统提示词模板:行为准则 + 工具用法
src/tools/finance/财务工具集:三表、文件、行情、比率、筛选
src/agent/compact.ts上下文压缩:把累积结果总结成摘要

六、三步跑起来

git clone https://gitcode.com/GitHub_Trending/dexter19/dexter cd dexter && bun install cp env.example .env # 填入 OPENAI_API_KEY 与 FINANCIAL_DATASETS_API_KEY,然后 bun start

适合谁:想体验"提问 → 拿到研究报告"的金融数据流,或者想拆解一个 Agent 怎么管好上下文与工具的开发者。

拆解术的价值不在模型本身,而在模型周围那张工作台。

【免费下载链接】dexterAn autonomous agent for deep financial research项目地址: https://gitcode.com/GitHub_Trending/dexter19/dexter

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询