Agent核心

📎 引用文件

本文引用的文件 - agent/src/agent/__init__.py - agent/src/agent/context.py - agent/src/agent/loop.py - agent/src/agent/memory.py - agent/src/agent/tools.py - agent/src/agent/skills.py - agent/src/agent/grounding.py - agent/src/agent/progress.py - agent/src/agent/trace.py

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考量
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件聚焦 Vibe-Trading Agent 的核心模块,系统性解释 ReAct Agent 循环机制、上下文构建器(ContextBuilder)的工作原理、系统提示词生成逻辑与消息处理流程。文档说明 Agent 如何解析用户意图、选择工具、执行任务并生成响应;给出启动、运行与终止的示例路径;记录配置选项、参数设置与返回值格式;并阐述与工具注册表、记忆系统与技能加载器的集成方式,提供常见问题解决方案与性能优化建议。

项目结构

Agent 核心位于 agent/src/agent 目录下,关键文件职责如下: - loop.py:ReAct 主循环、上下文压缩、工具批处理与事件流 - context.py:系统提示词构建、消息组装、工具描述格式化 - tools.py:BaseTool 抽象与 ToolRegistry 注册/执行 - skills.py:技能加载与章节化检索 - memory.py:工作区内存(run 级共享状态) - grounding.py:身份与数值证据门控、最终答案校验 - progress.py:心跳与结构化进度事件 - trace.py:崩溃安全的 JSONL 追踪写入

graph TB A["AgentLoop<br/>ReAct 主循环"] --> B["ContextBuilder<br/>系统提示词/消息构建"] A --> C["ToolRegistry<br/>工具注册/执行"] A --> D["WorkspaceMemory<br/>run 级共享状态"] A --> E["SkillsLoader<br/>技能加载/描述"] A --> F["GroundingLedger<br/>身份/证据门控"] A --> G["TraceWriter<br/>JSONL 追踪"] A --> H["Progress<br/>心跳/进度事件"]

图表来源 - agent/src/agent/loop.py:502-1203 - agent/src/agent/context.py:210-396 - agent/src/agent/tools.py:13-95 - agent/src/agent/skills.py:100-189 - agent/src/agent/grounding.py:584-753 - agent/src/agent/trace.py:64-180 - agent/src/agent/progress.py:30-185

章节来源 - agent/src/agent/__init__.py:1-9

核心组件

章节来源 - agent/src/agent/loop.py:502-1203 - agent/src/agent/context.py:210-396 - agent/src/agent/tools.py:13-95 - agent/src/agent/skills.py:100-189 - agent/src/agent/memory.py:13-54 - agent/src/agent/grounding.py:584-753 - agent/src/agent/trace.py:64-180 - agent/src/agent/progress.py:30-185

架构总览

下图展示了 AgentLoop 在一次请求中的端到端流程:构建上下文、多轮 ReAct 循环、工具批处理、上下文压缩、最终答案校验与结果输出。

sequenceDiagram participant U as "用户" participant AL as "AgentLoop" participant CB as "ContextBuilder" participant TR as "ToolRegistry" participant GL as "GroundingLedger" participant TW as "TraceWriter" participant PR as "Progress" U->>AL : 调用 run(user_message, history, session_id) AL->>CB : build_messages(user_message, history) CB-->>AL : messages[system + user(+recalled memories)] loop 最多 max_iterations 次 AL->>AL : 估算 token 数并执行多层压缩(L1/L2/L3) AL->>AL : stream_chat(messages, tools=definitions) alt 无工具调用 AL->>GL : validate_final_answer(final_content) GL-->>AL : 通过或拒绝(含修正提示) AL-->>U : 输出最终文本 else 有工具调用 AL->>TR : get_definitions() AL->>AL : _process_tool_calls(tool_calls) AL->>TR : execute(name, params) (并行/串行) TR-->>AL : JSON 结果 AL->>TW : write tool_result / thinking / answer AL->>PR : emit tool_progress / heartbeat AL->>AL : 追加 tool_result 到 messages end end AL-->>U : 返回 {status, content, iterations, ...}

图表来源 - agent/src/agent/loop.py:624-1203 - agent/src/agent/context.py:286-322 - agent/src/agent/tools.py:54-95 - agent/src/agent/grounding.py:584-753 - agent/src/agent/trace.py:92-180 - agent/src/agent/progress.py:89-185

详细组件分析

ReAct Agent 循环(AgentLoop)

flowchart TD Start(["开始 run"]) --> Init["初始化运行目录/状态/追踪/上下文"] Init --> Loop{"迭代 < max_iterations ?"} Loop --> |是| Compact["估算token -> 多层压缩"] Compact --> Stream["stream_chat 获取响应"] Stream --> HasTools{"是否包含工具调用?"} HasTools --> |否| Validate["最终答案校验(Grounding)"] Validate --> |通过| Answer["输出最终答案"] Validate --> |拒绝| Fix["插入修正提示并继续"] Fix --> Loop HasTools --> |是| Plan["_process_tool_calls"] Plan --> Exec["批量执行(只读并行/写串行)"] Exec --> Append["追加tool_result到messages"] Append --> Loop Loop --> |否| EndState{"确定最终状态"} EndState --> WriteEnd["写出end事件并关闭追踪"] WriteEnd --> Return["返回结果字典"]

