1. 页面概览

会话记忆管理页(V5 Stage 6,B5-5.5)是 LightAIP 的记忆流管理入口,路由为 /memory-manage。AIP 的 NLQ 链路以 user_id:data_source 复合键作为会话键,为每个用户在每个数据源上各维护一条记忆流(互不串扰):最近 6 轮保存原文、更早轮次压缩为 LLM 摘要,并附带实体提及抽取。本页提供当前登录用户的会话列表(数据源/会话键/消息条数/最近活动,含分页)、单会话记忆条目的按时间正序查看(含分页),以及按会话清空与一键清空全部记忆。

页面所有数据都来自 GET /chat/sessions、GET|DELETE /chat/sessions/:sid/memory,归属校验在后端按当前登录用户过滤。一句话总结:会话记忆页是"记忆流可见 + 按会话/全部清理"的隐私与调试工具。

2. 访问入口

2.1 路由与菜单

项目值
路由 path/memory-manage
路由 nameMemoryManage
路由 title会话记忆
requiresAuthtrue
菜单位置Action 栏目(ActionLayout.vue)「会话记忆」
前端源码action/web/src/views/MemoryManagePage.vue
路由注册action/web/src/router/index.js

2.2 认证与权限

meta 配置 requiresAuth: true;请求经 action/web/src/api/aipClient.js(baseURL /aip-api/v1)附 localStorage.aip_token,401 跳 /login。普通登录用户可访问,但仅能查看/清空自己的记忆。

2.3 端口与 API 前缀

AIP 后端默认端口 18080,API 前缀 /aip-api,实际请求路径 /aip-api/v1/chat/sessions。

3. 界面布局

+--------------------------------------------------+
| 会话记忆管理                                      |
|  AIP NLQ 会话记忆 · 按「用户 + 数据源」隔离 · 最近 6 轮原文 + 更早轮次摘要 · 实体提及标注 |
+--------------------------------------------------+
| [操作结果提示 alert(有消息时显示,可关闭)]          |
+--------------------------------------------------+
| 会话列表(N)[刷新][清空全部]                       |
|  表格:数据源 | 用户 / 会话键 | 消息条数 | 最近活动 | 操作 |
|         [查看记忆]                                 |
|  分页条:第 X/Y 页  每页[10▾] [上一页][下一页]       |
+--------------------------------------------------+
| 记忆条目 — <session_id> [数据源标签](共 N 条)[清空本会话记忆] |
|  表格:时间 | 角色 | 内容 | 摘要 | 实体提及          |
|  分页条:第 X/Y 页  每页[20▾] [上一页][下一页]       |
+--------------------------------------------------+

各板块职责:

4. 交互元素

控件位置含义与作用
刷新按钮会话列表标题重新加载会话列表,成功后提示"会话列表已刷新"
清空全部按钮会话列表标题二次确认(显示会话数与总条数、提示不可撤销)后对每个会话依次调用 DELETE /chat/sessions/:sid/memory,成功后提示合计清空条数;后端无单次"清空全部"端点
查看记忆按钮会话列表行加载并展示该会话的记忆条目(GET /chat/sessions/:sid/memory?limit=500)
清空本会话记忆按钮记忆条目标题二次确认("确认清空会话...该操作不可恢复")后 DELETE /chat/sessions/:sid/memory,成功后提示已清空 N 条并刷新两表
会话/条目分页条两表下方前端渲染分页:会话页大小 10/20/50、条目页大小 20/50/100;上下页 + 计数,首/末页对应按钮禁用
实体提及标签记忆条目表消息内命中的表名/指标名等实体,JSON 解析后以黄色标签展示

5. 后端关联

5.1 端点表

方法路径用途
GET/chat/sessions当前用户记忆会话概览(session_id / data_source / message_count / last_activity)
GET/chat/sessions/:sid/memory按时间升序列出记忆条目(query limit,默认 50,有上限钳制;条目含 data_source)
DELETE/chat/sessions/:sid/memory清空某会话记忆,响应 {deleted: N}(sid 为复合会话键,按「用户+数据源」精确清空)

5.2 关键机制

6. 权限与安全

7. 常见问题与排错

问题 1:会话列表为空

现象:提示"暂无会话记忆"。

原因:尚未在「智能查询」完成过成功的自然语言查询;查询失败轮次不写记忆。

处理:先去「智能查询」跑通一次查询,再回到本页点「刷新」。

问题 1b:同一个人的记忆分成了好几条会话

现象:列表里同一个用户出现多条会话,会话键形如 <user_id>:<数据源>。

原因:属预期——2026-09-15 起记忆按「用户 + 数据源」隔离,每在数据源上对话一次就产生(或续写)一条该数据源的记忆流。

处理:无需处理;按「数据源」列区分即可。历史遗留会话(改造前的裸 user_id 行)数据源显示为 unknown,不再参与新链路读写,可在本页清空。

问题 2:点「查看记忆」提示"加载记忆条目失败"

现象:红色 alert 报错。

原因:会话 ID 含特殊字符(复合键含 :)、后端 401,或服务返回 MEMORY_ERROR。

处理:确认 aip_token 有效;查看后端日志定位 MEMORY_ERROR;会话 ID 经 encodeURIComponent 处理,一般无需手工转义。

问题 3:清空后记忆条目仍有余留

现象:提示"已清空记忆(N 条)",但表格仍有数据。

原因:清空返回的 deleted 是后端删除条数,随后页面自动重新加载会话记忆,可能是刷新竞态或删除未提交。

处理:再次点「刷新」确认;若仍有数据则查看后端日志确认 DELETE 是否成功。

8. 已知缺陷与边界

项说明
清空全部为前端编排后端无单次"清空全部"端点,已补的「清空全部」按钮由前端对每个会话依次调用既有 DELETE(未新增后端接口);若个别会话失败会提示失败数量
分页为前端渲染(条目上限 500)会话列表接口无分页参数;条目接口仅支持 limit(上限 500)不支持 offset,故为一次取回后的前端渲染分页,单个会话超过 500 条时更早条目不可见
摘要覆盖不全摘要由 LLM 按需压缩回写,冷启动阶段旧轮次可能无摘要显示「-」
仅当前用户视角页面只展示登录用户自己的记忆,无管理员全局视角
历史遗留会话不参与新链路2026-09-15 改造前的会话键为裸 user_id,与新复合键不同源,故这些历史行的记忆不会被 NLQ 链路读写(等价于该用户记忆重置);列表仍会展示(数据源列显示 unknown)并可清空,不做数据源回填(历史行数据源不可考)
记忆条目表的 data_source 原样返回会话列表的 data_source 已归一(空 → unknown),条目接口的 data_source 为入库原值(历史行为空串);页面不展示条目级数据源列(同一会话内数据源一致)