# Nexus 6.0 — AI 接续工作交接（SSOT）

> **生成日期**: 2026-05-23  
> **用途**: 切换 AI / 新会话时**唯一接续入口**；下文汇总本会话决策、代码状态、待办与验证清单。  
> **工作区**: `C:\Users\uzuma\Desktop\svn\Nexus\.claude\worktrees\suspicious-williams-fe9492`  
> **部署状态**: ❌ **尚未部署**（无生产环境、无需「重启服务」；首次部署后再跑 E2E）

---

## 0. 给下一任 AI 的复制提示词

```
【严谨性】与 Nexus 团队同等严谨，不得降低标准。全量标准索引：
  docs/project/standards-transfer-package.md

【必读 · 按序】
1. docs/project/AI-HANDOFF-2026-05-23.md
1b. docs/project/2026-06-01-master-backlog-plan.md（文件管理/POSIX/部署/审计 长计划任务）
2. docs/project/nexus-full-site-features.md
3. docs/project/development-acceptance-standard.md
4. docs/project/standards-transfer-package.md

【规范 · 全文内化（开发 + 审计同等强制）】
- .cursor/rules/perfect-implementation.mdc
- .cursor/rules/nexus-tech-stack.mdc + nexus-python-backend.mdc + nexus-frontend.mdc + nexus-security.mdc
- .cursor/rules/audit-line-review.mdc（走读/Phase2 触发）
- standards/system-development-standard.md
- standards/line-walk-audit-standard-v2.md
- standards/audit-core-principles.md

【逐行审查】8步/文件、全文Read至EOF、Closure全表(含SAFE)、FINDING必须文件:行号、单回复≤5文件；
  禁止grep/Top15冒充审计；P0/P1当场修+changelog+矩阵。提示词见 v2 §十四.1。

【验收】完成前：pytest tests/test_security_unit.py + wsl_integration_smoke.sh + changelog；
  上线前：production-verification-checklist.md；宣称完成前读 verification-before-completion SKILL。

项目未部署。端口：子机出站443心跳；中心→子机SSH22；8601仅本机。
P1待办：WebSSH断线重连、CSV批量导入。首次部署E2E见本文§6。
已否决见§7。
```

---

## 1. 项目一句话

Nexus 6.0：2000+ 台服务器运维平台；FastAPI 四层架构 + Redis 实时心跳 + WebSocket/Telegram 告警 + asyncssh 推送/WebSSH/脚本；前端 Tailwind v4 + Alpine.js 静态页。

---

## 2. 端口与通道模型（2026-05-23 最终决策）

| 方向 | 端口 | 用途 | 是否必须 |
|------|------|------|----------|
| 子机 → 中心 | **443 出站** | Agent 心跳、长任务 `curl` 回调 | ✅ 必须 |
| 中心 → 子机 | **22 入站** | rsync 推送、文件浏览/操作、**脚本执行**、**手动健康检查**、Agent 安装/升级 | ✅ 必须 |
| 子机本机 | **127.0.0.1:8601** | Agent uvicorn（仅本机） | 可选进程；**不要求公网 8601** |

**已否定/不推荐**

