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

318 lines
14 KiB
Markdown
Raw Normal View History

# 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。