RunResult 增加 Outcome/Reason;触顶标记 incomplete:max_steps; WebSocket finish 区分 incomplete 与 fatal error。补充 ai-agent docs 13 与挂点索引。
4.0 KiB
4.0 KiB
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 生命周期
connect
→ start
→ create session
→ persist user message
→ run Agent
→ persist events
→ finish session
控制消息:
| type | 说明 |
|---|---|
start |
新任务 |
continue |
当前会话继续追问 |
resume |
恢复历史上下文 |
confirm / reject |
高危工具决策 |
继续追问
继续追问依赖 buildConvHistoryFromMessages():
agent_cli_messages
→ 重建 []llm.Message
→ 保持 tool_call/tool_result 配对
→ core.Agent.Run(prior=history)
这要求历史消息不能只存纯文本,必须保留工具调用结构。
Evolver 记忆
Evolver 在任务结束后异步学习:
RunResult
→ TaskExecution
→ Evolve()
→ experiences / facts / procedures
→ 下次 BuildSystemPrompt 注入
当前默认目录:
data/agentcli/
任务失败也可以产生有效经验,但必须标注失败原因。
记忆类型
| 类型 | 作用 |
|---|---|
| Experience | 某类任务的成功/失败经验 |
| Fact | 主机、集群、服务的稳定事实 |
| Procedure | 可复用排障步骤 |
| Skill | 预留为结构化技能或 Runbook |
会话和记忆的区别
| 维度 | 会话 | 记忆 |
|---|---|---|
| 目的 | 回放、审计、继续追问 | 下次任务提示 |
| 粒度 | 每条事件 | 提炼后的经验 |
| 存储 | DB | 当前文件,后续 DB 化 |
| 删除 | 用户可删除历史 | 需要独立治理 |
| 风险 | 工具输出泄露 | 敏感事实长期留存 |
企业化建议
| 能力 | 说明 |
|---|---|
| 记忆 DB 化 | 按 user_id、team_id、target_id 隔离 |
| 记忆可视化 | 用户能查看 AI 记住了什么 |
| 记忆删除 | 支持删除、禁用、过期 |
| 记忆脱敏 | 敏感输出不进入记忆 |
| 团队共享 | 高质量经验可转为团队 Runbook |
| 来源追踪 | 每条记忆能追溯到 session/message |
续聊与 incomplete(2026-09-18 增补)// Logan.Li
平台路径:resumeSession → convHistory → continueTask(prior) ——相对 opsxcli 更接近真·续跑。
仍须对齐 13-契约:tool 轨迹完整;触顶/超时标记 incomplete + reason + resumable。
| 项 | 现状 | 目标 |
|---|---|---|
| 续聊 prior 注入 | 已有 | 保持;补集成测试与文档示例 |
| MaxIterations=16 硬停 | 有 | incomplete/max_steps,允许加预算再 continue |
| incomplete 对外语义 | 偏 error/文案 | 结构化状态枚举 |
| ToolTimeout / MaxContext | 120s / 8000 | 写入可观测字段;与契约一致 |
| opsxcli | aiops | |
|---|---|---|
| resume | UI 为主,引擎未接通 | 续聊链路已通 |
| tool integrity | 多 tool 有丢 observation 风险 | 按 tool_call_id 整组保留 |
| 默认上下文 | 6000 | 8000 |
| 默认工具超时 | 60s | 120s |