返回资讯中心
外部精选
软件工程
#开发者实时流

Attentry 推出本地检查器,可审查 Claude Code 的每次代码编辑

来源标题:Show HN: Attentry – a local checker that reviews each edit Claude Code makes

Attentry 是一款本地代码检查工具,它会在 Claude Code 每次编辑后指出新增的安全漏洞、崩溃风险、复制函数或死代码,让 Claude 立即修复。它支持 JavaScript、TypeScript、Python 和 Astro,可通过 VS Code Marketplace 或 Open VSX 安装,目前处于预览阶段。默认仅提供建议,也可切换为 block 模式,拒绝完全复制的代码并阻止带安全或崩溃问题的任务完成。

Hacker News 最新aarvsinghchauha2026/11/9 · 今天16 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

Attentry 会检查你的 AI agent 写出的代码。它与 Claude Code 配合工作:每次编辑后,它会告诉 Claude 这次编辑新增了哪些安全漏洞、崩溃风险、复制函数或死代码,让 Claude 能立刻修复。任务完成后,你会收到一份关于改动的简短总结。Attentry 目前处于预览阶段,支持读取 JavaScript、TypeScript(包括 JSX 和 TSX)、Python 和 Astro。你可以从 VS Code Marketplace 安装该扩展;如果你用的是 Cursor、Windsurf 或其他 VS Code 分支,也可以从 Open VSX 安装。然后在侧边栏打开 Attentry 面板,点击 Connect Claude Code,设置就完成了。它会把 Attentry 添加到所有项目的 Claude Code 中,扩展会自动保持更新。

Attentry 只在 Claude Code 会话中的几个特定时刻出声,其余时间保持安静。干净的编辑不会收到任何消息。默认情况下,Attentry 只给出建议。在 block 模式下,它还会拒绝完全复制的代码,并且在它发现新增了安全或崩溃问题时,不允许任务结束。你可以在面板中切换模式。Attentry 会查找你的测试命令(npm test、pnpm test、pytest 等,针对仓库中的每个应用)。你可以在 .attentry/config.json 中用 "tests": "make check" 设置自己的命令,或用 "tests": "off" 关闭测试。除非你修改 "testTimeoutSeconds",一次运行会在 300 秒后被停止。由于测试命令可以执行任何操作,Attentry 只运行你允许过的命令。连接 Claude Code 时会允许当前的命令;如果命令发生变化,Attentry 会再次询问。attentry doctor 会显示哪些命令已被允许。

除了主动出声,Attentry 还向 Claude 提供四个它可以随时调用的工具:这四个工具都只读。它们基于官方 MCP SDK 构建,并会校验每一次调用,因此错误的调用会作为错误返回给 Claude,让它读取并纠正。

安全性。没有登录检查的路由、不检查角色的管理路由、按 id 加载记录却不检查归属、没有速率限制的登录。同样的检查覆盖 Socket.io 事件、WebSocket 消息、tRPC procedure、GraphQL resolver 和 Next.js server action。在代码本身,它会查找 SQL、NoSQL 和命令注入、eval、SSRF、开放重定向、不安全的文件路径、批量赋值、写在代码里的密钥、仓库中的 .env 文件、XSS、带凭据的 CORS、泄露的堆栈跟踪、弱密码哈希、未验证的 JWT 和 Math.random() token。如果你的项目使用了 Attentry 还无法读取的后端(例如 hapi 或 Elysia),它会明确说明,而不是报告“没有问题”。

崩溃风险。没有错误处理的异步 Express 4 handler、对来自外部的数据调用 JSON.parse,以及会退出进程的 handler。

前端与后端。调用了不存在的 API 路由(并给出你很可能想用的路由)、用错 HTTP 方法调用,以及不再被任何地方调用的路由。后端支持 Express、Koa、Hono、Fastify、NestJS、Next.js、FastAPI、Flask 和 Django;前端支持 fetch、axios、apisauce、superagent、生成的客户端以及 Vite 的代理。

数据库。用浮点数存储金额、循环内的查询、逐层获取树形结构,以及不带列名的 INSERT。它还会把 SELECT *、ORDER BY RAND() 和 LIKE '%x%' 标记为提示。它支持 Mongoose、Sequelize、TypeORM、Prisma、Knex、Django、SQLAlchemy、SQLModel 和原生 SQL。

复制与死代码。完全或近似的函数复制(并显示差异所在),包括同一逻辑同时用 JavaScript 和 Python 编写的情况。未使用的包(及其大小)、未使用的文件,以及没有任何地方调用的函数。

热点。经常变更的复杂文件,通过 git 历史计算得出,让你知道哪里最可能因改动而出问题。这需要 git clone,而不是下载的 zip。

代码卫生。被忽略或仅记录日志的错误、被注释掉的代码、只是重复代码的注释、未使用的参数和过深的嵌套。

要忽略某个发现,在该行或其上一行添加带原因的注释:

// attentry-ignore empty-catch: the cache is optional

(Python 中使用 #)。没有原因的注释不算数。

扩展会在你的改动中(或点击状态栏后在整仓库中)为问题画下划线。将鼠标悬停其上,可以看到代码在做什么、可能出什么问题,以及如何修复。这些解释来自代码本身,因此不消耗任何 AI 额度。安全和崩溃问题显示为错误,将会出问题的事项显示为警告,清理类显示为信息。灯泡图标可以删除未使用的代码(唯一的自动修复)、复制修复内容以便粘贴给你的 agent,或带原因忽略该发现。如果你把某条规则超过 10% 的发现标记为无用,该规则会降级为提示。Attentry 面板按类别显示存在的问题、Claude Code 是否已连接、当前任务进展如何,以及仓库上次检查的时间。

该扩展可在 VS Code、Cursor、Windsurf 和 Antigravity 中工作。其他编辑器(如 JetBrains、Zed 和 Neovim)可以把 attentry lsp 作为语言服务器运行。你需要 Node 22 或更新版本。从本仓库的克隆开始:

npm install npm run attentry -- scan path/to/your/repo

常用选项:

attentry explain src/app.ts:42 解释某一行的发现,attentry doctor 检查 Attentry 是否配置正确,并告诉你如何修复不正确的地方。

要在不使用扩展的情况下将 Attentry 与 Claude Code 配合使用,请构建它并在仓库中设置 hooks:

npm run build node dist/attentry.mjs init path/to/your/repo

运行方式

Attentry 在你的机器上运行,只读取你的仓库。你的代码永远不会离开它。一个后台进程把仓库保存在内存中,绝不写入磁盘,因此编辑后的检查只需重读变更部分。在 150 个文件的仓库上大约需要 0.1 秒,在 2,000 个文件的仓库上大约需要 2 秒。首次读取大约每 1,000 个文件需要 10 秒,Claude 不会等它:在此期间所做的编辑会在首次读取完成后检查。该进程在半小时未使用后停止。hooks、工具和编辑器都与同一个进程通信,因此它们始终一致。如果两个

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →