Files
Nexus/docs/project/AI-HANDOFF-2026-05-23.md
T

318 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.02000+ 台服务器运维平台;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 安装 Agentskills 仅适合读面板监控 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%(未部署)
- **用户要求的增强功能**: 仍有 **57 项未写代码**(见 §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) |
| 开发验收 L0L5 | [`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`、T1T5 |
| 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。