Skip to content

Latest commit

 

History

History
215 lines (135 loc) · 7.29 KB

File metadata and controls

215 lines (135 loc) · 7.29 KB

🔧 工具调用: visualize:read_me

💭 思考中...

🔧 工具调用: visualize:show_widget

💭 思考中...

Generic Agent 架构设计方案


一、总体架构概述

一个通用 Agent 可以形式化地定义为一个五元组:

[ \mathcal{A} = \langle \mathcal{O}, \mathcal{M}, \mathcal{S}, \mathcal{H}, \mathcal{P} \rangle ]

其中 (\mathcal{O}) 为核心调度器(Orchestrator),(\mathcal{M}) 为记忆模块(Memory),(\mathcal{S}) 为技能模块(Skill),(\mathcal{H}) 为历史模块(History),(\mathcal{P}) 为策略函数(Policy)。

Agent 在每一个时间步 (t) 的决策过程为:

[ a_t = \mathcal{P}\bigl(o_t,; \mathcal{M}t,; \mathcal{H}{<t},; \mathcal{S}\bigr) ]

即在当前观测 (o_t)、当前记忆状态、历史轨迹和可用技能集合共同作用下,输出动作 (a_t)。


二、核心调度器(Orchestrator)

调度器是 Agent 的"大脑",负责整个推理—计划—行动循环。

推理引擎采用 ReAct(Reason + Act)范式,每步生成格式为:

  • Thought:当前思考与分析
  • Action:调用哪个 Skill,带什么参数
  • Observation:Skill 返回结果

**规划器(Task Planner)**将复杂目标分解为子任务序列,采用层次化任务网络(HTN):

[ G \xrightarrow{\text{decompose}} {g_1, g_2, \ldots, g_n}, \quad g_i \xrightarrow{\text{assign}} s_i \in \mathcal{S} ]

**自我反思(Reflection)**模块在每轮行动后评估结果,计算目标满足度得分 (r_t \in [0,1]),若 (r_t < \theta) 则触发重规划。


三、记忆模块(Memory)管理方案

记忆系统分为四层,对应人类认知的不同层次:

3.1 工作记忆(Working Memory)

承载当前上下文窗口,容量受 LLM token 限制约束:

[ \mathcal{M}{work} = \bigl{(role_i, content_i)\bigr}{i=1}^{N}, \quad \sum_i \text{len}(content_i) \leq L_{max} ]

管理策略为滑动窗口 + 重要性保留:优先级高的内容(如系统提示、当前目标)永久保留,低优先级内容按 FIFO 淘汰。

3.2 情节记忆(Episodic Memory)

存储过去的对话片段与事件,基于向量数据库(如 Qdrant、Chroma)实现:

存储时,对每个片段 (e) 计算嵌入:(\mathbf{v}_e = \text{Embed}(e)),并附加元数据 ({timestamp, importance, session_id})。

检索时,给定查询 (q),取 Top-K 相关片段:

[ \mathcal{M}{ep}^(q) = \underset{e \in \mathcal{M}*{ep}}{\arg\text{top-}K}; \cos\bigl(\text{Embed}(q),; \mathbf{v}_e\bigr) ]

3.3 语义记忆(Semantic Memory)

存储结构化事实与知识,采用知识图谱形式:(\mathcal{G} = (V, E)),节点为实体,边为关系。支持基于 SPARQL 或自然语言转 Cypher 的查询。

3.4 程序记忆(Procedural Memory)

存储成功的技能执行策略模板,格式为:

[ {task_pattern \to (skill_sequence, param_template, success_rate)} ]

当新任务与已有模式的相似度 (\text{sim}(task_{new}, pattern_i) > \delta) 时,直接复用该策略,减少推理开销。

3.5 记忆写入与遗忘机制

重要性评分采用综合公式:

[ \text{importance}(m) = \alpha \cdot \text{recency}(m) + \beta \cdot \text{relevance}(m) + \gamma \cdot \text{frequency}(m) ]

其中 (\text{recency}(m) = e^{-\lambda \Delta t}) 为时间衰减项,(\alpha + \beta + \gamma = 1)。低于阈值 (\epsilon) 的记忆条目定期归档或删除。