- 为脚本/健康检查强制公网开放 8601  
- 用宝塔「Python 项目管理器」托管 Agent（与面板生命周期耦合）  
- 用 btpanel-skills 安装 Agent（skills 仅适合读面板监控 API，见 [btpanel-skills](https://github.com/aaPanel/btpanel-skills)）

**Go 单二进制 Agent**：长期可选；当前子机均有 Python 3.12，优先 venv 方案。

---

## 3. 本会话及近期已完成（代码）

### 3.1 架构 / 运维向

| 项 | 说明 | 关键文件 |
|----|------|----------|
| 脚本执行改 SSH | 不再依赖中心访问子机 8601；结果含 `channel: ssh` | `server/application/services/script_service.py` |
| 手动健康检查改 SSH | `check_all_servers` 经 SSH 探测指标 | `server_service.py`, `server/infrastructure/ssh/remote_probe.py` |
| Agent 安装脚本 | python3.12+ venv、`127.0.0.1` 监听、不自动放行公网 8601 | `web/agent/install.sh` |
| 安装说明文案 | 心跳 443 / 脚本 SSH / 无需公网 8601 | `web/app/servers.html` |
| Changelog | | `docs/changelog/2026-05-23-ssh-exec-no-8601.md` |

### 3.2 功能向（会话前后期，代码已在仓库）

| 项 | 说明 |
|----|------|
| 推送 dry-run 预览 | `push.html` + `SyncEngineV2.preview_sync()`，方案 D 智能提示 |
| 推送日志视图 | `commands.html` 推送日志 Tab |
| 脚本快捷执行 | `scripts.html` 直接执行面板 |
| 定时脚本执行 | `schedule_runner.py` + `schedules.html`，`schedule_type=script` |
| 审计时间/用户过滤 | `audit.html` + `settings.py` API |
| 告警中心页 | `alerts.html` + `/api/alert-history` + `AlertLog` 表 |
| Telegram 测试 / Chat ID | `settings.html` + settings API |
| 告警分项 Telegram 开关 | `settings.html` + `NOTIFY_*` 配置 |
| 登录 IP 白名单 + 订阅解析 | `subscription_parser.py` + `ip_allowlist_refresh.py`（2h） |
| Agent 远程安装 / 安装命令 | `servers.html` + `install-agent` API |
| Agent 升级（SSH） | `POST /servers/{id}/upgrade-agent`（**未**随新 venv install.sh 对齐，见待办） |
| Agent IP 白名单 | `agent.py` + `install.sh` 写入 `allowed_ips` |
| 时钟漂移检测 | 心跳 `agent_time` + UI 徽章 + Telegram |
| TOTP 重绑 UX | `settings.html` |
| 远程文件删/改名/建目录 | `sync_v2.py` |
| Phase 2 审计 63 项 | 矩阵 `docs/reports/audit-phase-2-findings-matrix.md` |
| WSL 联调脚本/venv | `scripts/wsl_*.sh`, `docs/project/wsl-integration-test.md` |
| 标准文档目录 | `standards/` + `docs/project/*-standard*.md` |

### 3.3 代码完成度（主观）

- **核心业务代码**: ~95%～98%  
- **首次部署 E2E**: 0%（未部署）  
- **用户要求的增强功能**: 仍有 **5～7 项未写代码**（见 §4）

---

## 4. 待实现功能（下一任 AI 工作 backlog）

按用户确认优先级排序。

### P1 — 建议先做

| ID | 功能 | 说明 | 建议触及文件 |
|----|------|------|--------------|
| F-01 | **WebSSH 断线重连** | 方案 C：断线自动重试 1 次 + 手动重连按钮 | `web/app/terminal.html`, `server/api/webssh.py` |
| F-02 | **服务器批量导入 CSV** | 上传 CSV → 校验 → 批量 `POST /api/servers/` | 新 API + `servers.html` |
| F-03 | **Agent 升级与 install.sh 对齐** | `upgrade-agent` 应使用 `/opt/nexus-agent/.venv` + 127.0.0.1 | `server/api/servers.py` |

### P2 — 迭代

| ID | 功能 | 说明 |
|----|------|------|
| F-04 | **仪表盘历史趋势图** | CPU/内存时序；需 Redis/MySQL 历史或新聚合 |
| F-05 | 远程文件上传 UI | 可用 WebSSH/scp/推送代替；非阻塞上线 |
| F-06 | 远程文件内容预览 | 可用 WebSSH cat 代替 |

### 可选 / 讨论项（未承诺实现）

| ID | 功能 | 说明 |
|----|------|------|
| F-07 | 宝塔面板 API 监控增强 | 参考 aaPanel/btpanel-skills，补站点/服务状态（**不**替代 Agent） |
| F-08 | Agent ↔ 中心 mTLS | 安全增强，工作量大 |
| F-09 | Docker Compose 部署 | 用户称暂不需要 |
| F-10 | Go 单二进制 Agent | 2000+ 台 Python 3.12 齐全时可暂缓 |

### SSH 回退（已采用主路径，非待办）

用户曾问「SSH 回退」：已实现为**默认 SSH**，非「Agent 失败再回退」。无需再做了 Agent 优先逻辑，除非用户改口。

---

## 5. 标准转接（与团队同等严谨 · 下一任 AI 必读）

| 文档 | 路径 |
|------|------|
| **标准转接包（全量索引）** | [`standards-transfer-package.md`](standards-transfer-package.md) |
| 开发验收 L0～L5 | [`development-acceptance-standard.md`](development-acceptance-standard.md) |
| 标准目录 | [`standards/README.md`](../../standards/README.md) |

**逐行审查**：与开发规范**同等强制** — 全文见 `standards/line-walk-audit-standard-v2.md` + `standards/audit-core-principles.md`；Cursor 触发器 `audit-line-review.mdc`。

**开发规范**：`standards/system-development-standard.md` 全文 + 档 B 全部 `.cursor/rules/nexus-*.mdc`。

---

## 5b. 开发验收标准（L0～L5 速查）

**SSOT**：[`development-acceptance-standard.md`](development-acceptance-standard.md)

| 层级 | 何时用 | 关键文档 |
|------|--------|----------|
| L0 | 始终 | `perfect-implementation.mdc`、`standards/system-development-standard.md` |
| L1 | 新功能/大改 | `docs/design/specs/`、`docs/design/plans/` 内验收标准 |
| L2 | 每次改代码合并前 | `pytest tests/test_security_unit.py`、`scripts/wsl_integration_smoke.sh` |
| L3 | 安全路径改动 | `standards/line-walk-audit-standard-v2.md`、`audit-core-principles.md` |
| L4 | 模块 E2E | `script-execution.md` §11、`alert-push-policy.md`、T1～T5 |
| L5 | 首次部署/上线 | `production-verification-checklist.md`（逐项勾选） |

**禁止**：未跑 L2 命令就声称「已完成」；未勾 L5 就声称「可上线」。

---

## 6. 待验证（非「未实现」，但上线前必做）

**项目未部署时不要写「请重启生产」**；以下在 **first deploy** 后执行。

### 6.1 基础（`CLAUDE.md` / `AGENTS.md`）

- [ ] T1 心跳 Redis 写入  
- [ ] T2 WebSocket  
- [ ] T3 三层守护（杀 Python → Supervisor 拉起）  
- [ ] T4 Telegram  
- [ ] T5 install.html 五步  

### 6.2 脚本平台（`docs/project/script-execution.md` §11）

- [ ] T-SE1～T-SE8（分批、长任务回调、停止、Redis 刷盘等）  
- **注意**: 文档仍写 Agent `:8601` 执行，**实际已改 SSH** — 验证时按 SSH 测，并更新文档。

### 6.3 首次生产清单

完整表：`docs/project/production-verification-checklist.md`

### 6.4 WSL 代码向（无密钥核对）

`docs/project/wsl-integration-test.md` + `scripts/wsl_integration_smoke.sh --code-only`

### 6.5 建议「最小首次部署 10 条」

1. install 向导生成 `.env` + 管理员  
2. 登录 + TOTP  
3. 添加 1 台子机（SSH 凭据）  
4. 子机安装 Agent（新 `install.sh`），确认 **无需公网 8601** 仍有心跳  
5. 仪表盘看到 Redis 在线/指标  
6. SSH 推送 1 个目录（dry-run + 正式）  
7. SSH 执行短脚本（`channel: ssh`）  
8. WebSSH 连接 + 命令审计  
9. Telegram 测试发送  
10. `alerts.html` 有告警历史记录  

---

## 7. 已否决（永久不做，除非用户书面改口）

| 功能 | 原因 |
|------|------|
| 文件编辑器（Monaco/ACE） | 2026-05-23 用户明确抛弃；WebSSH + vim |
| RBAC / 多管理员 | 鉴权即信任 |
| 审计日志导出 CSV/JSON | 用户不需要 |
| 移动端适配 | 用户否决 |
| 会话录像 asciicast | 不需要 |
| Redis Sentinel/Cluster | 用户不需要 |
| Docker 部署（当前阶段） | 用户暂不需要 |
| 推送结果邮件报告 | 不需要 |

记录：`docs/Nexus-功能说明书.html` §15（部分条目已过期，见 §8）

---

## 8. 文档债务（下一任 AI 应同步）

| 文档 | 问题 | 动作 |
|------|------|------|
| `docs/Nexus-功能说明书.html` | §15 仍写审计过滤/定时脚本「未实现」 | 更新为已实现 |
| `docs/project/script-execution.md` | 仍写 Agent HTTP 执行、:8800/:8601 | 改为 SSH 22 + 443 心跳 |
| `docs/design/specs/2026-05-19-sprint-planning.md` | WebSSH/ install 仍标待做 | 标为已完成或归档 |
| `PROJECT_HANDOVER.md` | 日期与端口模型旧 | 顶部链到本文 |
| `CLAUDE.md` / `AGENTS.md` | 待测试列表仍有效 | 部署后勾选 |

**新变更务必**: `docs/changelog/YYYY-MM-DD-*.md`（`perfect-implementation.mdc`）

---

## 9. 环境与约束（用户确认）

- **子机**: 宝塔面板；Python **3.7.16**（面板 pyenv）+ 系统 **3.12.3**  
- **Agent 安装**: 固定 **3.12 venv**，隔离于宝塔 pyenv 3.7  
- **防火墙**: 多数子机**未开公网 8601**；推送/脚本依赖 **22**；心跳依赖 **出站 443**  
- **WSL 联调**: 只验证代码路径，不纠结部署密钥是否入 git（install 生成）  
- **仓库**: 唯一 Nexus 仓库；worktree 开发  

---

## 10. 关键路径索引

| 类别 | 路径 |
|------|------|
| 接续 SSOT | **本文** |
| **全站功能清单** | `docs/project/nexus-full-site-features.md` |
| **标准转接包** | `docs/project/standards-transfer-package.md` |
| **开发验收标准** | `docs/project/development-acceptance-standard.md` |
| **系统开发标准** | `standards/system-development-standard.md` |
| **逐行审计 v2** | `standards/line-walk-audit-standard-v2.md` |
| **审计原则** | `standards/audit-core-principles.md` |
| **功能说明书 HTML** | `docs/Nexus-功能说明书.html` |
| 项目记忆 | `CLAUDE.md`, `AGENTS.md` |
| 进度 | `docs/project/status.md`, `docs/project/roadmap.md` |
| 部署 | `docs/project/deploy.md` |
| 审计矩阵 | `docs/reports/audit-phase-2-findings-matrix.md` |
| 脚本 SSOT | `docs/project/script-execution.md` |
| 标准 | `standards/README.md`, `docs/project/line-walk-audit-standard-v2.md` |
| Agent | `web/agent/agent.py`, `web/agent/install.sh` |
| 脚本 SSH | `server/application/services/script_service.py` |
| 健康 SSH | `server/infrastructure/ssh/remote_probe.py` |
| 告警历史 | `web/app/alerts.html`, `server/api/settings.py`（alert_history_router） |
| Changelog 示例 | `docs/changelog/2026-05-23-ssh-exec-no-8601.md` |

---

## 11. 架构分层（禁止违反）

```
web/app/*.html → server/api/*.py → application/services → infrastructure/* → domain/models
```

- API 层：JWT + Pydantic；不写 SQL  
- 无 `.env` → 安装模式（仅 `/api/install/` + 静态）  
- 不可从 DB 覆盖：`SECRET_KEY`, `API_KEY`, `ENCRYPTION_KEY`, `DATABASE_URL`  

---

## 12. Git / 提交说明

- 用户**未要求 commit** 时勿主动提交  
- 当前 worktree 含大量未跟踪 `.cursor/`、修改的 `server/**`、`web/**`、`docs/**`  
- 合并前建议：按逻辑拆分 commit（SSH 通道 / 功能增强 / 文档）

---

## 13. 会话决策时间线（摘要）

1. WSL 全链路联调 → Redis pool、SQLAlchemy aiomysql patch、venv  
2. Phase 2/3/4 逐行审计 → 63+ 项修复  
3. 标准文档 → `standards/`  
4. 功能 gap 讨论 → dry-run、告警中心、白名单、定时脚本等 **已实现**  
5. 文件编辑器 → **否决**  
6. Agent 8601 vs SSH → **脚本+健康检查走 22；心跳走 443；弱化 8601**  
7. 宝塔 Python 管理 → **不用**；venv + 3.12  
8. 项目未部署 → **无需重启**  

---

**文档维护**: 下一任 AI 完成待办或验证后，更新本文 §4 §5 §7 的勾选状态，并写 changelog。