图表来源 - agent/src/agent/loop.py:624-1203 - agent/src/agent/loop.py:1207-1703 - agent/src/agent/loop.py:1796-1917

章节来源 - agent/src/agent/loop.py:624-1203 - agent/src/agent/loop.py:1207-1703 - agent/src/agent/loop.py:1796-1917

上下文构建器(ContextBuilder)

classDiagram class ContextBuilder { +build_system_prompt(user_message) str +build_messages(user_message, history) Dict[] +format_tool_result(tool_call_id, tool_name, result) Dict +format_assistant_tool_calls(tool_calls, content, reasoning_content) Dict -_count_data_sources() int -_format_tool_descriptions() str } class ToolRegistry { +get_definitions() Dict[] +execute(name, params) str } class WorkspaceMemory { +to_summary() str } class SkillsLoader { +get_descriptions() str } ContextBuilder --> ToolRegistry : "读取工具描述" ContextBuilder --> WorkspaceMemory : "读取状态摘要" ContextBuilder --> SkillsLoader : "读取技能摘要"

图表来源 - agent/src/agent/context.py:210-396 - agent/src/agent/tools.py:54-95 - agent/src/agent/memory.py:13-54 - agent/src/agent/skills.py:100-189

章节来源 - agent/src/agent/context.py:210-396

工具注册表与执行(ToolRegistry/BaseTool)

classDiagram class BaseTool { +name str +description str +parameters Dict +repeatable bool +is_readonly bool +check_available() bool +execute(**kwargs) str +to_openai_schema() Dict } class ToolRegistry { -_tools Dict~str, BaseTool~ +register(tool) void +get(name) BaseTool +get_definitions() Dict[] +execute(name, params) str +tool_names str[] } ToolRegistry --> BaseTool : "管理实例"

图表来源 - agent/src/agent/tools.py:13-95 - agent/src/agent/loop.py:1393-1703

章节来源 - agent/src/agent/tools.py:13-95 - agent/src/agent/loop.py:1393-1703

技能加载器(SkillsLoader)

章节来源 - agent/src/agent/skills.py:100-189 - agent/src/agent/skills.py:229-387

工作区记忆(WorkspaceMemory)

章节来源 - agent/src/agent/memory.py:13-54

身份与证据门控(GroundingLedger)

章节来源 - agent/src/agent/grounding.py:584-753 - agent/src/agent/grounding.py:789-800

追踪与进度(TraceWriter/Progress)

章节来源 - agent/src/agent/trace.py:64-180 - agent/src/agent/progress.py:30-185

依赖关系分析

graph LR AL["AgentLoop"] --> CB["ContextBuilder"] AL --> TR["ToolRegistry"] AL --> GL["GroundingLedger"] AL --> TW["TraceWriter"] AL --> PR["Progress"] CB --> TR CB --> WM["WorkspaceMemory"] CB --> SL["SkillsLoader"]

图表来源 - agent/src/agent/loop.py:502-1203 - agent/src/agent/context.py:210-396 - agent/src/agent/tools.py:54-95 - agent/src/agent/skills.py:100-189 - agent/src/agent/grounding.py:584-753 - agent/src/agent/trace.py:64-180 - agent/src/agent/progress.py:30-185

性能考量

章节来源 - agent/src/agent/loop.py:227-320 - agent/src/agent/loop.py:1796-1917 - agent/src/agent/loop.py:1393-1703 - agent/src/agent/trace.py:44-53

故障排查指南

章节来源 - agent/src/agent/loop.py:920-941 - agent/src/agent/loop.py:1147-1162 - agent/src/agent/grounding.py:666-753 - agent/src/agent/loop.py:1659-1703 - agent/src/agent/trace.py:92-180

结论

Vibe-Trading Agent 核心通过 ReAct 循环、分层上下文压缩、工具批处理与身份/证据门控,实现了高可靠、可追溯、可扩展的智能体执行框架。ContextBuilder 将工具、技能与工作区状态有效注入系统提示词,GroundingLedger 保障数据一致性与合规性,TraceWriter 与 Progress 提供完整的可观测性。结合可调配置与性能优化策略,该核心模块能够支撑复杂的金融研究、回测与分析任务。

附录

Agent 循环的启动、运行与终止示例路径

章节来源 - agent/src/agent/loop.py:624-1203 - agent/src/agent/loop.py:1128-1203

配置选项与参数设置

章节来源 - agent/src/agent/loop.py:74-120 - agent/src/agent/trace.py:44-53

返回值格式

章节来源 - agent/src/agent/loop.py:1175-1203

与其他组件的集成

章节来源 - agent/src/agent/tools.py:54-95 - agent/src/agent/context.py:210-322 - agent/src/agent/skills.py:100-189