问财报AI却答非所问?Dexter任务分解机制完整指南
2026/9/5 11:49:47 网站建设 项目流程

问财报AI却答非所问?Dexter任务分解机制完整指南

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

把"特斯拉Q3财务健康状况如何"丢进对话框,没有工具链的模型往往只能给一个听起来合理的回答。Dexter是一个开源的Autonomous Agent,专门做金融研究,它靠任务分解处理这类问题:先拆问题,再用工具查数据,最后写结论。

Agent Loop闭环:想一次、查一次、收一次尾

先想一位资深分析师查一家公司的节奏:先写下要查什么,再打开终端拉数据,查完记一句小结,然后决定下一步。Dexter的核心循环干的就是这件事,入口是src/agent/agent.ts里的run方法。

整个过程是一个while循环,每一圈叫一次迭代。模型拿到当前上下文后有两种返回:一种是发起工具调用,系统执行工具、把结果写回上下文,进入下一圈;另一种是返回纯文本,说明模型认为数据够了,这段文本就是最终答案,循环直接结束。

循环靠两块"记忆"支撑。一块是src/agent/scratchpad.ts里的工作区:每次思考、每次工具调用都追加进一个JSONL文件,事后可以完整回放研究过程。另一块是内存里的消息数组,逐轮增长,模型的推理连续性依赖它。

所以一轮的完整动作是:模型想、模型做、结果被压缩后写回、等待下一轮判断。这里的"收尾"不是每轮都让模型写摘要,常规轮次只做轻量清理,上下文超过阈值才会触发真正的总结。

把金融问题拆成可执行步骤的三个环节

怎么把用户问题匹配到对的工具

多数人以为系统靠代码里的关键词匹配来选工具,其实不是。src/tools/registry.ts给每个工具登记了"何时用、何时别用"的说明文字,这些说明整体写进系统提示,由模型看到问题后自行挑选。以"分析AAPL投资价值"为例,模型会选get_financials查基本面、get_market_data查行情和新闻。注册表还标注每个工具是否可并发,只读工具被允许并行跑,一轮工具调用结束得更快。

为什么迭代次数必须设上限

自主智能体最容易掉进"反复查同一份数据"的死循环。Dexter设了两道防线:一道是循环上限maxIterations,默认10轮,到点后直接告诉用户"步骤预算内无法完成",而不是硬撑着继续转;另一道是Scratchpad里的工具调用计数,每个工具建议最多调3次,还会对查询做词重叠检测,发现你在重复查同一件事,就提示模型换工具换关键词,或者向用户承认数据缺口。

上下文压缩怎么做,长调研才不会爆掉

工具返回的数据经常比模型装得下的多。Dexter用三层闸门:单条结果过大时先落盘,上下文里只留预览;每轮结果总量有预算上限;当估算的上下文token超过阈值,再触发一次LLM总结,把前面几轮的结果换成一份摘要。关键是原始数据没有丢,完整结果都存在工作区文件里,压缩只作用于"模型这一轮看得见的内容"。

跟踪一次真实拆解:特斯拉Q3财务健康的问题

以"评估特斯拉2024年Q3的财务健康状况"为例,实际执行顺序大致是:

  1. 问题判定:先弄清目标公司、季度、判断维度三要素,确定优先查什么数据;
  2. 第一轮工具调用:用read_filings拉取10-Q季报,摘出流动性和负债相关章节;
  3. 第二轮工具调用:用get_financials取同期资产负债表、利润表和现金流量表,生成关键比率;
  4. 第三轮工具调用:用get_market_data补充行情与新闻背景,也可用stock_screener做同业对照;
  5. 每轮结果都经过落盘与预算检查后写入工作区,要点才进入上下文;
  6. 模型判断数据足够时,在本轮直接给出最终答案,循环结束;若先撞上10轮上限,则停止并如实说明。

3分钟看懂底层架构

代码层面,三个文件支撑着整套机制,分工很明确:src/agent/agent.ts跑循环,负责模型调用、工具并发执行和上下文管理;src/tools/registry.ts管工具清单,决定模型能调用哪些工具;src/agent/prompts.ts拼装系统提示,把智能体的"灵魂"文档、用户自定义规则、记忆内容和工具说明合成一份提示词。循环的骨架可以浓缩成下面几行:

while (ctx.iteration < this.maxIterations) { const response = await this.callModelWithStreaming(messages); if (!hasToolCalls(response)) return handleDirectResponse(response); // 有工具调用:执行并把结果写回上下文,进入下一轮 }

可以看到,"还要不要继续查"的判断完全交给模型,系统只管边界条件。这也是整个过程可控的原因:模型随时可以停,系统也随时能停。

这套机制的价值不在让答案"更聪明",而在让研究过程可控制、可追溯:每次工具调用都落盘,上下文压缩有明确阈值,撞线就停止并如实报告。对需要经得起核对的金融研究场景,这比输出更长的文字更重要。

想亲手试一下,只需要Bun运行时和几个API密钥:

git clone https://gitcode.com/GitHub_Trending/dexter19/dexter cd dexter && bun install

克隆完成后执行cp env.example .env填好密钥,bun start就能开始提问。

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

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

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

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

立即咨询