Files
TanXin fe2b5f00ed release: 发布 v2.2.1 AI Agent 连续记忆合并与交互增强版本 (#127)
## 版本概述

发布 **v2.2.1** 版本,核心聚焦于 **AI Agent
连续运维记忆合并、实体对齐演进与前端交互体验增强**。彻底解决在复杂运维场景下,连续排查导致工作日志碎片化刷屏、记忆提炼过于草率简写、配置更新冲突并存以及前端卡片展示等痛点。

---

### 更新内容

1. **任务快照锚定与连续运维任务合并**:
   - 逆序定位本轮任务起点用户诉求,确保复杂长交互(超过 16 步)不丢失初始核心目标与显式参数;
- 引入时序紧邻度与连续任务强合并指引(30分钟内),指导大模型优先采用 `mode: "update_latest"`
承前启后地合并上一阶段成果,彻底解决排障过程中工作日志碎片化与 10 条配额被刷爆的问题;
   - 数据库 `UserDBDO` 支持原子合并更新最新一条工作历程,并在模型缺省时自动容错兜底。

2. **知识实体对齐与版本平滑演进**:
   - 提炼时注入当前服务器已存的知识项与凭据清单,强制约束修改配置或更换凭据时复用完全相同的 key 名;
- 结合底层 SQLite 原生 `UNIQUE(user_id, server_id, key)` 与 `ON CONFLICT DO
UPDATE` 实现原子更新,杜绝同一配置产生多条冲突脏数据;
   - 支持 `action: "delete"` 标记,允许用户明确废弃某项实体时在后台原子清理。

3. **长短时记忆职责彻底解耦**:
   - 会话内摘要(`this.state.summary`)专职保留未完结的任务目标、用户决策与待办上下文,彻底剔除冗长具体的命令流水账;
- System Prompt
中对“当前会话未决任务与决策摘要”与“服务器近期工作历程与操作备忘”进行语义与注入层隔离,消除同类信息双份冗余堆叠。

4. **真实凭据流通与通用协议规范**:
   - 彻底移除 Agent 工具输出中的破坏性正则硬脱敏代码,解除密钥与 Token 自动回填流转的阻碍;
- 移除非标准 `reasoning_effort` 参数,仅保留标准 `temperature: 0.1`,杜绝 OpenAI 官方
GPT-4o 等模型报 HTTP 400 校验错误;
   - 前置清洗 `<think>` 思考标签,避免 DeepSeek-R1 / QwQ 等推理模型思考阶段的草稿代码块被错误截获;
   - 补充循环步数上限与异常终止时的阶段性记忆提炼兜底,并增加纯问候本地快速熔断与并发排队补偿。

5. **前端工作历程呈现与交互增强**:
- 放宽提炼摘要字数限制至 100 字内(title 扩至 20
字内),引导大模型在不超过限制的前提下详实具体地记录排查背景、配置变更、服务状态及验证结果,消除草率简略;
   - 前端工作历程卡片应用 `-webkit-line-clamp: 2` 配合文本省略(`...`),保持整洁紧凑布局;
   - 支持鼠标悬停浮动展示完整文本 Tooltip,并支持点击直接展开/收起完整摘要内容。

---

### 提交列表

- `d99bd7b` release: 发布 v2.2.1 AI Agent 连续记忆合并与交互增强版本
- `542381a` feat: 放宽工作历程摘要长度至100字并支持前端两行截断悬停与点击展开
- `8d55927` refactor: 重构与优化 AI Agent 上下文管理与长期记忆系统

---

### 验证结果

全套本地门禁全部通过(`pnpm run verify`):
- **TypeScript 类型检查**:双端全部通过(0 errors)
- **单元与集成测试**:69 个测试文件、784 项用例全部通过(100% pass)
- **前端生产构建**:Vite 生产构建与单文件 HTML 内联成功
- **Playwright E2E & 无障碍测试**:75 个端到端测试全部通过(100% pass)
2026-09-08 22:36:58 +08:00

44 lines
1.2 KiB
JSON

{
"name": "cloudssh-frontend",
"version": "2.2.1",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
"preview": "vite preview"
},
"dependencies": {
"@codemirror/commands": "^6.11.0",
"@codemirror/lang-css": "^6.3.1",
"@codemirror/lang-html": "^6.4.12",
"@codemirror/lang-javascript": "^6.2.5",
"@codemirror/lang-json": "^6.0.2",
"@codemirror/lang-markdown": "^6.5.2",
"@codemirror/lang-python": "^6.2.1",
"@codemirror/lang-yaml": "^6.1.3",
"@codemirror/language": "^6.12.4",
"@codemirror/legacy-modes": "^6.5.3",
"@codemirror/search": "^6.7.1",
"@codemirror/state": "^6.7.1",
"@codemirror/view": "^6.43.9",
"@lezer/highlight": "^1.2.3",
"@xterm/addon-fit": "^0.11.0",
"@xterm/addon-search": "^0.16.0",
"@xterm/addon-web-links": "^0.12.0",
"@xterm/addon-webgl": "^0.19.0",
"@xterm/xterm": "^6.0.0",
"dompurify": "^3.4.13",
"marked": "^18.0.5",
"trzsz": "^1.1.6"
},
"devDependencies": {
"@tailwindcss/container-queries": "^0.1.1",
"@tailwindcss/forms": "^0.5.11",
"autoprefixer": "^10.5.4",
"postcss": "^8.5.23",
"tailwindcss": "^3.4.19",
"typescript": "^5.7.0",
"vite": "^6.0.0"
}
}