Files
CloudSSH/docs
TanXinandTanXin 918bd69fbb feat: 实现 AI Agent 运维助手完整功能,优化前端交互与并发稳定性,健全安全策略与异常保活机制 (#23)
## 摘要 (Summary)
本 PR 整合了 `test` 分支中关于 **AI Agent 运维助手系统**
的核心实现、后续优化以及一系列高并发、竞态条件、连接保活及接口报错的修复工作。项目现已具备功能完整、安全可控、交互流畅且高度稳定的 AI
助手侧边栏。

---

## 核心变更内容 (Key Changes)

### 1. AI Agent 核心功能与工具链扩展
* **工具箱扩展**:实现了 8 个运维相关的核心工具,包括
`detect_environment`(环境探测)、`list_processes`(进程列表)、`service_manage`(服务管理)、`docker_manage`(容器管理)以及基础终端执行工具。
* **流式输出与 Markdown**:AI 助手的回复支持逐字流式加载显示,完成后使用 `marked` + `DOMPurify`
渲染(支持 GFM 表格),替代了原有的手写解析器。
*
**上下文管理**:引入了对话历史摘要机制(`trimMessages`),优化了上下文管理策略,同时将终端及环境上下文移入系统提示词(System
Prompt),防止跨请求历史数据重复与丢失。

### 2. 前端交互与 UX 深度优化
* **折叠式思考过程**:实现了 AI
思考过程折叠容器,工具调用不再占用主回复空间;支持思考步骤的实时预览与交互,完成后展开可查看完整执行链路。
* **样式与主题调整**:优化了 Agent 侧边栏宽度、输入框 Placeholder 颜色、发送按钮样式、自动换行与主题颜色的同步预览。
*   **输入流并发保护**:在安全弹窗确认期间显式禁用输入,以“完成/取消”代替粗暴中断,避免指令状态冲突。

### 3. 并发、安全与系统稳定性修复 (核心痛点)
* **安全双层拦截**:重构安全分级策略,采用“LLM 主观判断 + 工具层硬编码规则兜底拦截”的双层过滤。对高危操作(如包管理
`apt/yum` 等)以及 `sudo` 操作增加强制用户确认流程。
* **彻底消除 API 400 错误**:修复了在消息裁剪、指令 Abort、用户取消等场景下,因 `tool_calls`
孤儿消息或消息不配对导致的大模型接口报 400 错误的问题;增加了消息完整性校验,自动过滤残留/不配对的工具消息。
*   **防止 DO 冬眠与卡死**:
* 在 `runLoop` 中引入 5 秒一次的 `keepAlive` 保活机制,防止 Cloudflare Durable Object
在等待大模型响应或等待用户确认期间因无操作而冬眠。
    *   将保活定时器提升为类字段,防止关闭连接时发生定时器泄漏。
*   **网络与并发修复**:
    *   修复了多命令执行导致的 SSH 频繁断开和前端 WebSocket 重连风暴。
* 解决了 `Channel removed before open` 竞态条件,以及 exec channel 未释放导致 SSH 报错
`Channel open failed (reason=2)` 的 channel 泄漏问题。
    *   为 WebSocket Handler 增加了全局错误边界,避免未捕获异常导致 DO 意外崩溃断开。

### 4. SSH 基础体验优化
* **主机密钥验证优化 (TOFU)**:重构了主机密钥指纹变更提示,拆分多行展示已知指纹与实际指纹的对比,并动态识别并展示密钥算法类型(如
`ssh-ed25519`)。

### 5. 文档与部署优化
*   **一键部署**:为 README 添加了 Cloudflare 一键部署按钮,并更新了最新的演示视频。
*   **开发规约**:更新了 `AGENTS.md`,同步了 AI Agent 相关的 8 大工具、保活看门狗及两层安全策略的开发维护说明。

---------

Co-authored-by: TanXin <tanxin@example.com>
2026-07-08 21:43:38 +08:00
..