ECC 规则体系实战:为 Claude Code 配置 PHP 专属 Hooks,实现自动格式化、静态分析与安全告警
ECC 规则体系实战为 Claude Code 配置 PHP 专属 Hooks实现自动格式化、静态分析与安全告警【免费下载链接】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本篇技术指南聚焦于 ECCEverything Claude Code规则体系中 PHP 专属的 Hooks 规则docs/ja-JP/rules/php/hooks.md源规则见 rules/php/hooks.md讲解如何基于 Claude Code 的 Hook 事件机制为 PHP 项目配置「编辑后自动格式化、静态分析、定向测试」三大 PostToolUse 检查以及针对调试残留与安全回归的告警规则。读完本文你将能够在~/.claude/settings.json中落地一套可复制的 PHP Hooks 配置并结合仓库内真实 Hook 实现scripts/hooks/、hooks/hooks.json理解其底层原理。一、规则定位PHP Hooks 在 ECC 规则体系中的角色ECC 是一个面向 Claude Code、Codex、Opencode、Cursor 等 Agent 环境的 harness 优化系统其rules/目录按语言与横向主题组织了大量规则文档。每条语言规则通过 frontmatter 中的paths声明生效范围例如 PHP 规则只在与下列路径相关的文件上激活--- paths: - **/*.php - **/composer.json - **/phpstan.neon - **/phpstan.neon.dist - **/psalm.xml ---这套声明意味着只要 Agent 会话涉及.php源文件、Composer 清单或 PHPStan/Psalm 静态分析配置PHP 专属规则就会被加载。PHP 的 Hooks 规则并非孤立文件而是明确继承自通用 Hooks 规则——原文中 This file extends [common/hooks.md](https://link.gitcode.com/i/2260589398049e1032b6b47218ca0f61) with PHP specific content.对应仓库根路径为 rules/common/hooks.md因此在理解 PHP 专属部分之前需要先掌握通用的 Hook 事件模型。二、Hook 事件模型PreToolUse / PostToolUse / Stop 与生命周期钩子通用 Hooks 规则rules/common/hooks.md将 Claude Code 的 Hook 分为三类核心事件而仓库内的 hooks/README.md 进一步补充了完整的生命周期视角事件触发时机能力边界PreToolUse工具执行前可校验、可修改参数exit code 2 可阻断工具调用仅输出 stderr 则只告警不阻断PostToolUse工具执行后自动格式化、运行检查只能分析输出无法阻断Stop每次 Agent 响应结束后最终校验如批量化格式化与类型检查、console.log 审计、会话状态持久化SessionStart / SessionEnd会话生命周期边界加载历史上下文、会话结束清理PreCompact上下文压缩前保存状态防止信息丢失整个数据流可以概括为用户请求 → Agent 选择工具 → PreToolUse 钩子运行 → 工具执行 → PostToolUse 钩子运行。ECC 仓库自身即大量使用这套机制在 hooks/hooks.json 中可以看到PreToolUse的 Bash 预检分发器pre:bash:dispatcher、PostToolUse的同步/异步分发器post:dispatcher:sync / async、以及Stop事件下的批量化格式与类型检查stop:format-typecheck。PHP 专属 Hooks 规则正是要在这套通用事件模型之上叠加 PHP 技术栈特有的检查动作。三、PHP PostToolUse Hooks格式化、静态分析、定向测试三件套PHP Hooks 规则的核心内容是在~/.claude/settings.json中配置PostToolUse钩子针对每次编辑后的.php文件自动执行三项检查。规则原文列出的三组工具组合恰好对应 PHP 工程质量的三个维度格式规范、类型安全、行为正确。3.1 自动格式化Pint / PHP-CS-FixerPint / PHP-CS-Fixer: Auto-format edited.phpfiles.编辑完成的.php文件应立即被格式化避免 Agent 生成与项目风格不一致的代码。这与 rules/php/coding-style.md 中「使用 PHP-CS-Fixer 或 Laravel Pint 进行格式化」的规范直接呼应——两者都是基于 PSR-12 的格式化器Pint 是 Laravel 官方维护、更强调零配置开箱即用的选择PHP-CS-Fixer 则提供更细粒度的规则集定制。这一行为在仓库内的 JS/TS 版本已有成熟实现可参考scripts/hooks/post-edit-format.js。该实现的核心模式是解析 stdin 传入的 Hook JSON取出tool_input.file_path用正则匹配文件扩展名该文件匹配\.(ts|tsx|js|jsx)$PHP 版对应改为\.php$向上查找项目根目录自动探测项目使用的格式化器Biome/PrettierPHP 版对应探测 Pint/PHP-CS-Fixer优先调用本地node_modules/.binPHP 版对应vendor/bin下的可执行文件避免解析开销格式化失败时静默失败、非阻断——格式化工具未安装或失败都不应中断 Agent 主流程。3.2 静态分析PHPStan / PsalmPHPStan / Psalm: Run static analysis after PHP edits in typed codebases.在类型化代码库中PHP 编辑之后应运行静态分析尽早暴露类型错误。PHPStan 与 Psalm 是 PHP 生态的两大主流静态分析器ECC 的 PHP 代码评审 Agentagents/php-reviewer.md也把二者列为评审前置步骤并给出了可直接使用的诊断命令./vendor/bin/phpstan analyse --level max # 类型安全与错误level max 为最高严格级别 ./vendor/bin/psalm --show-infotrue # 静态分析显示 info 级信息静态分析配置本身即被 PHP 规则 frontmatter 的paths覆盖phpstan.neon、phpstan.neon.dist、psalm.xml说明规则作者把「分析配置」也纳入了 Agent 的监控范围——当这些文件被改动时同样应触发 PHP 相关检查。3.3 定向测试PHPUnit / PestPHPUnit / Pest: Run targeted tests for touched files or modules when edits affect behavior.当编辑影响行为时应针对被改动文件或所属模块运行定向测试而不是全量跑测试套件——这是控制 Agent 工作循环耗时的重要策略。测试框架的选择遵循 rules/php/testing.md 的约定PHPUnit 为默认框架若项目已配置 Pest则新测试优先使用 Pest且避免混用两套框架。常用命令vendor/bin/phpunit --filterTargetTest --coverage-text # PHPUnit 定向测试 # 或 vendor/bin/pest --filterTargetTest --coverage # Pest 定向测试该规则还建议在 CI 中保持覆盖率阈值优先 pcov 或 Xdebug让覆盖率要求成为机器可执行的硬性门槛。四、一份可直接落地的~/.claude/settings.json配置示例将上述三件套组合进 Claude Code 的 Hook 配置JSON 结构与 hooks/hooks.json 中matcher → hooks[] → type/command的层级一致{ hooks: { PostToolUse: [ { matcher: Edit|Write, hooks: [ { type: command, command: php -r \$dstream_get_contents(STDIN);$ijson_decode($d,true);$f$i[tool_input][file_path]??;if(preg_match(/\\.php$/,$f)){exec(vendor/bin/pint .escapeshellarg($f));}echo $d;\ } ], description: Auto-format edited PHP files with Laravel Pint }, { matcher: Edit|Write, hooks: [ { type: command, command: php -r \$dstream_get_contents(STDIN);$ijson_decode($d,true);$f$i[tool_input][file_path]??;if(preg_match(/\\.php$/,$f)is_file(phpstan.neon)){exec(vendor/bin/phpstan analyse .escapeshellarg($f). --no-progress);}echo $d;\ } ], description: Run PHPStan on edited PHP files when phpstan.neon exists } ] } }关键点说明对应 hooks/README.md 的 Hook 协议stdin/stdout 协议Hook 是 shell 命令从 stdin 读取 JSON含tool_name、tool_input.file_path、tool_output等字段并必须将原始数据回写到 stdoutmatcher 匹配Edit|Write表示对编辑与新建文件都生效如需更精确可只用Edit退出码语义0表示成功继续2表示阻断仅 PreToolUse 有效其他非零视为错误记日志但不阻断——因此 PostToolUse 的格式化、分析钩子失败时应以非阻断方式处理避免拖垮 Agent 主流程路径安全性直接拼接 shell 命令存在注入风险生产环境建议仿照 scripts/hooks/post-edit-format.js 的做法对文件路径做 shell 元字符过滤该文件用正则/[|^%!;()$]/ 拒绝不安全路径。注意以上为贴合规则意图的示例配置实际命令需按项目依赖Pint/PHP-CS-Fixer、PHPStan/Psalm、PHPUnit/Pest 的 vendor 路径与所在平台Windows/macOS/Linux调整。五、警告规则调试残留、原始 SQL 与安全回退PHP Hooks 规则的第二部分定义了 PostToolUse 钩子的告警职责即不阻断、但必须提醒 Agent 与用户注意的代码质量问题5.1 调试残留var_dump / dd / dump / die()Warn onvar_dump,dd,dump, ordie()left in edited files.var_dump()、Laravel 的dd()、Symfony 的dump()以及die()都是典型的调试残留一旦进入提交会产生输出污染甚至中断请求。ECC 的 PHP 评审 Agent 在 MEDIUM 优先级检查项中同样列出「dd()/dump()/var_dump()left in committed code」见 agents/php-reviewer.md规则与评审工具在此形成闭环PostToolUse 钩子负责即时告警评审 Agent 负责在代码审查阶段把关。仓库中Stop事件的check-console.log钩子见 hooks/hooks.json 与 scripts/hooks/check-console-log.js正是同类「残留扫描」思路——它在每次响应后检查被修改文件中的console.logPHP 版本只需把扫描目标换成上述四个 PHP 调试函数。5.2 安全回归原始 SQL 与 CSRF/会话保护Warn when edited PHP files add raw SQL or disable CSRF/session protections.两类安全回退必须被标记原始 SQL在控制器或视图中拼接 SQL 字符串是 SQL 注入的温床。这与 rules/php/security.md 的「数据库安全」条款完全一致——所有动态查询应使用预处理语句PDO、Doctrine、Eloquent query builder避免在控制器/视图中手工拼接 SQLORM 批量赋值mass-assignment应严格白名单化$fillable可写字段禁用 CSRF/会话保护如移除 CSRF 中间件、关闭 session、绕过框架内置的请求令牌校验等操作属于高危变更。security.md明确要求密码存储使用password_hash()/password_verify()认证与权限变更后必须重新生成会话标识符状态变更类 Web 请求必须强制 CSRF 保护。PostToolUse 钩子应在编辑内容中检测这些模式的痕迹并发出告警。从 rules/php/hooks.md 的paths可见composer.json也被纳入监控——依赖变更同样可能引入安全风险security.md建议在 CI 中运行composer audit检查依赖漏洞并审慎评估新增维护者的可信度。六、自动批准权限只信任明确计划禁用跳过校验通用 Hooks 规则rules/common/hooks.md对自动批准权限给出了严格的边界这部分同样适用于 PHP 场景尤其是上述「自动格式化、自动跑测试」这类会产生副作用的钩子仅在可信、定义清晰的计划下启用自动批准探索性工作中禁用自动批准——此时 Agent 的行为不可预期盲目放行会掩盖错误绝不使用dangerously-skip-permissions标志跳过所有权限校验取而代之在~/.claude.json中通过allowedTools精确声明允许的工具白名单例如只放行Bash(pint:*)、Bash(phpstan:*)、Bash(phpunit:*)等具体命令前缀而不是整类放行。七、TodoWrite 最佳实践让多步任务可追踪PHP 修复往往横跨「格式化 → 静态分析 → 定向测试 → 修复告警」多个步骤通用 Hooks 规则建议使用TodoWrite工具跟踪多步骤任务的进度跟踪多步任务的进度防止遗漏验证 Agent 是否正确理解指令支持实时调整执行方向展示细粒度的实现步骤。同时Todo 列表本身也是一面镜子——它能暴露顺序错误的步骤、缺失的项目、多余的项目、粒度不当、以及被误解的需求。对于 PHP Hooks 流水线而言合理的 Todo 分解示例为1) 用 Pint 格式化改动文件 → 2) 运行 PHPStan 静态分析 → 3) 对受影响模块跑 PHPUnit/Pest → 4) 扫描调试残留与安全回退并修复。八、运行时控制不修改配置即可开关钩子ECC 的 Hook 运行时hooks/README.md为钩子提供了环境变量级的控制面避免为了临时调整而反复编辑 JSON 配置# 总开关显式环境变量优先于插件偏好 export ECC_HOOKS_ENABLEDtrue # 运行档位minimal | standard | strict默认 standard export ECC_HOOK_PROFILEstandard # 按 ID 禁用特定钩子逗号分隔 export ECC_DISABLED_HOOKSpre:bash:tmux-reminder,post:edit:typecheck # 禁用 GateGuard仅限搭建或恢复阶段 export ECC_GATEGUARDoff三个档位的语义minimal—— 只保留必要的生命周期与安全钩子standard—— 默认档质量与安全检查平衡strict—— 启用更多提醒与更严格的护栏。在 PHP 项目中若某次会话只想跑格式化不想跑静态分析可以借助ECC_DISABLED_HOOKS精确关闭对应钩子而不必改动~/.claude/settings.json。若以插件方式安装则通过ecc setup --mode claude-plugin管理hooks_enabled与hook_profile偏好。九、进阶参照仓库实现编写你自己的 PHP Hook仓库的 hooks/README.md 提供了完整的自研 Hook 模板my-hook.js骨架其要点是从 stdin 读取 JSON、解析tool_name/tool_input/tool_output、按需向 stderr 输出告警、最后把原始数据回写 stdout。基于此你可以为 PHP 定制更精细的检查例如TODO 告警在new_string中匹配TODO|FIXME|HACK并提醒创建 issue测试伴随检查新建 PHP 源文件时检查同名测试文件是否存在缺失则提示先写测试呼应 rules/php/testing.md 与tdd-workflow的 RED→GREEN→REFACTOR 循环大文件阻断Write时统计行数超过阈值如 800 行时以 exit code 2 阻断引导拆分为更聚焦的模块。如需完整了解本仓库的 Hook 架构、安装方式bash ./install.sh --target claude --modules hooks-runtime --enable-hooks与全部内置钩子清单可继续阅读 hooks/README.md并对照 hooks/hooks.json 与 rules/common/hooks.md。PHP 相关的兄弟规则编码风格 rules/php/coding-style.md、安全 rules/php/security.md、测试 rules/php/testing.md以及评审 Agent agents/php-reviewer.md 与本规则共同构成了完整的 PHP 工程质量闭环。【免费下载链接】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),仅供参考

相关新闻

C++ OpenCV二维码识别实战:高鲁棒性工业级部署方案

C++ OpenCV二维码识别实战:高鲁棒性工业级部署方案

简介:本资源是一套基于C与OpenCV实现的二维码识别算法实战项目,面向具备基础C编程能力和图像处理认知的中级开发者,解决实际场景中二维码鲁棒识别、快速解码与工程化部署等核心问题。压缩包共10个文件,含2个核心CPP源码&#xff0…

2026/9/10 5:47:24 阅读更多 →
企业AI智能体落地全指南:从知识库到权限评测避开五大坑

企业AI智能体落地全指南:从知识库到权限评测避开五大坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/10 5:46:24 阅读更多 →
xiaozhi-esp32 板卡适配实战:WDMomo ESP32-CGC 开发板的编译配置与硬件引脚解析

xiaozhi-esp32 板卡适配实战:WDMomo ESP32-CGC 开发板的编译配置与硬件引脚解析

xiaozhi-esp32 板卡适配实战:WDMomo ESP32-CGC 开发板的编译配置与硬件引脚解析 【免费下载链接】xiaozhi-esp32 An MCP-based chatbot | 一个基于MCP的聊天机器人 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32 本指南围绕开源仓库 xia…

2026/9/10 5:46:24 阅读更多 →

最新新闻

Anthropic-Cybersecurity-Skills 实战:使用 Ghidra 深入分析 Go 恶意软件——pclntab 解析、函数名恢复与依赖提取

Anthropic-Cybersecurity-Skills 实战:使用 Ghidra 深入分析 Go 恶意软件——pclntab 解析、函数名恢复与依赖提取

Anthropic-Cybersecurity-Skills 实战:使用 Ghidra 深入分析 Go 恶意软件——pclntab 解析、函数名恢复与依赖提取 【免费下载链接】Anthropic-Cybersecurity-Skills 817 structured cybersecurity skills for AI agents Mapped to 6 frameworks: MITRE ATT&CK…

2026/9/10 6:33:45 阅读更多 →
Apache Airflow 日志配置:使用 `namespace_levels` 按 Logger 精准设置日志级别

Apache Airflow 日志配置:使用 `namespace_levels` 按 Logger 精准设置日志级别

Apache Airflow 日志配置:使用 namespace_levels 按 Logger 精准设置日志级别 【免费下载链接】airflow Apache Airflow - A platform to programmatically author, schedule, and monitor workflows 项目地址: https://gitcode.com/GitHub_Trending/ai/airflow …

2026/9/10 6:33:45 阅读更多 →
FastGPT 流恢复场景下「表单输入」节点已提交文件列表丢失问题的组合修复方案

FastGPT 流恢复场景下「表单输入」节点已提交文件列表丢失问题的组合修复方案

FastGPT 流恢复场景下「表单输入」节点已提交文件列表丢失问题的组合修复方案 【免费下载链接】FastGPT FastGPT is a knowledge-based platform built on the LLMs, offers a comprehensive suite of out-of-the-box capabilities such as data processing, RAG retrieval, an…

2026/9/10 6:33:45 阅读更多 →
OmX v0.4.2 发布质量门禁实战:main/dev 对齐验证、notify 通知与 tmux 团队回归的完整 QA 流程

OmX v0.4.2 发布质量门禁实战:main/dev 对齐验证、notify 通知与 tmux 团队回归的完整 QA 流程

OmX v0.4.2 发布质量门禁实战:main/dev 对齐验证、notify 通知与 tmux 团队回归的完整 QA 流程 【免费下载链接】oh-my-codex OmX - Oh My codeX: Your codex is not alone. Add hooks, agent teams, HUDs, and so much more. 项目地址: https://gitcode.com/GitH…

2026/9/10 6:33:45 阅读更多 →
PyTorch LocalTensor 实战教程:单进程 SPMD 分布式调试

PyTorch LocalTensor 实战教程:单进程 SPMD 分布式调试

PyTorch LocalTensor 实战教程:单进程 SPMD 分布式调试 【免费下载链接】pytorch Tensors and Dynamic neural networks in Python with strong GPU acceleration 项目地址: https://gitcode.com/GitHub_Trending/py/pytorch 本教程围绕 PyTorch 分布式调试工…

2026/9/10 6:33:45 阅读更多 →
Nx nx import 实战指南:将外部仓库与 Git 历史完整迁入 Monorepo

Nx nx import 实战指南:将外部仓库与 Git 历史完整迁入 Monorepo

Nx nx import 实战指南:将外部仓库与 Git 历史完整迁入 Monorepo 【免费下载链接】nx The Monorepo Platform that amplifies both developers and AI agents. Nx optimizes your builds, scales your CI, and fixes failed PRs automatically. Ship in half the ti…

2026/9/10 6:32:44 阅读更多 →

日新闻

Leaflet离线地图完整Demo合集:内网部署与坐标纠偏实战

Leaflet离线地图完整Demo合集:内网部署与坐标纠偏实战

简介:这是一份面向Web GIS开发者的LeafLet离线地图示例合集,帮助开发者快速掌握离线地图从搭建到交互的完整流程。压缩包共723个文件,大小14.06MB,以319个js脚本、175个html页面和29个css样式文件为主体,配合png/svg图…

2026/9/10 0:00:35 阅读更多 →
MATLAB读取Rinex 3.02观测文件:多系统GNSS数据解析实战

MATLAB读取Rinex 3.02观测文件:多系统GNSS数据解析实战

简介:基于MATLAB开发的Rinex3.02版观测文件(o文件)读取代码包,面向卫星定位导航方向的学习者与研究人员,用于解决新版观测文件的数据解析、历元提取与时间转换问题。压缩包共4个文件,包含两个m脚本、一个19…

2026/9/10 0:00:35 阅读更多 →
后台管理系统设置页面开发实战:权限模型与动态路由设计

后台管理系统设置页面开发实战:权限模型与动态路由设计

1. 系统设置页面的整体设计与思路拆解 1.1 为什么系统设置页面是后台管理系统的“地基” 很多前端新人最开始接触后台管理项目时,往往会把精力放在“看起来炫酷”的业务页面上,比如数据大屏、复杂表单、图表联动。但真正经历过几个完整项目之后&#xf…

2026/9/10 0:00:35 阅读更多 →

周新闻

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/9 10:51:30 阅读更多 →
超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/10 4:47:11 阅读更多 →
基于CNN的调制信号识别:MATLAB实现时频图分类实战

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/9 7:35:54 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/9 7:36:02 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/9 7:36:09 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/9 7:36:01 阅读更多 →