Skip to content

智能体架构:从自然语言到交易决策

当你说"回测 BTC-USDT 的双均线策略",背后发生了什么?LLM 选择工具、Loader 拉取数据、引擎执行回测、LLM 解读结果——这不是流水线,而是一个经过精心编排的智能体循环。

系统架构概览

Vibe-Trading 的智能体架构分为三层:

  1. LLM 编排层:基于 LangChain 的 ChatOpenAI 兼容层,负责理解用户意图、选择工具、组织对话
  2. 工具执行层:47+ 个交易专用工具,涵盖数据、分析、交易、文件处理等
  3. 持久化层:会话记忆 + Skills 技能系统 + 文件存储
┌─────────────────────────────────────────────────────┐
│                    用户输入                              │
│  "回测沪深300在2024年的低波因子策略"                    │
└──────────────────┬──────────────────────────────────┘

┌─────────────────────────────────────────────────────┐
│                LLM 编排层(LangChain)                     │
│  ① 理解意图 → ② 选择技能/工具 → ③ 规划步骤 → ④ 执行    │
└──────────────────┬──────────────────────────────────┘

┌─────────────────────────────────────────────────────┐
│                工具执行层                                │
│  ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐      │
│  │回测  │ │数据  │ │因子  │ │分析  │ │交易  │ ...  │
│  └──────┘ └──────┘ └──────┘ └──────┘ └──────┘      │
└──────────────────┬──────────────────────────────────┘

┌─────────────────────────────────────────────────────┐
│                持久化层                                 │
│  会话记忆(FTS5) │ Skills 库(77个) │ 用户文件 │        │
└─────────────────────────────────────────────────────┘

LLM 编排层

多 Provider 支持

Vibe-Trading 通过 LangChain 的 ChatOpenAI 兼容层对接了 13 个 LLM provider,从云端服务到本地部署全覆盖:

  • 大型云端:OpenAI、Anthropic(通过 OpenRouter)、Gemini、DeepSeek
  • 国内平台:通义千问 / Qwen、智谱 GLM、月之暗面 Kimi、MiniMax、小米 MIMO
  • 其他:Groq、Z.ai(零一万物)
  • 本地部署:Ollama(无需 API key)
  • 特殊:OpenAI Codex(通过 ChatGPT OAuth)

每个 provider 的配置在 Settings 页面或 .env 文件中管理,支持 reasoning_effort 参数调优(如 DeepSeek R1 和 Gemini 的思考链模式)。

Agent Loop

智能体运行的核心是一个循环:

  1. 接收输入:CLI 文本、Web UI 消息、MCP 调用或 REST API 请求
  2. 意图路由:系统 prompt 根据用户输入选择匹配的 finance skill
  3. 工具调用:LLM 决定调用哪些工具(回测、数据加载、文件读取等)
  4. 结果整合:LLM 解读工具输出,生成自然语言回答
  5. 记忆更新:关键信息写入持久记忆,供后续会话使用
  6. 迭代终止:达到目标或触发停止条件(最大迭代 50 轮)

一个关键的设计细节是:在迭代预算的 80% 处会注入 wrap-up nudge,并在最后一次迭代丢弃 tool 定义以强制产出文本答案。这避免了智能体无限循环、永不给出结论的问题。

Reasoning Content 保留

对于支持思考链(Chain-of-Thought)的模型,Vibe-Trading 会保留 reasoning_content 并在所有 ChatOpenAI 路径中传递。这意味着 Kimi、DeepSeek 和 Qwen 等模型的思维过程可以在全链路中保持连贯。

工具系统

截至最近的统计,Vibe-Trading 拥有 47 个 MCP 工具,分布在以下类别:

类别工具数示例
回测3+run_backtest(含 validate/simulate/finalize 阶段进度通知)
数据7+read_document(PDF/Word/Excel/图片OCR/40+文本格式)
因子4+alpha_benchalpha_comparefactor_analysis
交易5+trading_place_ordertrading_cancel_order(mandate 守护)
智能体8+session_searchremembergoal_createswarm_run
文件4+read_filewrite_fileedit_file(安全路径约束)
Web2+web_searchweb_reader(带获取/解析阶段进度)
通用10+shell、MCP 桥接、配置等

工具调用不仅产出结果,还会实时反馈进度

  • 3 秒一次的心跳信号
  • 结构化阶段标记(如 validate / simulate / finalize
  • CLI 和 Web UI 双端的进度可视化
  • 第一次 Ctrl+C 优雅取消,第二次强制退出

记忆系统

Vibe-Trading 的记忆系统基于 SQLite FTS5 全文搜索,提供:

  • 跨会话记忆:不同会话之间可以共享和检索关键信息
  • FTS5 搜索:支持复杂查询和模糊匹配
  • 可编辑技能:用户可以通过 skill_writer_tool 创建和修改自己的技能
  • 5 层上下文压缩:在长对话中自动压缩历史,节省 token
  • Read/Write 批处理:减少 LLM 调用的往返次数

Research Goal 系统

Research Goal 是 Vibe-Trading 的任务运行器。它把一次研究请求转化为结构化的目标:

  • Criteria:定义"什么算完成"的验收标准
  • Claims:智能体提出的可验证声明
  • Evidence:支撑 Claims 的数据与推理
  • Budget:允许的迭代次数或 token 预算
  • Completion Policy:何时算完成的判定规则

Goal 可以在 CLI、Web UI、REST API 和 MCP 任意一端创建,支持继续、编辑、取消和完成操作。当 goal 的 criteria 已覆盖但 goal 仍 active 时,智能体会进入 audit/status 更新模式,而不是静默停住。

Skills 技能系统

Vibe-Trading 的 77 个 finance skill 不只是文档,而是可被 LLM 动态加载和执行的知识模块。每个 skill 是一个 YAML/配置文件,包含:

  • 触发条件:什么场景下自动激活
  • 工具列表:该 skill 可以调用的工具
  • 上下文提示:注入 LLM prompt 的领域知识
  • 工作流模板:常见任务的执行步骤

系统支持 Skill 的热加载、依赖管理和版本追踪。用户也可以在运行时通过对话创建自定义 skill,实现真正的工作流复用。

安全与边界

智能体系统的安全性体现在多个层面:

  • 路径隔离safe_path 函数严格限制文件读写范围
  • Shell 限制:shell-capable 工具按入口点限制
  • 策略加载门禁:LLM 生成的策略代码在导入前经过 AST 校验
  • 镜像安全:Docker 以非 root 用户运行
  • API 认证:远程部署要求设置 API_AUTH_KEY
  • 会话隔离:不同 session 之间的数据不互通

检验标准

读完本文后,你应该能回答:

  • Vibe-Trading 的智能体架构分哪三层?每层的核心职责是什么?
  • Agent Loop 的工作流程是怎样的?它是如何避免无限循环的?
  • 工具系统如何实现实时进度反馈?
  • Research Goal 系统解决的核心问题是什么?
  • 智能体系统的安全性如何在多个层面得到保证?
最近更新

基于 MIT LICENSE 许可发布