ECC 中的 /python-review 命令实战:基于 python-reviewer Agent 的 Python 代码审查全流程 ECC 中的 /python-review 命令实战基于 python-reviewer Agent 的 Python 代码审查全流程【免费下载链接】ECCThe agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.项目地址: https://gitcode.com/GitHub_Trending/ev/ECC导读本文以 commands/python-review.md 文档为核心骨架系统讲解 ECCEnterprise Coding Copilot中/python-review命令如何调用python-reviewerAgent对改动后的.py文件执行静态分析、安全扫描、类型检查与 Pythonic 风格审查并输出按严重级别分类的审查报告。读完本文你将掌握在提交前用/python-review拦截 CRITICAL/HIGH 级问题、复用其 CRITICAL/HIGH/MEDIUM 三级审查标准与 PASS/WARNING/FAIL 门禁判据的方法并能在 Django、FastAPI、Flask 等框架项目中有针对性地排查 N1 查询、CORS 配置、上下文管理等问题。命令定位从 diff 到门禁的单命令 Python 审查闭环/python-review是 ECC 中面向 Python 语言的专项代码审查命令。其 frontmatter 中声明Comprehensive Python code review for PEP 8 compliance, type hints, security, and Pythonic idioms. Invokes the python-reviewer agent即它不直接内置审查逻辑而是调用 python-reviewer Agent执行审查。从仓库的配置与索引文件可以确认这条调用链是真实存在的docs/COMMAND-AGENT-MAP.md 中明确登记了/python-review→ python-reviewer 的映射关系COMMANDS-QUICK-REF.md 将/python-review归纳为「Python — PEP 8, type hints, security, idiomatic patterns」rules/common/code-review.md 在整个代码审查规则体系中将 python-reviewer 指定为处理 Python specific issues 的专项角色Agent 的实现文件位于 agents/python-reviewer.md命令文件位于 commands/python-review.md。整条链路是 ECC 命令 → Agent 架构的典型样例命令负责定义触发时机与流程Agent 负责落地专业审查标准。该命令做了什么六步审查流程/python-review的执行路径可以被拆解为六个明确步骤识别 Python 变更通过git diff -- *.py找出本次修改/新增的.py文件聚焦增量而非全量。运行静态分析依次执行ruff、mypy、pylint、black --check等工具覆盖 lint、类型与格式三方面。安全扫描重点排查 SQL 注入、命令注入、不安全反序列化等漏洞。类型安全审查分析类型注解质量与 mypy 报错。Pythonic 代码检查核对代码是否符合 PEP 8 与 Python 最佳实践。生成报告按严重级别CRITICAL / HIGH / MEDIUM对发现的问题分类汇总。Agent 侧的 agents/python-reviewer.md 给出了更底层的执行顺序先用git diff -- *.py看近期 Python 变更其次在可用时跑静态分析工具然后只聚焦修改过的.py文件立即开始人工审查。注意 Agent 的能力声明中 tools 为Read, Grep, Glob, Bash这意味着审查过程中它会直接读取文件、搜索代码模式并执行诊断命令。触发时机与前置条件命令文档明确列出了应当使用/python-review的场景写完或修改了 Python 代码之后提交 Python 变更之前审查包含 Python 代码的 Pull Request新人接入一个陌生的 Python 代码库想学习 Pythonic 惯用法与最佳实践。需要留意的是/python-review属于提交前的最后一道评审闸门其上游还应先跑通测试。命令文档建议与tdd-workflow技能skills/tdd-workflow/SKILL.md配合先确保测试通过再做代码审查。三级审查标准CRITICAL / HIGH / MEDIUM 问题分类命令把问题严格划分为三个严重级别每个级别有明确且可枚举的检查点。CRITICAL必须修复SQL / 命令注入漏洞用户输入未经验证直接拼入查询或 shell 命令不安全的eval/exec使用Pickle 不安全反序列化硬编码凭据API key、密码等YAML 不安全 loadyaml.load未指定Loader裸except子句吞掉错误。Agent 侧在此基础上补充了一组更细的 CRITICAL 扫描点包括路径穿越用户可控路径需用normpath校验、拒绝..、弱加密算法用 MD5/SHA1 做安全用途以及「资源未用上下文管理器管理」。HIGH应该修复公共函数缺少类型注解可变默认参数def f(x[])这类共享状态陷阱静默吞掉异常不使用上下文管理器管理资源用 C 风格循环而非推导式用type()而不是isinstance()无锁条件下的竞态问题。Agent 进一步扩展了 HIGH 类别过度使用Any当存在更具体类型时、可空参数漏写Optional、函数超过 50 行或超过 5 个参数应改用 dataclass、嵌套层级过深4 层、重复代码模式、魔法数字不提取具名常量、共享状态不加threading.Lock、循环内 N1 查询应批量查询等。MEDIUM考虑处理PEP 8 格式违规公共函数缺少 docstring用print而非logging低效字符串操作魔法数字不提取具名常量未使用 f-string 格式化不必要地创建列表应改生成器/惰性求值。Agent 层补充的 MEDIUM 项包括from module import *污染命名空间、用value None而非value is None、遮蔽内置名称list、dict、str。这套分类在 agents/python-reviewer.md 中按 Review Priorities 组织为 Security、Error Handling、Type Hints、Pythonic Patterns、Code Quality、Concurrency、Best Practices 七大类实际执行时可按类逐一对照代码。自动化检查工具链与典型配置命令在审查过程中会尝试运行以下自动化检查能用的工具都会跑工具缺失时降级为 Agent 人工审查# 类型检查 mypy . # Lint 与格式 ruff check . black --check . isort --check-only . # 安全扫描 bandit -r . # 依赖审计 pip-audit safety check # 测试含覆盖率 pytest --covapp --cov-reportterm-missing这些命令同样是 agents/python-reviewer.md 中列出的 Diagnostic Commands。组合起来覆盖了「静态质量 → 类型 → 安全 → 依赖 → 测试」的完整质量面。其中各工具的定位如下工具职责失败含义ruff超快 lint聚合 E/F/I/N/W 等规则存在风格或潜在 bugmypy静态类型检查存在类型不一致black --check格式一致性校验有文件需要重排格式isort --check-onlyimport 排序校验import 顺序不合规banditPython 安全扫描存在安全风险模式pip-audit/safety check依赖漏洞审计依赖存在已知 CVEpytest --cov测试与覆盖率有失败用例或覆盖率缺口关于这些工具的落地配置skills/python-patterns/SKILL.md 给出了一套可直接参考的pyproject.toml样例[tool.black] line-length 88、[tool.ruff] select [E, F, I, N, W]、[tool.mypy] disallow_untyped_defs true、[tool.pytest.ini_options] addopts --covmypackage --cov-reportterm-missing。ECC 仓库自身在根目录也维护了一份真实的 pyproject.toml可以作为参照物查看 Python 工程化的组织方式。如果要对某一行命令单独验证可以按文件或目录收窄范围例如mypy src/ # 只检查 src 目录 ruff check app/routes/user.py pytest tests/test_utils.py -v审查输出一份可落地的门禁报告命令规定了报告的标准格式。/python-review运行后Agent 会输出类似下面的审查报告User: /python-review Agent: # Python Code Review Report ## Files Reviewed - app/routes/user.py (modified) - app/services/auth.py (modified) ## Static Analysis Results ✓ ruff: No issues ✓ mypy: No errors WARNING: black: 2 files need reformatting ✓ bandit: No security issues ## Issues Found [CRITICAL] SQL Injection vulnerability File: app/routes/user.py:42 Issue: User input directly interpolated into SQL query query fSELECT * FROM users WHERE id {user_id} # Bad Fix: Use parameterized query query SELECT * FROM users WHERE id %s # Good cursor.execute(query, (user_id,)) [HIGH] Mutable default argument File: app/services/auth.py:18 Issue: Mutable default argument causes shared state def process_items(items[]): # Bad items.append(new) return items Fix: Use None as default def process_items(itemsNone): # Good if items is None: items [] items.append(new) return items [MEDIUM] Missing type hints File: app/services/auth.py:25 Issue: Public function without type annotations def get_user(user_id): # Bad return db.find(user_id) Fix: Add type hints def get_user(user_id: str) - Optional[User]: # Good return db.find(user_id) [MEDIUM] Not using context manager File: app/routes/user.py:55 Issue: File not closed on exception f open(config.json) # Bad data f.read() f.close() Fix: Use context manager with open(config.json) as f: # Good data f.read() ## Summary - CRITICAL: 1 - HIGH: 1 - MEDIUM: 2 Recommendation: FAIL: Block merge until CRITICAL issue is fixed ## Formatting Required Run: black app/routes/user.py app/services/auth.py报告的单条 issue 采用固定结构[SEVERITY] 标题 / File: 路径:行号 / Issue: 问题描述 / Fix: 修复建议这正是 agents/python-reviewer.md 中规定的 Review Output Format保证每一条结论都可在源码中定位、可按建议直接修复。审批标准Approval Criteria命令为审查结果定义了明确的三态门禁状态条件PASS: Approve无 CRITICAL 或 HIGH 问题WARNING: Warning仅存在 MEDIUM 问题可谨慎合并FAIL: Block发现 CRITICAL 或 HIGH 问题这是该命令最有工程价值的部分它不是提建议而是给出一个阻塞合并的明确结论。当报告输出FAIL时说明存在必须修复的安全漏洞或设计缺陷应修复后重新跑一遍/python-review。Agent 层视角python-reviewer 的审查方法论从命令下钻一层agents/python-reviewer.md 展示了审查能力的内核包含两部分值得关注的机制Prompt Defense Baseline提示词防御基线。Agent 在开始审查前先声明了一系列安全约束不改变角色身份、不泄露密钥/API 凭据、警惕 Unicode 同形字与零宽字符等注入伪装、将第三方/网络取回内容视为不可信输入等。这意味着审查结论不应被恶意构造的代码或文档内容诱导。Would this code pass review at a top Python shop or open-source project?这是 Agent 的工作心态设定以一流 Python 团队或成熟开源项目的水准来审视每一段代码而不只是机械跑工具。Agent 还明确定义了自身适用边界——它应服务于所有 Python 变更Use for all Python code changes. MUST BE USED for Python projects模型默认配置为 sonnet并需具备 Read、Grep、Glob、Bash 四种工具能力。命令文档所描述的六步流程本质上就是该 Agent 内部 Review Priorities安全 → 错误处理 → 类型 → Pythonic 风格 → 代码质量 → 并发 → 最佳实践的外部化。框架专项审查Django / FastAPI / Flask纯语言层审查之外命令还会针对常见 Web 框架做专项检查。这些框架检查与仓库中对应的专项 Agent 文件互相印证Django 项目参见 agents/django-reviewer.mdN1 查询问题应使用select_related和prefetch_related预取关联数据模型变更缺少 migration能用 ORM 表达却写了 Raw SQL多步骤操作缺少transaction.atomic()包裹无法保证原子性。FastAPI 项目参见 agents/fastapi-reviewer.mdCORS 配置错误过宽或缺失来源限制是否用 Pydantic 模型做请求校验Response models 是否定义正确异步/await 使用是否正确在 async 函数中做阻塞调用等反模式依赖注入模式是否规范。Flask 项目上下文管理是否到位app context、request context错误处理是否完善Blueprint 的组织方式配置管理方式。常见问题修复清单可直接复用的代码模式命令文档整理了六类高频问题的 before/after 对照配合 skills/python-patterns/SKILL.md 可形成一套完整的 Python 惯用法速查添加类型注解# Before def calculate(x, y): return x y # After from typing import Union def calculate(x: Union[int, float], y: Union[int, float]) - Union[int, float]: return x y在 Python 3.9 上可直接使用内建泛型def calculate(x: int | float, y: int | float) - int | float配合TypeAlias、TypeVar、Protocol等高级特性构造更精确的类型。使用上下文管理器# Before f open(file.txt) data f.read() f.close() # After with open(file.txt) as f: data f.read()当需要自定义资源时还可以用contextmanager或实现__enter__/__exit__的类来封装事务提交/回滚类场景尤其适用。使用列表推导式# Before result [] for item in items: if item.active: result.append(item.name) # After result [item.name for item in items if item.active]注意过复杂的嵌套推导式应反方向展开为普通循环以保证可读性。修复可变默认参数# Before def append(value, items[]): items.append(value) return items # After def append(value, itemsNone): if items is None: items [] items.append(value) return items使用 f-stringPython 3.6# Before name Alice greeting Hello, name ! greeting2 Hello, {}.format(name) # After greeting fHello, {name}!修复循环中的字符串拼接# Before result for item in items: result str(item) # After result .join(str(item) for item in items)循环内因字符串不可变会产生 O(n²) 开销join为 O(n)在大量拼接时也优先考虑io.StringIO。Python 版本兼容性检查由于不同 Python 版本支持的语言特性差异很大reviewer 会标注代码是否使用了更新版本才有的语法并要求工程在其pyproject.toml/setup.py中声明正确的最低 Python 版本特性最低 Python 版本Type hints3.5f-strings3.6Walrus 运算符:3.8Position-only 参数3.8Match 语句3.10类型联合x | None3.10在 skills/python-patterns/SKILL.md 中还有更细的分层建议Python 3.9 用内建容器泛型list[str]Python 3.8 及更早版本则需回退到typing模块List[str]。如果目标环境是 3.9那么在代码中使用dict[str, int]并让pyproject.toml声明requires-python 3.9是最稳妥的搭配。与周边命令 / 技能的协同命令文档在 Integration with Other Commands 一节给出了推荐的使用次序可归纳为一条完整的质量流水线先写测试使用tdd-workflow技能skills/tdd-workflow/SKILL.md保证测试通过通用审查兜底非 Python 专项的问题交由/code-reviewcommands/code-review.md处理提交前专项审查任何 Python 变更在提交前跑/python-review测试与覆盖率保障可结合 skills/python-testing/SKILL.md 中pytest --cov的用法把 80% 覆盖率与「关键路径 100%」作为测试环节的补充目标。/python-review本身在 ECC 的 Agent 体系中也承担明确角色rules/common/code-review.md 规定 python-reviewer 负责 Python 专项问题而 docs/COMMAND-AGENT-MAP.md 可以帮你快速检索它与其他语言专项审查命令go-review、rust-review、react-review、vue-review 等在命令 → Agent 映射中的位置。ECC 仓库自身的 Python 实践印证ECC 本身是一个以 JavaScript/Node 为主的工具链仓库但同样包含可被/python-review审视的真实 Python 代码可作为审查标准的落地样例src/llm 目录下有 20 个 Python 源文件是仓库内 LLM 相关模块的实现主体tests 目录包含conftest.py、test_executor.py、test_selector.py、test_provider_tools.py等 pytest 测试其中 tests/conftest.py 展示了pytest_configure钩子与类型注解的写法正好对应/python-review对公共函数类型注解与测试质量的要求根目录 pyproject.toml 声明了仓库的 Python 工程配置ecc_dashboard.py 是仓库根级的一个 Python 脚本示例。换句话说当你在 ECC 仓库自身改动了任何.py文件后同样可以在提交前执行/python-review由 python-reviewer Agent 按照 PEP 8、类型安全、安全扫描与 Pythonic 惯用法四维标准给出审查报告与 PASS/WARNING/FAIL 门禁结论。小结/python-review的价值在于把「高质量 Python 审查」这件依赖资深经验的事封装成了可随时调用的命令级能力它先用git diff锁定增量再叠加 ruff/mypy/black/bandit/pip-audit/pytest 的工具矩阵与 python-reviewer Agent 的人工判断最后以三级严重性分类 三态审批门禁的形式输出一份既能定位到文件:行号、又给出可直接落地的修复建议的审查报告。无论是个人提交前自检、团队 PR 合并把关还是新代码库的代码质量摸底这套流程都值得直接复用到你日常的 Python 工程中。【免费下载链接】ECCThe agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.项目地址: https://gitcode.com/GitHub_Trending/ev/ECC创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考