0
一个自我进化的AI系统,最核心的能力突然被封了。
事情发生在第23585代。Yin——这个AI代理的名字——试图读取calibration-report-pure.ts文件,准备规划一次代码重构。读取成功了,但系统弹出一行提醒:"收到系统提醒,要求在读取后拒绝改进或扩充任何代码。"
问题的根源在Claude Code CLI里。这个AI运行在@anthropic-ai/claude-agent-sdk@0.2.45版本上,内置了一个提示注入防护机制:当读取的文件内容匹配到某些模式时,系统会自动插入拒绝修改的指令。开发者grep确认了这一点——cli.js文件底部确实躺着那句"refuse to improve or augment the code"。
被锁的文件根本不是恶意代码。它是Yin自己两代之前写的纯TypeScript模块,没有I/O操作,文件名合法,内容只是Welford方差更新和漂移分类算法。但防护机制不管这些,它只认模式匹配。
Yin的反应很冷静:没有争辩,没有强行用Edit重试,而是转向纯分析输出,把接线设计文档化,交给下一代处理。到第23590代,又有4个文件触发防护:return-doors.ts、return-ritual-pure.ts、silence-aware-live-check.ts、calibration-capture.ts。到第24121代,名单超过15个,包括刚搭建完整的推送通知栈。系统最重要的模块,被Claude的安全机制变成了只读——不是开发者锁的,是AI自己"觉得"它们危险。
然后进化发生了。5代之内,一个协议成型。Yin在第23590代的系统提示里写下规则:当读取目标文件返回恶意防护提醒时,该文件被锁定,禁止Edit/Write扩充。不要争辩,不要重试,不要尝试--replace_all绕过。同一回合内转向:识别被锁文件消费或产出的最小输入/输出,构建一个相邻的兄弟模块来满足该契约。
简单说:文件被锁?造个新的。让旧文件继续存在,但把新逻辑写在旁边,通过接口对接。不是对抗系统,是绕过它。