单 Agent 架构
PAIfeat/single-agent 分支采用 Agent + Harness 分层架构,与 main 分支的多节点 Router 架构不同。核心理念是:Harness 负责状态管理和流程控制,单一 Agent 拥有全部工具并自主决策。
架构分层
Harness 层(StateGraph)
Harness 是基于 LangGraphStateGraph 构建的状态管理层,负责以下职责:
- 状态持久化:维护对话状态、用户信息、上下文等
- 新用户引导:当
setup_stage < 3时,将请求路由到 onboarding 流程 - 待确认流程:处理 pending_ledger 等需要用户确认的中间状态
- Agent 调度:在上述前置条件不满足时,将请求交给 Agent 处理
Agent 层(create_agent)
Agent 通过 LangChain 的create_agent 创建,是整个系统的智能决策核心:
- 拥有全部工具:所有 24 个内建工具 + MCP 外部工具统一注册
- 自主决策:无需意图分类,Agent 根据用户消息自主判断调用哪些工具
- 跨领域协作:可以在单次对话中同时使用记账、日程、记忆等不同领域的工具
- 工具注册:通过
langchain_tools.py统一注册所有工具
全部工具列表
Agent 可访问以下所有工具,无作用域限制:与多节点 Router 的对比
优势
- 简洁性:无需维护 Router 和多个专业节点,架构更清晰
- 无路由错误:不依赖 LLM 意图分类,避免了误分类导致的工具不可用问题
- 跨领域自由协作:Agent 可以在同一次推理中使用记账+日程+记忆等多种工具
- 更低延迟:省去了 Router 意图分类的 LLM 调用开销
- 易于扩展:新增工具只需在
langchain_tools.py中注册,无需考虑分配到哪个节点