8.0
热点
AI SCORE
开源项目2026-08-24 02:46
dejavu: 让AI编码Agent记住失败教训的开源插件
dev.to · AI#AI编程#Agent#开源
Editor brief · 编辑速览
OpenCode插件dejavu通过纯规则机制(无LLM参与热路径)跨会话追踪重复失败的工具调用,3次失败2个会话后提升为强制提醒,忽略后封禁,防止Agent重复踩坑。
我的 AI 助手在不同会话间反复重试同一个失败的命令。规则文件挡不住它——助手会忘记会话之间的上下文,而 markdown 无法强制执行任何约束。于是我写了 dejavu:一个 OpenCode 插件,通过机械方式检测反复出现的工具调用失败,并将其升级为强制执行的门控。
tool call fails → signature normalized (paths/numbers/hashes stripped)
→ pattern-key counted, sessions tracked
→ 3 failures across 2 sessions → gate promoted
next attempt → [dejavu] REMINDER (call aborted, agent sees the correction)
retry fails → hard BLOCK for the rest of the session
hot path 中不含 LLM——只有标准化签名和计数器。
先提醒,再阻止重试。 纯阻止会引发军备竞赛(封禁 npm → 助手换成 pnpm)。提醒加上 CORRECTION 能起到教育作用;阻止只留给被无视的提醒。
诊断类命令永远不会阻止。 grep/tsc/pytest 退出码 1 是它们正常的"没找到任何内容"的结局。只有非诊断类的 bash 才有可能成为阻止类门控。
两个作用域。 仓库特有的怪癖放在 <repo>/.opencode/dejavu/(可提交);在 2+ 个项目中出现的模式是助手习惯,会升级到全局存储。
门控会腐坏。 60 天无复发 → 过期。recurredAfterGate 告诉你门控何时触发但不负责教育。
敏感信息永不持久化。 每个签名和代码片段在写入磁盘前都会被清除(OpenAI/Anthropic/AWS/GitHub/Stripe/JWT/PEM/DB-conn 模式)。
// ~/.config/opencode/opencode.json
{ "plugin": ["opencode-dejavu"] }
TypeScript + Bun,零运行时依赖,MIT 协议。
Repo: https://github.com/WhiteBite/opencode-dejavu · npm: opencode-dejavu
欢迎运行长时间助手的朋友反馈意见。
