Dexter 的任务拆解机制:复杂金融问题如何被一步步解决
【免费下载链接】dexterAn autonomous agent for deep financial research项目地址: https://gitcode.com/GitHub_Trending/dexter19/dexter
问一句"帮我分析这家公司的投资价值",多数 AI 只会丢回一段含糊的模板话。Dexter 是一个金融研究智能体,它的核心是把这类问题做任务拆解:先查数据,再自我校验,反复迭代,直到给出有数据支撑的结论。
这套机制解决了什么真实麻烦
- 把"分析 AAPL 值不值得买"这种一句话提问,拆成查财报、看行情、读 10-K、同业对比一连串动作,而不是甩回一段套话。
- 长研究不怕丢数据:每次工具调用的原始结果都落盘到一张草稿纸,就算上下文被压缩,磁盘上的记录还在,能接着跑。
- 防跑飞:迭代有硬上限、单工具调用有软限、相似查询会被识别出来,避免它在同一个坑里反复打转烧掉 token。
一个问题的完整旅程:从提问到结论 🧭
拿"评估特斯拉 2024 年 Q3 的财务健康"这句话,走完它在 Dexter 里的一趟。
接题。这句话进入主循环,Dexter 为它开一张草稿纸(scratchpad),把原始 query 记下来,作为这一整轮的唯一事实来源。
拆解目标。模型读完后不会马上答,而是先想清楚要哪几块数据:现金流、债务、营收增速。这一步不写死,是模型自己判断的。
挑选工具。Dexter 手里注册了一批工具,财报、行情、股票筛选、网页抓取各管一摊。问题要的是财报口径,它就把目光落在财务数据类工具上,一次可传自然语言整句查询。
调用与摘要数据。模型发出的工具调用被派出去执行。只读类的工具可以并发跑,省时间;拿回来的大结果先做截断,超标的部分写进磁盘、上下文里只留一段预览。原始结果则完整追加到草稿纸。
判断是否继续迭代。这一轮如果模型还带着工具调用,说明它觉得数据不够,结果就被塞回消息数组,进入下一轮再想。如果这一轮没有工具调用,Dexter 就判定信息已经够,直接进入出答案。
输出答案。最终回复连同调用了哪些工具、跑了多少轮、花了多少 token,一起交回给终端。到这里,一句话的问题变成了一条可复现的数据链。
任务拆解背后的三个关键设计
为什么原始数据要单独留一份?因为上下文迟早要清理,而清掉的东西不该找不回来。Dexter 把每次工具调用的参数和完整结果追加写进 JSONL 文件,压缩前后都能原样读回。
// src/agent/scratchpad.ts addToolResult(toolName, args, result) { this.append({ type: 'tool_result', timestamp: new Date().toISOString(), toolName, args, result: this.parseResultSafely(result), }); }为什么给迭代和工具都设限?因为金融研究最容易在"换个词再查一遍"上打转。Dexter 用两层保险:轮数有硬顶,单工具超建议次数只做提醒、不硬拦,把"该不该换思路"留给模型判断。
// src/agent/agent.ts const DEFAULT_MAX_ITERATIONS = 10; // src/agent/scratchpad.ts const DEFAULT_LIMIT_CONFIG: ToolLimitConfig = { maxCallsPerTool: 3, similarityThreshold: 0.7, };为什么上下文要分三级管?因为轮次一多,上下文会撑爆。Dexter 从轻到重上手段:先零成本地清掉旧工具结果,再调一个快速模型做保留全部数字的结构化摘要,最后才截断最旧的轮次。
// src/agent/microcompact.ts export const COUNT_TRIGGER_THRESHOLD = 8; // 可压缩工具结果超过 8 个 export const COUNT_KEEP_RECENT = 4; // 只保留最近 4 个 export const TOKEN_TRIGGER_THRESHOLD = 80_000; // 或内容超过 8 万 token亲手跑一遍:最短路径 🚀
五条命令就能跑通第一条结果。
git clone https://gitcode.com/GitHub_Trending/dexter19/dexter cd dexter bun install cp env.example .env # 填入 API 密钥 bun start启动后问一句具体的金融问题,看它一轮轮调用工具、把数据落进草稿纸,最后给出结论。想查它每一步干了什么,去.dexter/scratchpad/里翻本次查询对应的 JSONL 文件即可。
它让一句模糊的提问,落成一条可追溯的数据链。更多调试与运行说明见 README.md。
【免费下载链接】dexterAn autonomous agent for deep financial research项目地址: https://gitcode.com/GitHub_Trending/dexter19/dexter
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考