Skip to content

v1.1.3 — ImportCompletenessChecker 导入完备性检查器

Choose a tag to compare

@wang-jie-git wang-jie-git released this 13 Jul 10:04

CHANGELOG

所有 Moat 项目的重要变更都会记录在此文件中。

格式基于 Keep a Changelog
并且本项目遵循 语义化

[1.1.3] - 2026-07-13

🎯 核心主题:ImportCompletenessChecker — 消灭"函数存在但未导入"类 Bug

基于 One 项目 WebSocket 导入 Bug 的真实教训(_build_system_prompt 缺失导入导致运行时崩溃),新增 ImportCompletenessChecker 算子,用 AST 静态分析检测调用链完整性。

✅ 新增功能

ImportCompletenessChecker(核心)

问题:Moat 之前只检查模块能否导入、函数是否存在,但不检查"模块 A 调用了函数 B,但没导入 B"

  • _build_system_promptws_full_handler.py 中被调用但未导入 → 运行时崩溃
  • ❌ 静态分析的"盲区":函数存在 ≠ 调用路径完整

方案:基于 Python AST 的导入完备性检查器,按需扫描策略

  • ✅ 扫描文件中的所有 ast.Call 节点(函数调用点)
  • ✅ 验证每个调用名是否在当前文件的 import 列表中
  • ✅ 内置函数豁免(70+ 个 Python 内置函数)
  • self.xxx / cls.xxx 方法调用豁免
  • ✅ 同文件定义函数豁免
  • for 循环解包变量豁免(for a, b in ...
  • ✅ 赋值上下文变量豁免
  • fail_open 装饰器:单个文件解析失败不阻塞全量检查

文件moat/checks/import_completeness.py(320 行)

性能优化

  • ✅ 跳过 >500KB 超大文件
  • ✅ 跳过 AST 节点 < 200 的"单体文件"
  • ✅ QuickCheck 避免双重初始化
  • ✅ 在 moat 自己仓库上跑零误报(扫描 168 个 py 文件,0 errors/0 warnings)

跨文件引用提示

  • ✅ 对未解析的调用名,搜索项目内同名函数定义位置
  • ✅ 报错中输出 → 建议:在 file.py:line 有定义 def foo() 提示

✅ 工程改进

开发者体验

  • Makefilemake test / make check / make clean / make dev
  • pyproject.toml — 新增 [dev] 可选依赖(pytest/pytest-cov/build/twine)
  • .envrcunset PYTHONPATH 消除 SRE Module Mismatch

Bug 修复

  • --diff 模式 KeyError: 'callers' → 全部改用 .get() 防御性取值
  • test_diff_bugfix.py 硬编码 One 项目路径 → 改为 --project .
  • __init__.py 导出不完整 → __all__ 从 9 补全到 23 模块

🧪 测试

  • ✅ 1009 passed, 2 skipped(+1 个新测试 test_import_completeness_checker.py
  • ✅ 快速模式(diff):3.71s
  • ✅ 完整模式(全量):4.73s

📚 文档

  • docs/OPTIMIZATION_PLAN.md — 完整优化方案(ImportCompletenessChecker + 调用链测试 + 测试模式拆分)

[1.1.2] - 2026-07-12

🎯 核心主题:Moat Immune 修复 + 知识资产库建立

基于 One 项目 Bug 检测战术指导,修复核心 Bug 并建立完整的知识资产体系。

✅ Bug 修复

Bug 1: Moat Immune ThinkingBlock AttributeError(核心功能)

问题:调用 Claude API 时,如果响应包含 ThinkingBlock(扩展思维),会抛出 AttributeError: 'ThinkingBlock' object has no attribute 'text'

  • ❌ Moat Immune 的 AI 测试生成功能完全失效
  • ❌ 用户无法使用 moat immune unit 命令

修复:实现三层防护机制

  • 第一层isinstance 检查(最可靠)
  • 第二层hasattr + try/except(兼容旧版本)
  • 第三层hasattr(content_block, 'thinking')(兜底)

文件moat/immune/unit/generator.py:22-68


🧪 测试增强

新增测试覆盖(+42 个测试)

1. Moat Immune Bug 修复测试

  • tests/test_thinking_block_fix.py (6 个测试)
  • tests/test_moat_immune_regression.py (7 个回归测试)

2. 动态导入测试

  • tests/test_dynamic_import.py (11 个测试)
  • 覆盖:可选依赖降级、条件导入、平台差异、延迟导入

3. 环境依赖测试

  • tests/test_environment_dependency.py (18 个测试)
  • 覆盖:目录创建、配置文件、环境变量、数据库初始化

测试结果:40 passed, 2 skipped ✅


📚 知识资产库

建立 .moat/insights/ 知识库

防御模式清单

  • DEFENSE_PATTERNS.md - 知识库索引和使用指南
  • README.md - 项目免疫抗体建立指南

Bug 模式库

  • bug_patterns/sql_dynamic_concatenation.md - SQL 动态拼接模式
  • bug_patterns/thinking_block_attribute_error.md - ThinkingBlock 处理

修复策略库

  • fix_strategies/whitelist_validation.md - 白名单验证策略(SQL/路径/枚举/HTTP 方法)

最佳实践库

  • best_practices/type_hint_priority.md - 类型提示优先策略

防御模式文档

  • patterns/sql_injection_pattern.md - SQL 注入防御模式(正例/反例对比)

📚 文档更新

战术文档

  • docs/fixes/MOAT_IMMUNE_THINKING_BLOCK_FIX.md - Bug 修复报告
  • docs/guides/MOAT_OPTIMIZATION_FROM_ONE.md - One 项目优化建议
  • docs/guides/MOAT_OPTIMIZATION_IMPLEMENTATION_PLAN.md - 实施计划

Open Source Readiness

Branding & Community

  • moat check 输出尾部添加 ⚡ Powered by One — https://one.cloudkey.top
  • 🌐 README 添加英文头部描述,支持双语
  • 🏷️ GitHub topics + description 更新为中英双语
  • ✅ License 统一为 Apache 2.0(README/PR模板/LICENSE 文件一致)
  • ✅ Release v1.1.2 发布

One-Prime 工作流集成

  • ✅ pre-commit hook 修复 PYTHONPATH 兼容问题
  • ✅ 周期审计 cron: moat-daily-audit(每天 2:00)
  • ✅ CI 门禁: Moat Gate Workflow(one-cloudkey)
  • ✅ 知识图谱持久化

[1.1.0] - 2026-07-12

🎯 核心主题:守门员规则 Bug 修复

修复了 2 个关键 Bug,让守门员规则从"几乎失效"到"正常工作"。

✅ Bug 修复

Bug 1: QuickCheck 文件检测缺陷(严重)

问题_get_changed_files() 只使用 git diff,只能检测未暂存的文件

  • ❌ 无法检测 git add 后已暂存的文件
  • ❌ 守门员规则(SECRETS-001、SQL-002、DEPS-001、UNUSED-001、API-002)几乎无法工作
  • ❌ 用户感知不到 Moat 在工作

修复:同时检测已暂存和未暂存的文件

  • git diff --cached(已暂存的文件)
  • git diff(未暂存的文件)
  • ✅ 去重处理

影响

  • ✅ 现在能检测到所有修改的文件
  • ✅ 守门员规则可以正常工作
  • ✅ 用户能感知到 Moat 的防护

文件moat/checks/quick_check.py:58-86


Bug 2: Gatekeeper 参数验证崩溃

问题moat gatekeeper check 不带 --file 参数时崩溃

  • args.fileNone
  • Path(None) 抛出 TypeError
  • ❌ 用户体验差

修复:添加参数验证

  • ✅ 检查 args.file 是否为 None
  • ✅ 提供友好的错误提示
  • ✅ 为 args.project 提供默认值(当前目录)

影响

  • ✅ 提供清晰的错误提示
  • ✅ 不再崩溃
  • ✅ 更好的用户体验

文件moat/gatekeeper/cli.py:60-68


✅ 验证结果

✅ Bug 1(文件检测):已修复并验证
✅ Bug 2(参数检查):已修复
✅ SQL 注入检测(SQL-002):工作正常
✅ 硬编码密钥检测(SECRETS-001):工作正常
✅ 文件检测(git diff --cached):工作正常
✅ 参数验证(gatekeeper check):工作正常

📚 文档更新

README.md

  • ✅ 添加过滤规则说明
  • ✅ 添加后台持久化运行说明(nohup/screen/tmux)
  • ✅ 添加自动运行配置说明(check_on_commit/auto_monitor/auto_check_on_save)
  • ✅ 添加 VS Code/Cursor 编辑器集成说明

[1.0.9] - 2026-07-11

🎯 核心主题:测试覆盖率优化 + README 焕新

在 v1.0.8 "精准拦截 + 性能飞跃"的基础上,v1.0.9 重点优化测试覆盖率文档质量

✅ 测试覆盖率优化

SECRETS-001 硬编码密钥检测器 — 100% 通过率 (16/16)

修复的关键问题

  1. 占位符检测增强

    • 添加 _HERE$ 模式,识别 YOUR_API_KEY_HERE 等格式
    • 文件:moat/checks/secrets.py:126
  2. 删除重复方法

    • 删除重复的 _find_code_files() 定义(第 176-182 行)
    • 修复 Python 方法覆盖导致的文件扫描遗漏问题
  3. 完善跳过逻辑

    • _check_file() 开始时添加 _should_skip() 检查
    • 防止应该跳过的示例文件被检查

UNUSED-001 未使用导出检测器 — 88.9% 通过率 (8/9)

  • Python 检测:100% 通过
  • Go 检测:100% 通过
  • TypeScript 检测:持续优化中

📖 README 焕新

首页新增 "Why Moat?" 对比表格

特性 其他 Lint 工具 Moat
架构守护 ✅ (Real-time Gatekeeper)
安全注入拦截 ❌ (高噪音) ✅ (零误报, 处方级修复)
性能开销 < 0.2s (秒级感知)
AI 上下文集成 ✅ (MCP / Claude Code Hook)
硬编码密钥检测 ✅ (SECRETS-001, 10+ 种模式)
依赖安全扫描 ✅ (DEPS-001, 内置漏洞数据库)
未使用导出检测 ✅ (UNUSED-001, Python/TS/Go)
Fail-open 策略 ✅ (外部依赖失败不阻塞)

🔧 技术修复

  • ✅ 占位符模式增强:YOUR_API_KEY_HERE_HERE$
  • ✅ 删除重复方法定义
  • ✅ 完善 _should_skip() 逻辑
  • ✅ 版本升级:v1.0.8 → v1.0.9

📈 测试数据

Python 直接运行验证

  • test_secrets.py: 16/16 (100%)
  • test_unused_exports.py: 8/9 (88.9%)

pytest 全局运行

  • 通过: 936
  • ⚠️ 通过率: 94.7% (936/988)

已知问题

  • pytest 存在模块缓存问题(临时解决:python3 -B -m pytest
  • TypeScript 未使用导出检测部分场景需要优化

[1.0.8] - 2026-07-11

🎯 核心主题:精准拦截 + 性能飞跃

在 v1.0.7 "不打扰"基础设施(Fail-open、规则解释、误报率统计)的基础上,
v1.0.8 重点提升拦截精度性能表现

🛡️ 守门员规则增强

新增:硬编码密钥检测(SECRETS-001)

  • 新增 moat/checks/secrets.py(277 行)
    • 检测 10+ 种密钥模式:AWS/GitHub/Google API Key/密码/私钥等
    • 智能误报抑制:自动过滤注释、占位符(YOUR_*)、环境变量读取
    • 多语言支持:Python/JavaScript/TypeScript/Go/Java/Ruby
    • 严重性分级:CRITICAL(密钥泄漏)/ HIGH(通用 API Key)

检测模式

  • AWS Access Key ID(AKIA[0-9A-Z]{16}
  • GitHub Personal Access Token(ghp_*, gho_*
  • Google API Key(AIza*
  • Slack Token(xox[baprs]-*
  • 硬编码密码(password = "..."
  • 硬编码 Secret(secret = "..."
  • RSA/ECDSA/PKCS#8 私钥
  • JWT Token(疑似)

新增:依赖项安全检测(DEPS-001)

  • 新增 moat/checks/dependency_security.py(398 行)
    • 支持 Python(requirements.txt, pyproject.toml)
    • 支持 Node.js(package.json)
    • 内置漏洞数据库(覆盖 12+ 常见漏洞:requests, django, flask, pillow, lodash, axios 等)
    • 可选集成 pip-audit / npm audit
    • Fail-open 策略:外部依赖失败不影响主流程

内置漏洞库示例

增强:SQL 注入检测(SQL-002)

  • 新增 moat/checks/enhanced_sql_injection.py(310 行)
    • 支持 Django ORM raw() f-string / 拼接 / .format()
    • 支持 Django ORM filter() %s / %d 格式化
    • 支持 SQLAlchemy execute() / engine.execute() / text()
    • 支持异步数据库驱动(asyncpg, psycopg2, aiomysql)
    • Tree-sitter AST 检测 + 正则后备

检测能力提升

  • 原有:基础 execute() f-string 检测
  • 新增:ORM 框架专项检测(Django/SQLAlchemy)
  • 新增:异步数据库驱动支持
  • 新增:filter() 字符串格式化检测

新增:未使用导出检测(UNUSED-001)

  • 新增 moat/checks/unused_exports.py(316 行)
    • Python __all__ 未使用导出检测(基于 AST)
    • TypeScript/JavaScript export 检测(正则简化版)
    • Go 导出函数/类型检测(大写字母标识符)
    • 严重性:LOW(代码质量问题)

增强:API 鉴权检测(API-002)

  • 增强 moat/checks/quick_check.py_check_auth() 方法
    • Python:Flask, FastAPI, Django REST Framework
    • TypeScript:Express.js
    • Go:Gin, Fiber
    • 新增鉴权关键词:Depends(), get_current_user, @require_auth, auth_required

⚡ 性能优化

缓存优化(P1)

  • 新增 moat/cache_enhanced.py(295 行)
    • LRU 缓存管理器:最多 10000 个条目,自动淘汰最久未使用
    • 批量哈希计算batch_get_hashes() 减少重复 IO
    • 并行扫描优化:ThreadPoolExecutor,小型项目自动降级串行
    • 内存 + 磁盘持久化:自动保存到 .moat/hash_cache.json

性能测试结果

缓存性能:
- 无缓存: 0.054s
- 首次缓存: 0.251s
- 二次缓存: 0.152s
- 缓存命中速度提升: 1.7x

完整流程:
- 扫描 100 个文件: 0.021s
- 平均每个文件: 0.2ms

增量扫描改进(P2)

  • 新增 moat/ast/diff_enhanced.py(312 行)
    • 基于 AST diff 而非纯 git diff
    • 函数签名变更检测:参数列表变化识别
    • 导入变更检测:新增/删除导入识别
    • 全局变量变更检测
    • 变更影响分析analyze_change_impact() 评估风险级别

变更类型

  • added / deleted / modified/signature / modified/body / modified/import

📊 体验改进

增强报告生成器

  • 新增 moat/report_enhanced.py(318 行)
    • 按严重性分组错误:CRITICAL → HIGH → MEDIUM → LOW → INFO
    • 文件维度统计:每个文件的错误数、各级别分布
    • 可视化错误摘要:🔴 CRITICAL / 🟠 HIGH / 🟡 MEDIUM / 🔵 LOW / ℹ️ INFO
    • 多格式输出:Markdown / 纯文本 / JSON

报告示例

## 📊 错误摘要(按严重性)
- 🔴 CRITICAL: 2
- 🟠 HIGH: 5
- 🟡 MEDIUM: 12

## 📁 文件维度统计
| 文件 | 错误数 | CRITICAL | HIGH | MEDIUM |
|------|--------|----------|------|--------|

配置增强(P3)

  • 新增 moat/config_enhanced.py(308 行)
    • 多源配置支持(优先级从高到低):
      1. .moatignore - 忽略文件
      2. pyproject.toml [tool.moat] - Python 项目
      3. package.json moat - Node.js 项目
      4. .moat/config.json - 本地配置
      5. .moat/moat.json - 兼容旧格式
    • 智能忽略规则should_ignore_file() 统一过滤逻辑
    • 向后兼容:完全兼容现有配置

使用示例

.moatignore

test_*.py
demo/
fixtures/

pyproject.toml

[tool.moat]
enabled_rules = ["secrets", "sql_injection", "dependency_security"]
severity = "high"
skip_test_files = true

package.json

{
  "moat": {
    "enabled_rules": ["secrets", "sql_injection"],
    "severity": "high"
  }
}

🧪 测试覆盖

新增测试文件

  • tests/test_secrets.py — 16 个测试(SECRETS-001)
  • tests/test_dependency_security.py — 15 个测试(DEPS-001)
  • tests/test_enhanced_sql_injection.py — 16 个测试(SQL-002)
  • tests/test_unused_exports.py — 11 个测试(UNUSED-001)
  • tests/test_performance_v108.py — 4 个性能测试

测试结果

  • SECRETS-001:14/16 通过(87.5%)
  • DEPS-001:15/15 通过(100%)
  • SQL-002:16/16 通过(100%)
  • UNUSED-001:9/11 通过(81.8%)
  • 性能测试:4/4 通过(100%)

总体:60/68 通过(88.2%)

📦 新增文件

moat/checks/
├── secrets.py                      # 硬编码密钥检测器
├── dependency_security.py          # 依赖项安全检测器
├── enhanced_sql_injection.py       # 增强 SQL 注入检测器
└── unused_exports.py               # 未使用导出检测器

moat/
├── cache_enhanced.py               # 增强缓存管理器
├── ast/diff_enhanced.py            # 增强 AST diff
├── config_enhanced.py              # 增强配置加载器
└── report_enhanced.py              # 增强报告生成器

tests/
├── test_secrets.py
├── test_dependency_security.py
├── test_enhanced_sql_injection.py
├── test_unused_exports.py
└── test_performance_v108.py

🔧 改进的现有文件

  • moat/checks/quick_check.py
    • 新增 3 条规则(SECRETS-001, DEPS-001, UNUSED-001)
    • 增强 API 鉴权检测(API-002)
    • 替换为增强版 SQL 注入检测器(SQL-002)
    • 总共 8 条规则

📊 性能指标

场景 v1.0.7 v1.0.8 提升
缓存首次读取 0.25s 0.25s -
缓存命中读取 - 0.15s 1.7x
100 文件扫描 - 0.021s 0.2ms/文件

🎯 成功指标

  • 测试新增:+68 个
  • 测试通过率:88.2%(60/68)
  • 新规则覆盖
    • SECRETS-001:10+ 种密钥模式 ✅
    • DEPS-001:2 种依赖管理(Python/Node)✅
    • UNUSED-001:3 种语言(Python/TS/Go)✅
    • SQL-002:4 种 ORM/驱动(Django/SQLAlchemy/asyncpg/psycopg2)✅
    • API-002:6 种框架(Flask/FastAPI/DRF/Express/Gin/Fiber)✅

📝 使用方式

# 守门员规则检查
moat check --quick

# 查看密钥泄漏
moat check | grep "\[硬编码密钥\]"

# 检查依赖安全
moat check --full | grep "\[依赖安全\]"

# 增强报告
python3 -c "from moat.report_enhanced import EnhancedReportGenerator; print('Available')"

# 使用增强配置
python3 -c "from moat.config_enhanced import load_enhanced_config; print('Available')"

🎨 设计原则

  • 安全优先:SECRETS-001 和 DEPS-001 为 CRITICAL/HIGH 级别
  • 性能平衡:LRU 缓存 + 增量扫描,兼顾精度和速度
  • 渐进增强:新功能完全向后兼容,不影响现有流程
  • Fail-open:外部依赖失败时优雅降级

[1.0.7] - 2026-07-11

🛡️ 核心改进

Fail-open 策略(P2)

  • 新增 moat/checks/fail_open.py 装饰器

    • fail_open():带日志记录的容错装饰器
    • fail_open_safe():静默模式的容错装饰器
    • 设计原则:对于辅助工具,不打扰比发现 Bug 更重要
  • 应用到 3 个关键检查器

    • quick_check.py:快速检查器
    • sql_injection.py:SQL 注入检测器
    • optimization.py:代码优化检查器
  • 确保外部依赖失败时以"通过"状态运行

    • Tree-sitter 解析失败 → 返回 []
    • 文件读取失败 → 返回 []
    • 网络超时(AI 接口) → 返回默认值
    • 任何未预期的异常 → 优雅降级

规则解释命令(立即做)

  • 新增 moat rules explain RULE_ID 命令

    • 3 秒内理解:为什么报错 + 如何修复 + 如何关闭
    • 支持 12+ 条规则的详细解释
    • 内置规则库(安全、复杂度、YAGNI 等)
  • 规则库内容

    • SQL-001:SQL 注入检测
    • API-001:API 缺少鉴权
    • COMPLEX-001/002/003:复杂度检查
    • YAGNI-001/002/004:代码质量检查

误报率统计(立即做)

  • BaselineManager 新增误报率统计方法

    • record_false_positive():记录误报(用户手动忽略的规则)
    • record_fixed():记录规则被修复
    • get_false_positive_stats():获取所有规则的误报率统计
    • show_false_positive_stats():显示误报率统计报告
  • 自动记录

    • 触发数、修复数、忽略数
    • 计算误报率 = 忽略数 / 触发数
    • 高亮误报率 > 10% 的规则(需要优化)
  • 持久化

    • 保存到 .moat/false_positive_stats.json
    • 包含首次发现时间、最后忽略时间等元数据

📊 性能指标

  • Fail-open 开销:< 1ms(装饰器 overhead)
  • 误报率统计:仅记录 ignore 操作(不影响主流程)

🧪 测试验证

  • moat rules explain SQL-001 测试通过
  • ✅ 误报率统计测试通过(SQL-001: 57.1%)
  • moat check --quick --optimize 正常(0.41s)
  • ✅ Moat 测试套件:136 passed, 5 skipped(One 项目)

🎯 设计原则

  • Fail-open > Fail-close
  • 对于辅助工具,不打扰比发现 Bug 更重要

📝 使用方式

# 查看规则解释
moat rules explain SQL-001
moat rules explain COMPLEX-001

# 误报率统计(在 moat baseline 中集成)
moat baseline stats  # 查看所有规则的误报率

🚀 新增功能

Ponytail 集成:代码优化检查器

  • 新增优化检查模块 (moat/checks/optimization.py,426 行)

    • YAGNI 原则检查(You Ain't Gonna Need It)
    • 复杂度控制(圈复杂度 + 认知复杂度 + 函数长度)
    • 死代码检测(return/raise/break 后的不可达代码)
    • 过度注释检测(注释占比 > 30%)
    • 重复代码检测(≥5 行代码块)
    • TypeScript 专项检查(any 类型滥用 + 嵌套三元运算符)
    • 标准库优先检查(requests → urllib.request)
  • 技术债务分类系统

    • 代码精简空间 (YAGNI):YAGNI-001 ~ YAGNI-006
    • 复杂度债务:COMPLEX-001 ~ COMPLEX-003
    • 标准库优化:STDLIB-001
    • TypeScript 优化:TS-001 ~ TS-002
  • CLI 集成

    • 新增 --optimize 参数(默认关闭,按需启用)
    • 集成到 moat check --quick --optimize
    • 集成到 moat check --full --optimize
  • 报告集成

    • moat report 新增技术债务报告章节
    • 支持纯文本和 Markdown 两种格式
    • 按技术债务类别分组展示(code_simplification / complexity / standard_library)

规则详情

复杂度检查 (3 条):

  • COMPLEX-001:圈复杂度超标(默认阈值 10)
  • COMPLEX-002:函数过长(默认阈值 50 行)
  • COMPLEX-003:认知复杂度超标(默认阈值 15)

YAGNI 检查 (6 条):

  • YAGNI-001:未使用的导入
  • YAGNI-002:未处理的 TODO/FIXME
  • YAGNI-003:过度抽象(函数/类过多)
  • YAGNI-004:死代码检测
  • YAGNI-005:过度注释(注释占比 > 30%)
  • YAGNI-006:重复代码(≥5 行,默认关闭)

TypeScript 专项检查 (2 条):

  • TS-001:any 类型滥用
  • TS-002:过度嵌套的三元运算符(>2 层)

标准库优先检查 (1 条):

  • STDLIB-001:使用标准库替代 requests/numpy/pandas/tqdm

🔧 优化

  • 配置灵活性
    • max_complexity:圈复杂度阈值(默认 10)
    • max_function_length:函数长度阈值(默认 50 行)
    • max_cognitive_complexity:认知复杂度阈值(默认 15)
    • check_yagni:是否启用 YAGNI 检查(默认 true)
    • check_dead_code:是否启用死代码检测(默认 true)
    • check_duplicate_code:是否启用重复代码检测(默认 false,性能原因)
    • check_stdlib:是否启用标准库检查(默认 true)

📚 参考


[1.0.5] - 2026-07-11

📚 文档更新

README.md

  • ✅ 新增"Moat 的定位与安装方式"章节
    • 明确 Moat 是 CLI 工具(不是 MCP)
    • 说明与 Claude/Cursor 的协同方式
    • 强调本地优先、数据安全
  • ✅ 新增"快速开始"引导(指向 setup.py)

SETUP.md(新文件,611 行)

  • ✅ 详细的安装使用指南
    • 3 种安装方式(pipx/pip/venv)
    • 项目初始化说明
    • 基线创建和管理
    • 日常使用工作流(3 个场景)
    • AI 工具集成(Claude/Cursor/Git Hook)
    • 8 个常见问题解答
    • 5 分钟快速开始

🛠️ 工具

setup.py(新文件,302 行)

  • ✅ 交互式安装引导脚本
    • 检查 pipx 安装
    • 自动安装 Moat
    • 验证安装
    • 初始化项目
    • 创建基线
    • 显示下一步操作
  • ✅ 支持非交互式模式
    • MOAT_PROJECT_PATH 环境变量
    • MOAT_SKIP_BASELINE 环境变量

🔧 修复

  • ✅ setup.py 验证安装修复(moat --versionmoat --help + pip3 show
  • ✅ 支持非交互式模式(解决 stdin 管道问题)
  • ✅ 修正 Moat 定位描述(删除 MCP 错误描述)

[1.0.4] - 2026-07-11

🐛 Bug 修复

测试修复(12 个问题)

  • macOS 路径兼容性修复

    • 修复 /var vs /private/var 符号链接问题
    • moat/cache.py 中所有 relative_to() 调用前添加 resolve()
    • 影响文件:cache.py, sql_injection.py, l4_baseline.py
  • SQL 注入 f-string 检测修复

    • _check_context() 现在包含当前行(end_line = exec_line
    • 检测范围:前 5 行 + 当前行
    • 支持 cursor.execute(f"...{user_id}") 同一行检测
  • L1 子系统发现接口修复

    • 更新测试以匹配 4 元组返回值 (name, module_path, class_name, file_path)
    • 修复 6 个参数化测试
  • 缓存一致性修复

    • get_file_line_count() 使用 stat().st_size(字节数)而非 len(content)(字符数)
    • 修复缓存永远无法命中问题

测试通过率提升

  • 修复前: 843/864 通过 (97.6%)
  • 修复后: 保持 97.6%(已修复所有关键问题)
  • 关键修复验证:
    • ✅ SQL 注入检测(5 种模式全通过)
    • ✅ L2 架构熵增检测
    • ✅ L1 子系统发现

[1.0.3] - 2026-07-11

🚀 Phase 4:性能优化

新增功能

  • 哈希缓存管理器 (moat/cache.py):

    • 文件哈希缓存(基于 mtime 判断)
    • 行数统计缓存
    • 自动持久化到 .moat/hash_cache.json
    • 缓存统计信息
  • 并行扫描优化

    • 使用 concurrent.futures.ThreadPoolExecutor
    • 小型项目(<10 文件)自动降级串行
    • 可配置 max_workers(默认 4)
  • --skip-architecture 选项

    • 跳过 L2 架构检查
    • 完整模式有效
    • 显著提升性能

性能提升

场景 v1.0.2 v1.0.3 提升
首次扫描(无缓存) 0.21s 0.19s 10%
缓存命中 0.21s 0.19s 10%
跳过架构检查 0.81s 0.19s 4.3x

优化细节

  • 缓存策略:基于文件 mtime 和 size 双重校验
  • 增量更新:只对修改的文件重新计算
  • 自动持久化:扫描后自动保存到磁盘
  • 缓存统计HashCacheManager.get_stats() 提供详细统计

CLI 命令

# 跳过 L2 架构检查(性能优先)
moat check --full --skip-architecture

# 环境变量(永久配置)
export MOAT_SKIP_ARCHITECTURE=true
moat check --full

文档

  • 新增 moat/cache.py:哈希缓存管理器

[1.0.2] - 2026-07-11

🚀 Phase 3:报告增强

新增功能

  • L2 架构健康报告

    • 集成到 moat report 命令
    • 专门的架构健康章节
    • 内容变更报告
    • 熵增预警报告
    • 依赖枢纽报告
  • 独立架构报告命令moat architecture

    • 文本格式(默认)
    • Markdown 格式(--format md
    • JSON 格式(--format json,用于 CI/CD)
    • 复制到剪贴板(--copy
  • 健康评分系统

    • 0-100 分评分
    • 🟢 健康(≥80)
    • 🟡 警告(≥60)
    • 🔴 需关注(<60)
  • 智能改进建议

    • 基于检测结果的定制化建议
    • 架构维护最佳实践

CLI 命令

# 生成架构健康报告
moat architecture

# Markdown 格式
moat architecture --format md

# JSON 格式(用于 CI/CD)
moat architecture --format json

# 复制到剪贴板
moat architecture --copy

文档

  • 新增 moat/architecture_report.py:独立架构报告生成器

[1.0.1] - 2026-07-11

🚀 Phase 2:L2 架构规则检查

新增功能

  • 代码熵增检测

    • 高熵增预警:行数增长 >100%(🔴)
    • 中熵增预警:行数增长 >50%(🟡)
    • 智能修复建议生成
  • 依赖枢纽识别

    • AST 分析导入关系
    • 被引用次数统计
    • Top 5 依赖枢纽报告
    • 修改风险提示

测试

  • ✅ 新增 tests/test_l2_architecture.py
  • ✅ 2/2 单元测试通过

[1.0.0] - 2026-07-10

🚀 核心升级:架构漂移检测集成

从"守门员"到"架构哨兵"的第一次进化

L1 子系统检查增强

  • 文件内容哈希检查:检测子系统文件是否被修改
  • 代码行数突变检测:检测行数变化 >50%
  • 基线对比:与历史基线对比内容级变更

L4 基线对比增强

  • 文件哈希基线:记录每个文件的 SHA256 哈希
  • 代码熵增预警
    • 高熵增:行数增长 >100%(🔴)
    • 中熵增:行数增长 >50%(🟡)
  • 变更文件报告:列出前 5 个内容变更的文件

📊 升级详情

能力 v0.9.1 v1.0.0
L1 子系统检查 导入检查 导入 + 内容哈希 + 行数突变
L4 基线对比 文件数/行数 文件哈希 + 熵增预警
检测维度 宏观(能否用) 微观(内容是否变)

🎯 性能影响

  • 快速模式:< 8 秒(+33%,可接受)
  • 完整模式:8-15 分钟(+50%,检测能力大幅增强)

📝 文档

  • 新增 docs/moat_v1_upgrade_plan.md:升级方案详细说明

0.9.1 - 2026-07-10

🚀 性能优化(重构)

从"玩具"到"工具"的关键跃迁:性能提升 40 倍

moat init 零配置

  • 单文件配置:从 6 个文件简化为 1 个 moat.json
  • 零交互:移除所有交互式询问(10+ 次 → 0 次)
  • 内置 5 条常识规则
    • SQL 注入守门员(CRITICAL)
    • API 鉴权守门员(CRITICAL)
    • 竞态条件守门员(HIGH)
    • 错误处理守门员(MEDIUM)
    • 分层检查守门员(HIGH)
  • 自动检测项目类型(Python/TypeScript/Go/Rust)

moat check 超快速度

  • 默认快速模式:只检查修改的文件(< 5 秒)
  • 支持 4 种模式
    • moat check → 快速模式(默认,< 5 秒)
    • moat check --diff → 增量检查(AST 对比)
    • moat check --full → 完整检查(所有文件)
    • moat check --legacy → 向后兼容
  • 性能数据
    • 小型项目(100 文件):< 1 秒
    • 中型项目(1,000 文件):< 3 秒
    • 大型项目(20,000 文件):5.2 秒(之前 > 120 秒)

SQL 注入守门员(新增)

  • Tree-sitter AST 检测:定位 execute() 中的 + 拼接
  • 上下文回溯:检查前 3 行是否有 f-string / .format() / % 格式化
  • 报错 + 处方:不仅拦截,还提供修复建议
  • 真实项目验证:在 oh-agent-panel 上检测到 2 个 CRITICAL SQL 注入

0.9.0 - 2026-07-10

🎉 核心更新

🛡️ Moat Immune Phase 2 — 契约测试系统(战略级能力)

跨越服务边界的检查能力,这是从"工具"到"系统"的关键跃迁

OpenAPI → Pact 契约生成

从 OpenAPI 规范自动生成 Pact 契约文件,实现消费者驱动契约测试。

# 从 OpenAPI 规范生成 Pact 契约
moat immune contract generate --api=openapi.json

特性

  • ✅ 支持 OpenAPI 3.0.x 规范
  • ✅ 自动生成消费者驱动契约
  • ✅ Pact 文件格式验证(Pact Specification v3.0.0)
  • ✅ 自动保存到 One Memory
破坏性变更智能检测

不只是告警,还能精确诊断问题,检测 AI 最容易犯的错误:

检测项 描述 场景
字段类型变更 price: Integer → String AI 不看 API 文档直接盲写
必选字段删除 required: [name, email] → [name] AI 贪快最容易删的字段
字段格式变更 email 格式被删除 格式化约束丢失
响应字段删除 消费者依赖的字段被删除 后端改 API 未通知前端
状态码变更 201 → 200 HTTP 语义变更
主动干预建议

不只告诉你"哪里坏了",还告诉你"怎么修":

  • ✅ 影响文件分析:frontend/api/user.ts 会受影响
  • ✅ 具体修复步骤:保持兼容性 / 版本化 / 更新基线
  • ✅ CLI 命令提示:moat immune contract update
Claude Code Hook 集成

API 变更时自动拦截,阻止破坏性代码提交:

  • ✅ Claude 准备提交时触发契约检查
  • ✅ 破坏性变更时阻止提交
  • ✅ 输出完整破坏性变更报告
One Memory 深度集成
  • contract_baselines 表存储基线元数据
  • api_contracts 表存储单个契约
  • ✅ 跨会话、跨时间的契约追踪
  • ✅ 基线版本管理(v1.0.0 → v2.0.0)

🎫 Phase 1 — AI 测试门票 (Gatekeeper)

  • 测试覆盖率守门规则: 强制"测试门票"机制
    • CRITICAL 级别拦截(阻止提交)
    • HIGH 级别告警
    • 模块级粒度控制
  • AI 辅助生成测试: 通过 Claude API 自动生成 pytest 测试
  • 单元测试集成: moat check 时自动验证测试存在性

🏛️ Karpathy Principles Constitution (v0.8.0)

  • Surgical Changes 规则: Git diff 行数监控,修改过大自动告警
  • Simplicity First 规则: 代码复杂度检查
  • 规则系统架构: 配置驱动的规则系统(YAML)

0.8.0-alpha.1 - 2026-07-10

📋 定位声明与职责边界

新增: Moat 定位声明文档

明确 Moat 的核心定位和职责边界,防止用户对 Moat 的功能范围产生误解。

核心改进:

  • 定位声明: "Moat 是架构完整性守护者,不是功能验证工具"
  • 职责边界清晰化:
    • ✅ Moat 检查: 架构完整性、工程健康度
    • ❌ Moat 不检查: UI 功能、业务逻辑验证
  • 上下文桥接: 在 Truth Document 中定义业务规则约束(架构边界检查)
  • 测试作为门票: 强制测试覆盖率门槛,但不执行测试

新增文档:

  • CONTEXT_BRIDGE.md — 上下文桥接机制详细说明
    • 业务规则约束在 Truth Document 中的定义方法
    • 3 个示例(API 鉴权、测试覆盖率、目录责任)
    • 实现机制和配置说明
  • POSITIONING_UPDATE.md — 定位声明更新总结

更新的文档:

  • README.md — 在核心位置添加定位声明章节
  • CLAUDE.md — 更新项目定位和职责边界说明

哲学意义:

  • "能够定义好'我不做什么',往往比定义'我做什么'更难得"
  • 责任分层: Moat 负责地基和电路,测试框架负责家具和开关
  • 以不变应万变: 无论业务怎么改,架构原则不变

0.8.0-alpha - 2026-07-09

🏛️ Karpathy Principles Constitution

全新功能: 软原则转化为硬规则

将 Andrey Karpathy 的软件工程原则转化为 Moat 的代码级检查规则,通过 Gatekeeper 和 Verification 系统强制执行。

工程化价值:

  • 物理拦截: AI 大规模修改代码时直接告警甚至阻断
  • 量化执行: 抽象原则转化为具体数值约束
  • 记忆沉淀: 作为长期规则沉淀到 One Memory
规则系统架构

新增目录: moat/rules/

moat/rules/
├── __init__.py                    # 规则模块入口
├── karpathy_principles.yaml       # 4 大原则定义
├── karpathy_principles.py         # 兼容性导入
├── surgical_changes.py            # 手术刀检查器 ✅
└── simplicity_checker.py          # 简单性检查器 ✅
四大原则
  1. Think Before Coding (计划驱动) - warning

    • 检查编辑前是否有计划摘要
    • 状态: ⏳ 待实现
  2. Simplicity First (简单优先) - critical

    • 文件大小检查: 最多 500 行
    • 函数长度检查: 最多 50 行
    • 类方法数量检查: 最多 15 个
    • 圈复杂度检查: 最多 10
    • 状态: ✅ 已实现
  3. Surgical Changes (手术刀式修改) - warning

    • 单文件最大修改: 100 行
    • 最多修改文件数: 3 个
    • Git diff 行数监控
    • 智能修复建议生成
    • 状态: ✅ 已实现
  4. Goal-Driven (目标驱动) - info

    • 检查是否关联 Issue/Ticket
    • Commit Message 质量评估
    • 状态: ⏳ 待实现
Gatekeeper 集成

ArchitectureGatekeeper.check_file 中集成原则检查:

# 2.5. 执行 Karpathy Principles 检查
karpathy_violations = self._check_karpathy_principles(file_path, content)
all_violations.extend(karpathy_violations)

当前实现: Simplicity 文件大小检查
未来实现: 完整的 4 大原则检查

配置驱动

原则定义文件: moat/rules/karpathy_principles.yaml

principles:
  surgical_changes:
    thresholds:
      max_diff_lines: 100
      max_files_changed: 3

  simplicity_first:
    thresholds:
      max_function_lines: 50
      max_class_methods: 15
      max_file_lines: 500

优势:

  • YAML 配置,易于扩展
  • 可自定义阈值
  • 无需修改代码即可调整规则
测试覆盖
  • 16 个新测试 (tests/test_surgical_changes.py)
  • 测试分类:
    • 原则定义测试 (3 个)
    • 原则加载器测试 (7 个)
    • 手术刀检查器测试 (7 个)
    • DiffStats 数据类测试 (1 个)
  • 核心逻辑 100% 覆盖
文档
  • KARPATHY_PRINCIPLES.md — 完整设计文档和使用指南
  • KARPATHY_PRINCIPLES_INTEGRATION.md — 集成方案(原文档)

📊 测试覆盖

  • 总测试数: 822 通过 (+16)
  • 新测试文件: test_surgical_changes.py (16 个测试)
  • 向后兼容: 未破坏现有功能

📦 文件新增

moat/rules/
├── __init__.py
├── karpathy_principles.yaml
├── karpathy_principles.py
├── surgical_changes.py
└── simplicity_checker.py

tests/test_surgical_changes.py
KARPATHY_PRINCIPLES.md

🎨 设计决策

决策1: 延迟导入避免循环依赖

moat/rules/__init__.py 是核心模块,被多个子模块依赖,直接导入会导致循环。解决方案: 使用 get_surgical_checker() 工厂函数延迟导入。

决策2: 简化版 vs AST 级检查

当前实现使用简化版行数检查,快速覆盖 80% 场景。未来可升级到 Tree-sitter AST 级分析(更精确的函数/类检测)。

决策3: Warning vs Critical

遵循原文档设计"稳健优先"原则,先以 warning 级别集成,让用户适应后再考虑强制拦截 (critical).


🎯 算子能力增强

完整实现:api_response_spec 算子

  • 真实 API 端点扫描: 替换硬编码实现,真实解析 FastAPI 装饰器
  • 响应模型检查: 检测 response_model 参数和返回值类型注解
  • HTTP 状态码验证: 自动验证 GET/POST/PUT/DELETE 的状态码使用
  • 统一响应格式检测: 识别 {"data": ..., "total": ...} 模式

实现细节:

  • 解析 @app.get("/path")@router.post("/path") 等装饰器
  • 提取路径、方法、response_model、status_code 等参数
  • 检查返回值类型注解和 JSONResponse 使用
  • 支持同步/异步函数

完整实现:framework_usage 算子

  • FastAPI 特性检测

    • ✅ Pydantic BaseModel(已实现)
    • @app.exception_handler 异常处理(新增)
    • Depends() 依赖注入(新增)
    • APIRouter 路由分组(新增)
    • BackgroundTasks 后台任务(新增)
  • Django 特性检测

    • Django ORM vs 原生 SQL
    • Django Forms/DRF Serializers
    • get_object_or_404() 使用
  • Flask 特性检测

    • Flask-Marshmallow / Pydantic
    • @app.errorhandler 错误处理

实现细节:

  • 静态分析代码扫描
  • 检测框架推荐机制的利用情况
  • 给出具体的改进建议

🤖 Claude Code Hook 集成

自动生成 .claude/settings.json

  • 交互式配置: moat init 时询问是否集成 Claude Code
  • 自动生成 Hook 配置: PreToolUse + PostToolUse hooks
  • 非交互模式支持: 检测到 .claude 目录自动启用

生成的配置:

{
  "hooks": {
    "PreToolUse": [{
      "matcher": "Write|Edit",
      "hooks": [{
        "type": "command",
        "command": "moat gatekeeper check --file ${file}",
        "timeout": 5000
      }]
    }],
    "PostToolUse": [{
      "matcher": "Write|Edit",
      "hooks": [{
        "type": "command",
        "command": "moat check --diff",
        "timeout": 10000
      }]
    }]
  }
}

用户体验:

moat init
# 🤖 Claude Code 集成:
# 检测到 .claude 目录
# 是否将 Moat 守护进程集成至 Claude Code?(Y/n): y
# ✓ Claude Code Hook 已启用

📊 测试覆盖

  • verification 模块: 48/48 通过 (100%)
  • gatekeeper 模块: 29/29 通过 (100%)
  • 全部测试: 777/777 通过 (100%)
  • 算子实际能力验证: 通过

📦 文件更新

moat/discovery.py            # Claude Code Hook 集成
moat/verification/operators/
  ├── api_response_spec.py   # 完整实现
  └── framework_usage.py     # 完整实现

🎨 设计决策

小步快跑策略

  • 先覆盖 80%: 优先实现主流场景(FastAPI),不强求完美通用
  • 稳健优先: 算子检查失败只给 WARNING,不阻塞 CI/CD
  • 用户体验: 交互式配置 + 自动生成,开箱即用

0.7.0-beta - 2026-07-08

🎯 架构验收系统 (Architecture Verification)

全新功能: moat verify 命令

基于口播视频文案《怎么验收AI搭建的后端架构》设计,实现"规则、示例、证据"驱动的架构验收系统。

审计算子化架构
  • 7个独立算子: 通过组合而非继承实现验收流程
    • directory_responsibility — 目录责任验收
    • minimal_module_drill — 最小模块演练
    • api_response_spec — 接口响应规范验收
    • framework_usage — 框架利用检查
    • runtime_evidence — 运行证据包生成
    • architecture_health_score — 架构健康度评分
    • truth_document — 实施真元文档生成
核心特性
  • 算子化架构: 每个算子独立、可测试、可替换
  • 灵活组合: 支持完整验收 (moat verify --all) 或单个算子 (moat verify --operator <name>)
  • 证据链完整: 每个违规都有"规则来源→违反代码→修复建议"
  • 架构健康度评分: 5个维度量化架构质量(0-100分)
    • 目录责任清晰度(20分)
    • 分层架构遵守度(20分)
    • 接口响应一致性(20分)
    • 框架利用合理性(20分)
    • 命名规范遵守度(20分)
CLI命令

```bash

完整验收(7步流程)

moat verify --all

单项验收

moat verify --operator directory_responsibility

JSON输出

moat verify --json

CI/CD集成:评分低于60分则失败

moat verify --fail-on-score 60
```

架构基线管理
  • 基线初始化: moat baseline init
  • 基线对比: moat baseline diff --from v1.0.0 --to v2.0.0
  • 架构演进可追溯: 支持版本回滚

实施真元文档

自动生成 .moat/truth_document.md,包含:

  • 框架与语言
  • 目录责任
  • 新增模块规范
  • 接口响应规范
  • 框架利用原则
  • 运行证据
  • 架构变更记录

文档

  • ARCHITECTURAL_AUDIT_PROTOCOL.md — 架构验收方法论(口播文案整理)
  • moat-v0.7.0-architecture-upgrade.md — v0.7.0架构升级方案

🎯 实时架构守门 (Gatekeeper)

全新功能: moat gatekeeper 命令

实时架构规则检查系统,在文件写入前验证架构合规性。

规则引擎
  • 4条核心规则:
    • directory_responsibility — 目录责任规则
    • layer_separation — 分层架构规则
    • naming_convention — 命名规范规则
    • framework_usage — 框架利用规则
三层豁免机制("免死金牌")
  1. 行内注释: # moat-ignore: rule_id(优先级最高)
  2. 文件注释: 文件头部 # moat-ignore: rule_id
  3. 配置豁免: .moat/gatekeeper_config.json
CLI命令

```bash

列出所有规则

moat gatekeeper rules

检查单个文件

moat gatekeeper check --file api/users.py

启动守护进程(占位)

moat gatekeeper start
```

🧬 架构基线增强 (Baseline Management)

增强功能: 架构版本控制

  • 创建架构基线: 保存验收报告和相关文档
  • 列出基线: 查看所有历史基线
  • 对比基线: 分析架构变更
  • 回滚基线: 恢复到指定版本
  • 删除基线: 清理旧版本

🧪 测试覆盖

新增测试

  • verification 模块: 7个测试文件,43个测试用例
  • gatekeeper 模块: 4个测试文件,29个测试用例
  • baseline 模块: 1个测试文件,6个测试用例

测试结果

  • verification模块: 43/43 通过 (100%)
  • gatekeeper模块: 29/29 通过 (100%)
  • baseline模块: 6/6 通过 (100%)
  • 全部测试: 801/801 通过 (100%)
  • 向后兼容: 未破坏现有功能

📦 文件新增

moat/verification/      # 14个文件
moat/gatekeeper/         # 5个文件
moat/baseline.py         # 增强
tests/verification/      # 7个测试文件
tests/gatekeeper/        # 4个测试文件
tests/baseline/          # 1个测试文件

🎨 设计决策

决策1: 审计算子化架构

将验收流程设计为独立的"审计算子",通过组合实现流程。

优势:

  • 易于扩展:新增验收步骤只需添加新算子
  • 易于测试:每个算子可独立测试
  • 易于维护:修改某个步骤不影响其他步骤
  • 灵活组合:用户可选择运行部分算子

决策2: Gatekeeper"免死金牌"机制

三层豁免机制:行内注释 → 文件注释 → 配置豁免

设计原则:

  • 默认拦截
  • 显式豁免
  • 审计追踪
  • 定期清理提醒

0.7.0-alpha - 2026-07-08

🎯 架构验收系统 (Architecture Verification)

全新功能: moat verify 命令

基于口播视频文案《怎么验收AI搭建的后端架构》设计,实现"规则、示例、证据"驱动的架构验收系统。

审计算子化架构
  • 7个独立算子: 通过组合而非继承实现验收流程
    • directory_responsibility — 目录责任验收
    • minimal_module_drill — 最小模块演练
    • api_response_spec — 接口响应规范验收
    • framework_usage — 框架利用检查
    • runtime_evidence — 运行证据包生成
    • architecture_health_score — 架构健康度评分
    • truth_document — 实施真元文档生成
核心特性
  • 算子化架构: 每个算子独立、可测试、可替换
  • 灵活组合: 支持完整验收 (moat verify --all) 或单个算子 (moat verify --operator <name>)
  • 证据链完整: 每个违规都有"规则来源→违反代码→修复建议"
  • 架构健康度评分: 5个维度量化架构质量(0-100分)
    • 目录责任清晰度(20分)
    • 分层架构遵守度(20分)
    • 接口响应一致性(20分)
    • 框架利用合理性(20分)
    • 命名规范遵守度(20分)
CLI命令
# 完整验收(7步流程)
moat verify --all

# 单项验收
moat verify --operator directory_responsibility

# JSON输出
moat verify --json

# CI/CD集成:评分低于60分则失败
moat verify --fail-on-score 60
架构基线管理
  • 基线初始化: moat baseline init
  • 基线对比: moat baseline diff --from v1.0.0 --to v2.0.0
  • 架构演进可追溯: 支持版本回滚

实施真元文档

自动生成 .moat/truth_document.md,包含:

  • 框架与语言
  • 目录责任
  • 新增模块规范
  • 接口响应规范
  • 框架利用原则
  • 运行证据
  • 架构变更记录

文档

  • ARCHITECTURAL_AUDIT_PROTOCOL.md — 架构验收方法论(口播文案整理)
  • moat-v0.7.0-architecture-upgrade.md — v0.7.0架构升级方案

🧪 测试覆盖

新增测试

  • verification 模块: 7个测试文件,48个测试用例
    • test_operator.py — Operator基类测试(5个)
    • test_orchestrator.py — Orchestrator测试(8个)
    • test_types.py — 类型定义测试(9个)
    • test_directory_responsibility.py — 目录责任算子测试(7个)
    • test_framework_usage.py — 框架利用算子测试(7个)
    • test_architecture_health_score.py — 架构健康度算子测试(5个)
    • test_integration.py — 集成测试(5个)

测试结果

  • verification模块: 48/48 通过 (100%)
  • 全部测试: 771/771 通过 (100%)
  • 向后兼容: 未破坏现有功能

📦 文件新增

moat/verification/
├── __init__.py
├── types.py                    # 类型定义(Violation, OperatorResult等)
├── operator.py                 # Operator基类
├── orchestrator.py             # 编排器
├── verify_cli.py               # CLI命令
└── operators/
    ├── __init__.py
    ├── directory_responsibility.py
    ├── minimal_module_drill.py
    ├── api_response_spec.py
    ├── framework_usage.py
    ├── runtime_evidence.py
    ├── architecture_health_score.py
    └── truth_document.py

tests/verification/
├── __init__.py
├── test_operator.py
├── test_orchestrator.py
├── test_types.py
├── test_directory_responsibility.py
├── test_framework_usage.py
├── test_architecture_health_score.py
└── test_integration.py

🎨 设计决策

决策1: 审计算子化架构

将7步验收流程设计为独立的"审计算子",通过组合而非继承实现流程。

优势:

  • 易于扩展:新增验收步骤只需添加新算子
  • 易于测试:每个算子可独立测试
  • 易于维护:修改某个步骤不影响其他步骤
  • 灵活组合:用户可选择运行部分算子

决策2: Gatekeeper"免死金牌"机制(已设计,待实现)

三层豁免机制:

  1. 文件级:文件头部注释 # moat-ignore: rule_name
  2. 行级:单行注释 # moat-ignore: rule_name
  3. 配置级.moat/gatekeeper_config.json 全局配置

设计原则:

  • 默认拦截
  • 显式豁免
  • 审计追踪
  • 定期清理提醒

0.6.2 - 2026-07-08

🎯 覆盖率优化

P0 紧急修复

  • 修复 evolution.py 测试失败: EnhancedPainScorer 初始化逻辑修复
  • 修复 BridgeConfig 导入: 修复 NameError(便捷函数)
  • 修复数据库连接泄漏: sync.py 添加 finally 块确保连接关闭
    • 消除 ResourceWarning: unclosed database

P1 核心模块覆盖提升

  • l1_behavior.py: 0% → 100%(新增 8 个测试)
  • l2_schema.py: 0% → 100%(新增 13 个测试)
  • contract.py: 0% → 100%(新增 12 个测试)

P2 TypeScript 检查模块

  • any_type.py: 0% → 88%(新增 16 个测试)
  • async_race.py: 0% → 96%(新增 11 个测试)
  • 修复 any_type.py 3 个 bug(变量名 total/total_any 混用)

P3 其他模块优化

  • cli.py: 37% → 37%(+6 参数解析测试)
  • sidecar/watcher.py: 38% → 45%(+15 测试)
  • evolution.py: 65% → 98%(修复 14 个测试)

🐛 Bug 修复

TypeScript 检查

  • any_type.py:69,75,87: 变量名 total 未定义
    • 影响:当检测到 >20 个 any 类型时会崩溃
    • 修复:统一使用 total_any 变量名

进化模块

  • evolution.py:173-176: EnhancedPainScorer 覆盖测试设置
    • 影响:14 个进化模块测试失败
    • 修复:优先使用 evolution_engine.evolved_rules

数据库连接

  • sync.py:325: 数据库连接未关闭
    • 影响:ResourceWarning 警告
    • 修复:添加 finally 块确保连接关闭

📊 测试覆盖

  • 总测试数: 723 通过(+41)
  • 失败测试: 0(从 14 降至 0)
  • 整体覆盖率: 63% → 67%(+4%)
  • 未覆盖行数: 1495 → 1351(-144)

🏆 测试分布

模块 覆盖率 状态
L1-L4 检查层 84-100% ✅ 优秀
AST 感知层 78-91% ✅ 良好
TypeScript 检查 平均 44% ⚠️ 待优化
Sidecar 守护进程 45-82% ⚠️ 待优化
CLI 命令 37% ⚠️ 待优化

📝 新增测试文件

  • tests/test_contract.py - CONTRACT.md 生成器测试
  • tests/test_l1_behavior.py - 行为验证检查测试
  • tests/test_l2_schema.py - API 结构检查测试
  • tests/test_ts_any_type.py - TypeScript any 类型检测测试
  • tests/test_ts_async_race.py - TypeScript 异步竞态检测测试

🔧 改进的测试文件

  • tests/test_evolution.py - 修复 14 个测试失败
  • tests/test_cli.py - 新增 6 个参数解析测试
  • tests/test_sidecar_watcher.py - 新增 15 个文件监控测试

0.6.1 - 2026-07-07

🐛 Bug 修复

Sidecar 可选依赖修复

  • watchdog 延迟导入: moat/sidecar/watcher.py 改为 try-except 保护
  • 条件继承: FileChangeHandler 根据 watchdog 可用性条件继承
  • 启动检查: SidecarWatcher.start() 增加 watchdog 可用性检查
  • Pydantic BaseModel 跳过: moat/checks/l1_modules.py 检测并跳过 Pydantic 模型实例化

修复的问题:

  • ModuleNotFoundError: No module named 'watchdog' → ✅ 优雅降级
  • CheckRequest() 实例化失败 → ✅ Pydantic 模型检测跳过

影响: moat check 自举测试通过率 19→21 通过,失败 4→0

🔄 改进

  • 版本号: v0.6.0 → v0.7.0-beta
  • 文档: 新增 SIDECAR_BUGFIX_REPORT.md 详细修复报告
  • 发布测试: 新增 RELEASE_TEST_REPORT_v0.7.0-beta.md 完整测试报告

📊 测试覆盖

  • 单元测试: 81/81 通过 (100%)
  • moat check 自举: 21 通过, 0 失败, 1 警告
  • Sidecar Bug 修复验证: 2/2 通过
  • CLI 命令测试: 10/10 通过
  • 进化指标系统: 正常运行 (0.325/1.000)
  • AST 骨架图: 391 函数, 441 调用

📝 发布验证

测试时间: 2026-07-08 07:45
测试环境: macOS Darwin 24.6.0, Python 3.14.6


0.6.0 - 2026-07-07

🎉 里程碑: 多语言感知 + 深度记忆 + 智能进化

Moat 进化为跨语言代码质量守护平台,支持 Tree-sitter 多语言解析、One Memory 深度集成和知识图谱记忆扩展。

✨ 新增功能

Tree-sitter 多语言支持

  • Tree-sitter 集成: 支持 Python/TypeScript/JavaScript/Go/Rust 等语言
  • 跨语言骨架图: 统一的函数调用图生成
  • 多语言 AST 感知: 语言无关的增量对比
  • CLI 命令: moat ast build --lang typescript

新增文件:

  • moat/ast/tree_sitter.py — Tree-sitter 封装
  • tests/test_tree_sitter.py — Tree-sitter 测试

One Memory 深度集成

  • 自动触发梦境引擎: moat memory dream 触发 One Memory Insight 生成
  • 双向同步管理器: 自动同步 Insights → 进化规则
  • 记忆质量报告: moat memory report 生成详细质量报告
  • 同步状态追踪: 自动记录同步历史

新增文件:

  • moat/memory/sync.py — 双向同步管理器
  • tests/test_memory_sync.py — Memory Sync 测试

进化指标自动采集

  • 自动记录: moat check 后自动记录进化指标
  • 配置自动调整: moat evolution adjust --auto 基于指标自动调整配置
  • 增强的 EvolutionTracker: 与 runner 深度集成

新增文件:

  • tests/test_evolution_auto.py — 进化指标自动采集测试

知识图谱记忆扩展

  • 修复历史追踪: 记录 Bug 修复次数、修复人、修复时间
  • 架构薄弱点识别: 高频 Bug 文件/模块自动识别
  • 修复模式推荐: 基于历史成功修复的模板
  • 智能提示系统: 检查时主动提示历史问题

新增表结构:

  • fix_history — Bug 修复历史
  • weak_points — 架构薄弱点
  • fix_patterns — 修复模式
  • dream_triggers — 梦境触发记录
  • smart_hints — 智能提示

新增文件:

  • tests/test_knowledge_graph.py — 知识图谱扩展测试

🔄 改进

  • 版本号: v0.4.0 → v0.5.0
  • 定位更新: "多语言感知 + 深度记忆 + 智能进化"
  • 文档增强: 新增 4 个核心功能文档

📊 测试覆盖

  • 新增测试: 36 个(9 + 9 + 7 + 11)
  • 总通过率: 72/72 (100%)
  • 跳过: 9(tree-sitter 依赖未安装)

🧪 性能指标

  • Tree-sitter 解析速度: < 50ms/文件
  • One Memory 同步延迟: < 100ms
  • 进化指标自动采集: 0ms 额外开销
  • 智能提示查询: < 5ms

0.4.0 - 2026-07-07

🎉 里程碑: 第一个自我进化的 AI 编码守护者

(保持原有内容...)