# Changelog — Phase 2 汇总表修复队列（第二批）

**日期**: 2026-05-22

## 修复项

| ID | 问题 | 修复 |
|----|------|------|
| F2f-04 | 压测脚本硬编码 API Key | `quick_load.py` / `load_test.py` 改读 `NEXUS_API_KEY`、`NEXUS_TEST_BASE` 环境变量 |
| F2e-01 | `servers.html` category 未 esc | `${esc(s.category\|\|'--')}` |
| F2e-02 | `settings.html` saveSetting onclick 注入 | `data-setting-key` + `escAttr` + 事件委托 |
| F2e-07 | `scripts.html` category 未 esc | `${esc(s.category\|\|'ops')}` |
| F2f-02 | Agent 空 API_KEY 不鉴权 | 启动时无 key 则 `sys.exit(1)`；`verify_api_key` 始终校验 |
| F2f-03 | Agent 默认 0.0.0.0 | 默认 `127.0.0.1`（`agent.py`、`config.example.json`、`install.sh`） |
| F2a-12 | 生成 agent key 暴露面 | API 增加 `display_once`/`message`；列表仍掩码；编辑表单不填掩码值，生成后剪贴板+待保存 |

## 未在本批处理（仍 OPEN）

- F2f-01：子机 `/exec` subprocess_shell（设计面，需文档/网络隔离）
- F2a-05/18、F2e-03/04：WS URL 带 token
- F2a-10/F2d-02：全局 JWT 中间件
- F2e-05/06：localStorage JWT、CDN SRI

## 运维提醒

1. **轮换 API Key**：旧密钥曾出现在 git 历史的压测脚本中，请在生产 `.env` / settings 表轮换 `API_KEY`。
2. 压测：`NEXUS_API_KEY=xxx python tests/load_test.py --concurrency 50 --duration 30`
3. 已有 Agent 若需中心机访问：在 `config.json` 将 `server.host` 改为 `0.0.0.0` 并配合防火墙。

## 涉及文件

- `tests/quick_load.py`, `tests/load_test.py`
- `web/app/servers.html`, `settings.html`, `scripts.html`
- `web/agent/agent.py`, `config.example.json`, `install.sh`
- `server/api/servers.py`