四、技能模块(Skill)管理方案

4.1 技能定义规范

每个 Skill 以 JSON Schema 形式注册:

{
  "name": "web_search",
  "description": "在互联网上搜索实时信息",
  "parameters": {
    "query": {"type": "string", "description": "搜索关键词"},
    "max_results": {"type": "integer", "default": 5}
  },
  "returns": {"type": "array", "items": {"type": "string"}},
  "timeout_sec": 10,
  "retry_policy": {"max_attempts": 3, "backoff": "exponential"}
}

4.2 技能路由(Skill Router)

Orchestrator 将意图描述 (intent) 与所有技能描述做语义匹配:

[ s^* = \underset{s \in \mathcal{S}}{\arg\max}; \cos\bigl(\text{Embed}(intent),; \text{Embed}(desc_s)\bigr) ]

若最高得分低于置信阈值 (\tau),则退化为 LLM 直接生成参数(Function Calling 模式)。

4.3 技能执行沙箱

所有技能在隔离沙箱中运行,保证:

  • 超时控制:超过 (T_{timeout}) 自动中断
  • 资源配额:内存、CPU、网络带宽限制
  • 错误隔离:Skill 异常不传播到主进程

4.4 技能自学习(Skill Learner)

成功执行后记录反馈信号 (f = (skill, params, result, reward)),累积到程序记忆。当同类任务失败率超过阈值时,触发技能改写或新技能生成流程。


五、历史模块(History)管理方案

5.1 交互日志(Interaction Log)

以时间序列存储完整的 Agent 行为轨迹:

[ \mathcal{H} = \bigl[(t_1, o_1, a_1, r_1), (t_2, o_2, a_2, r_2), \ldots\bigr] ]

每条记录包含:时间戳、输入观测、输出动作、环境反馈。日志持久化到关系型数据库(如 PostgreSQL),同时异步推送到向量库以支持语义检索。

5.2 自动摘要压缩(Summarizer)

对长历史进行分层摘要,压缩比 (\rho = |summary| / |original|) 通常控制在 (0.1 \sim 0.2)。

采用滑动窗口摘要:每 (W) 轮对话触发一次摘要,新摘要与旧摘要融合后注入工作记忆:

[ summary_{k+1} = \text{LLM}\bigl(summary_k \oplus \mathcal{H}_{[k \cdot W,; (k+1) \cdot W)}\bigr) ]

5.3 状态快照(State Snapshot)

在关键节点(子任务完成、用户确认)保存 Agent 完整状态:

[ snapshot_t = \bigl(\mathcal{M}_{work}^t, ; goals_t, ; plan_t, ; env_state_t\bigr) ]

支持断点续传:Agent 崩溃或会话中断后,从最近快照恢复,而非从零开始。

5.4 审计追踪(Audit Trail)

每次决策记录决策链,包括"为何选择该 Skill"、"依据哪些 Memory",输出结构化日志供人工审查与合规核查,实现完整的可解释性追踪。


六、模块间交互流程

一次完整的 Agent 运行步骤如下:

1. 接收用户输入 o_t
2. [History]   检索近期历史摘要,注入上下文
3. [Memory]    向量检索相关情节记忆与语义知识
4. [Orchestrator] Thought → 推理当前状态与目标差距
5. [Skill Router] 选择最优 Skill s*,抽取参数
6. [Skill Executor] 沙箱执行,返回 Observation
7. [Memory]    将 Observation 写入工作记忆
8. [History]   将 (o_t, a_t, result) 追加到日志
9. [Reflection] 评估 r_t,决定继续 / 重规划 / 终止
10. 输出最终结果给用户

七、关键设计原则总结

设计维度 核心原则
Memory 分层存储、按需检索、重要性衰减淘汰
Skill Schema 标准化、语义路由、沙箱隔离、反馈自学习
History 完整记录、分层压缩、快照断点、可审计决策链
整体 模块解耦、异步并发、失败优雅降级

这套方案的核心优势在于:Memory 赋予 Agent 持久认知能力,Skill 赋予其可扩展行动能力,History 赋予其可追溯反思能力,三者协同驱动 Orchestrator 完成复杂的长时程任务。