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

Claude Code 2.1.15 新增钩子拦截功能:可阻止工具调用

来源标题:Show HN: CodeHub – Turning release notes into pictures so that it is fun to read

Claude Code 2.1.15 的钩子现在能阻止工具调用,而不只是观察。当钩子以退出码 2 退出时,它会在命令执行前将其拦截,并把打印内容作为理由反馈给 Claude。Claude 会读取该理由,然后尝试其他方式。

Hacker News 最新forza20262026/11/9 · 今天19 分钟阅读

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

Bookmarkscardslist ◐ hook 现在可以对工具调用说不,并说明原因 claude-code·新功能于 2.1.15★ 41k 之前 ┌────────┐ 想要运行 ┌───────────┐ ┌──────┐ │ Claude │ ─────────────▶ │ 你的 hook │ ─────────▶ │ bash │ └────────┘ │ (旁观) │ 总是放行 └──────┘ └───────────┘ 之后 ┌────────┐ 想要运行 ┌───────────┐ 允许吗? ┌──────┐ │ Claude │ ─────────────▶ │ 你的 hook │ ─────────▶ │ bash │ └────────┘ │ (决定) │ └──────┘ ▲ └─────┬─────┘ │ “不行,原因如下” │ exit 2 └──────────────────────────┘绿色是新增的箭头。循环的其余部分本来就有。 在此之前,hook 只能旁观 Claude 工作:它能看到每条命令并记录下来,但无法阻止。现在,以退出码 2 退出的 hook 会在命令运行前将其拦截,而 hook 打印的内容会作为消息回传给 Claude。Claude 会像读你说的任何话一样读这条理由,然后换一种方式尝试。 1分享 收藏来源1 天前 +3 更多于 2.1.15Ollama 如何不再在长回答时卡住 ollama·已修复已合并,尚未发布★ 98k 之前 模型 ──▶ ┌────────────────┐ ──▶ http ──▶ 你 │ 缓冲区:等待 │ 等 4 秒,然后 │ 完整回答 │ 一次性全部发出 └────────────────┘ 之后 模型 ──▶ http ──▶ 你 每个 token 一产生就发出 第一个词在 80ms 内出现 用户反馈说长回答时聊天界面看起来卡住了。其实并没有卡住。某个组件一直攥着整个回复,等模型生成完毕才一次性全部发出。修复方案移除了那个组件,于是每个词一产生就发出。速度并没有变快,只是不再等待了。 0分享 收藏来源1 天前 Node 可以用 require() 加载 ES 模块了 node·新功能于 22.12★ 110k 之前 app.cjs ── require('./lib.mjs') ──▶ ERR_REQUIRE_ESM 把 app.cjs 改写成 ESM,或者到处用 await import() 之后 app.cjs ── require('./lib.mjs') ──▶ 该模块,同步加载 同样的调用,同样的形态,和 CommonJS 一贯的用法一样唯一规则:该 ES 模块不能使用顶层 await。 多年来,CommonJS 文件要引入 ES 模块,要么改写自己,要么到处撒 async import。Node 现在允许 require() 直接加载 ES 模块,前提是该模块在顶层不等待任何东西。大多数库都不等待,所以这堵老墙基本消失了。 0分享 收藏来源1 天前 +2 更多于 22.12Svelte 5 把响应式明说出来 svelte·变更于 5.0★ 82k 之前 let count = 0 编译器猜测这是状态 $: double = count * 2 而这是派生值,从 $ 标签推断 之后 let count = $state(0) let double = $derived(count * 2) 你说了算。编译器不再猜测。规则不再是只在 .svelte 文件里生效的魔法;现在它们在任何 .js 文件里也能用。 Svelte 过去通过看你如何写赋值来判断什么是响应式的,这一直管用,直到它不管用了。第 5 版给了你几个词,称为 runes,让你自己标记状态和派生值。魔法更少,而且同样的词在组件外也能用,所以 store 就只是一个函数。 0分享 收藏来源2 天前 +1 更多于 5.0Next.js 构建默认快五倍 next.js·更快于 16.3★ 128k 之前 src ──▶ ┌───────────┐ ──▶ 打包 48s │ webpack │ └───────────┘ 现在 src ──▶ ┌───────────┐ ──▶ 打包 9s │ turbopack │ └───────────┘同样的代码输入,同样的打包输出。只有中间那个盒子换了。 把源文件打包成一个供浏览器使用的 bundle 的工具被替换了。新工具已经作为可选项存在了一年,期间逐步补齐了旧工具处理的每个边界情况。上周它通过了完整的测试套件,于是成为默认选项。你什么都不用改,构建就是变短了。 0分享 收藏来源2 天前 Python 可以同时运行线程了,不再受 GIL 限制 cpython·新功能于 3.13★ 65k 之前 线程 1 ──▶ [ GIL ] ──▶ 运行 线程 2 等待 线程 3 等待 一次一个,不管你拥有多少核心 之后(free-threaded 构建,python3.13t) 线程 1 ──▶ 运行 线程 2 ──▶ 运行 线程 3 ──▶ 运行 各自在自己的核心上目前是单独的构建。默认构建仍然带锁。 三十年来,一把锁让同一时间只能有一个线程运行 Python 代码,所以线程对等待有帮助,对计算从来没有。3.13 提供了一个不带那把锁的构建。纯 Python 工作可以分散到多个核心上。它被标记为实验性,默认构建保留锁,而且一些 C 扩展需要先更新。 1分享 收藏来源2 天前 +1 更多于 3.13Bun 在见过某个包之后无需网络即可安装 bun·新功能于 1.3★ 76k 之前 ┌──────────┐ ┌──────────────┐ ┌──────────────┐ │ lockfile │ ───────────▶ │ 注册表 │ ─────▶ │ node_modules │ └──────────┘ 每个包, └──────────────┘ └──────────────┘ 每次都问 (网络) 之后 ┌──────────┐ 见过吗? ┌──────────────┐ 是 ┌──────────────┐ │ lockfile │ ───────────▶ │ 全局缓存 │ ─────▶ │ node_modules │ └──────────┘ └──────┬───────┘ └──────────────┘ │ 否,去拉取 ▼ 注册表缓存是新的盒子。它之后的每个箭头本来就有。 以前每次安装都会向包注册表询问每个包,即使是上周就已经在你磁盘上的那个。现在,项目需要的包清单会先与本机缓存比对。只有它从未见过的包才会走网络。在飞机上,用一个你以前构建过的项目,安装直接就能用。 0分享 收藏来源2 天前 +2 更多于 1.3TypeScript 的编译器正在迁移到 Go,速度快了十倍 typescript-go·更快预览版,尚未发布★ 20k 之前 tsc,用 TypeScript 编写,运行在 Node 上 VS Code 的代码库:类型检查耗时 77.8 秒 之后 tsgo,同一个编译器,逐行对应,用 Go 编写 VS Code 的代码库:类型检查耗时 7.5 秒这是一次移植,不是重写:同一个检查器,同样的错误,同样的行为。

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

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

打开原文
去社区讨论 →