# 06 - 会话记忆与 Evolver > 会话解决“发生过什么”,记忆解决“下次如何做得更好”。两者都必须按用户、目标和安全策略治理。// Logan.Li --- ## 会话表 `agent_cli_sessions` 记录一次任务级元数据: | 字段 | 说明 | |------|------| | `UserID` | 发起用户 | | `Mode` | `host` / `kubernetes` | | `ServerID`、`ServerName`、`ServerHost` | 主机目标快照 | | `ClusterID`、`ClusterName`、`Namespace`、`PodName`、`Container` | K8s 目标快照 | | `Title` | 任务标题 | | `Status` | `running/done/aborted/error` | | `Provider`、`Model` | LLM 快照 | | `Rounds`、`TotalTokens`、`Duration` | 执行统计 | | `Error` | 错误信息 | --- ## 消息表 `agent_cli_messages` 记录事件级过程: | 字段 | 说明 | |------|------| | `Round` | ReAct 轮次 | | `Type` | `session/thought/tool_call/tool_result/done/error` | | `Role` | `user/assistant/tool` | | `Content` | 用户输入、思考、最终答案 | | `ToolName`、`ToolArgs`、`ToolOutput` | 工具过程 | | `Risk`、`Success`、`Duration`、`Tokens` | 风险和统计 | 历史回放只读取消息,不重新调用 LLM 或工具。 --- ## WebSocket 生命周期 ```text connect → start → create session → persist user message → run Agent → persist events → finish session ``` 控制消息: | type | 说明 | |------|------| | `start` | 新任务 | | `continue` | 当前会话继续追问 | | `resume` | 恢复历史上下文 | | `confirm` / `reject` | 高危工具决策 | --- ## 继续追问 继续追问依赖 `buildConvHistoryFromMessages()`: ```text agent_cli_messages → 重建 []llm.Message → 保持 tool_call/tool_result 配对 → core.Agent.Run(prior=history) ``` 这要求历史消息不能只存纯文本,必须保留工具调用结构。 --- ## Evolver 记忆 Evolver 在任务结束后异步学习: ```text RunResult → TaskExecution → Evolve() → experiences / facts / procedures → 下次 BuildSystemPrompt 注入 ``` 当前默认目录: ```text data/agentcli/ ``` 任务失败也可以产生有效经验,但必须标注失败原因。 --- ## 记忆类型 | 类型 | 作用 | |------|------| | Experience | 某类任务的成功/失败经验 | | Fact | 主机、集群、服务的稳定事实 | | Procedure | 可复用排障步骤 | | Skill | 预留为结构化技能或 Runbook | --- ## 会话和记忆的区别 | 维度 | 会话 | 记忆 | |------|------|------| | 目的 | 回放、审计、继续追问 | 下次任务提示 | | 粒度 | 每条事件 | 提炼后的经验 | | 存储 | DB | 当前文件,后续 DB 化 | | 删除 | 用户可删除历史 | 需要独立治理 | | 风险 | 工具输出泄露 | 敏感事实长期留存 | --- ## 企业化建议 | 能力 | 说明 | |------|------| | 记忆 DB 化 | 按 user_id、team_id、target_id 隔离 | | 记忆可视化 | 用户能查看 AI 记住了什么 | | 记忆删除 | 支持删除、禁用、过期 | | 记忆脱敏 | 敏感输出不进入记忆 | | 团队共享 | 高质量经验可转为团队 Runbook | | 来源追踪 | 每条记忆能追溯到 session/message |