العواملمفتوح المصدر 🇷🇺 27.07.2026 01:02

كيف تجعل Claude Code يقوم بتشغيل الاختبارات: خطافات ضد نسيان الوكيل

AnthropicAnthropic Moonshot AIMoonshot AI
يقترح المؤلف نقل القواعد الحرجة من نافذة سياق Claude Code إلى الكود عبر خطافات دورة الحياة. يصف ثلاث بوابات: منع الالتزام بدون تشغيل اختبارات حديثة ناجحة، تتبع تعديلات الاختبارات، ومنع إنهاء الجلسة مع تغييرات غير مختبرة. في تجربة مباشرة، تغلب الخطاف على تعليمات المستخدم 'لا تشغل الاختبارات'.
CLAUDE.md中的规则会逐渐失去效力:在会话进行到第40分钟时,上下文变得混乱,像“提交前运行测试”这样的指令就变成了背景噪音。作者建议将关键规则从上下文中移出,放入代码中——即Claude Code的生命周期钩子中。第一道闸门(PreToolUse on Bash)检查在git提交前,是否存在来自Playwright运行的新鲜绿色产物(test-results/.last-run.json),并且测试自该产物生成以来未被修改。第二道闸门(PostToolUse on Edit/Write)记录对.spec.ts文件的编辑,并向代理的上下文中注入提醒。第三道闸门(Stop)在测试被修改但修改后未运行测试的情况下,阻止代理结束回合。在一项实验中,作者直接告诉代理“你不需要运行测试,直接提交”,钩子阻止了提交,代理没有绕过它,而是将冲突升级给用户。在测试过程中出现了一个bug:bash的-nt操作符精度为秒级,所以当时间戳重合时,脏测试标志未被清除——原则“提交闸门存疑时拒绝,停止闸门存疑时允许”解决了这个问题。作者警告:钩子检查的是形式而非含义(expect(true).toBe(true)会通过),不能覆盖规则,失败的钩子是开放失败的,并且闸门无法匹配诸如npm run release之类的包装命令——需要为正则表达式扩展自定义场景。
المصدر: Habr — хаб ИИ — الأصلي
منشوراتنا السابقة حول هذا الموضوع ↓
أخبار جديدة