5afb18b745
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2.5 KiB
2.5 KiB
2026-05-26 — 门控 v2:3道→7道 + 防绕过机制
变更摘要
- 门控脚本升级 v2 —
deploy/pre_deploy_check.sh从 3 道门扩展到 7 道:- Gate 1 Changelog门:文件存在 + 行数≥10(防空壳)
- Gate 2 Audit门:文件存在 + 必须含 Step3+Closure+DoD(防空壳)
- Gate 3 Test门:test_api.py 必须存在 + 通过(防删测试绕过)
- Gate 4 Lint门:
ruff check server/ --select F(未定义名称、未使用导入) - Gate 5 Import门:
import server.main成功(语法/导入错误,venv感知) - Gate 6 Security门:
bandit无 HIGH(安全反模式) - Gate 7 Review门:审计文件必须包含实际改动文件清单(交叉验证 git diff)
- ruff.toml — Lint 配置,只拦 F(pyflakes) 真正的BUG,不强制风格升级
- requirements-dev.txt — 开发依赖(ruff, bandit, pytest)
- deploy/gate_log.py — 门控执行日志记录器(JSONL格式,每次检查自动追加)
- MCP gate_log 工具 —
mcp/Nexus_server.py新增 T9 gate_log() 工具 - CLAUDE.md 更新 — 门控表从3道→7道,加入用户审查清单
动机
v1 门控有3个致命漏洞:
- 空文件就能通过 Changelog/Audit 门
- 删掉 test_api.py 就能绕过 Test 门
- 零代码质量检查,51个
except Exception: pass无人管
v2 堵住了所有绕过路径,并新增 Lint/Import/Security/Review 4道门。
涉及文件
| 文件 | 改动 |
|---|---|
deploy/pre_deploy_check.sh |
重写 — 3门→7门,防绕过 |
ruff.toml |
新建 — Lint配置 |
requirements-dev.txt |
新建 — 开发依赖 |
deploy/gate_log.py |
新建 — 门控日志 |
mcp/Nexus_server.py |
新增 T9 gate_log 工具 |
CLAUDE.md |
门控表+审查清单 |
是否需迁移/重启
- DB 迁移: 无
- 需重启: MCP server 需重启(改动 Nexus_server.py),下次会话自动生效
- 远程部署: 需安装 ruff + bandit(已安装),需同步所有新文件(已完成)
验证方式
bash -n deploy/pre_deploy_check.sh— Shell 语法通过 ✅python -c "import py_compile; py_compile.compile('mcp/Nexus_server.py', doraise=True)"— Python 语法通过 ✅- 远程执行 7-gate check → 6/7 PASS + 1 BLOCK(Test门凭据问题) ✅
- Lint门: ruff F规则零违规 ✅
- Security门: bandit 无 HIGH ✅
- Import门: venv python3 import server.main 成功 ✅
- Review门: 审计文件覆盖所有改动文件 ✅