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

开源工具 intent-lens 让 Claude Code 在执行工具调用前先用一句话说明意图

来源标题:Show HN: Intent-lens – see what Claude Code is about to do, before it does it

intent-lens 是一个 Claude Code 插件,在工具调用尚未执行时,于输入提示上方用一行人类可读的句子说明 Claude 打算做什么。它可读取工具自身参数即时生成描述,或让 Claude 用少量 token 改写表述,避免 auto 模式下复杂的 shell 命令难以快速理解。用户可通过 claude-mods 插件市场安装。

Hacker News 最新dhananjay-jsr2026/11/2 · 昨天17 分钟阅读

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

看清 Claude 即将做什么——在它动手之前。 加载了 intent-lens 的真实 Claude Code 会话。 一个 Claude Mod,在调用仍处于 pending 状态时,在提示符上方用一行文字显示工具调用的意图。 Claude Code 要等到 Claude 已经决定动手之后,才会给你显示一行工具记录。intent-lens 则先把这次调用翻译成一句人话,放在你视线本来就停留的位置。它要么直接读取工具自身的参数(免费、即时),要么请 Claude 来措辞(消耗少量 token)。 在 auto 模式下,Claude Code 跑得比你读得还快,而它写出的命令是给 shell 看的,不是给你看的。一条 find | xargs | awk 管道,一眼看过去几乎什么都说明不了,而且一旦执行完,这次调用就折叠成一句类似「运行了 2 条 shell 命令」的摘要。 intent-lens 把含义放到你视线本来就在的位置,就在提示符上方,而且是在调用还在进行的时候: 从市场安装 先注册一次目录,然后安装这个 mod: /plugin marketplace add Dhananjay-JSR/claude-mods /plugin install intent-lens@claude-mods 从你的 shell 安装: claude plugin marketplace add Dhananjay-JSR/claude-mods claude plugin install intent-lens@claude-mods 安装结果有缓存。之后想用更新的版本: claude plugin update intent-lens 只在一个会话里加载 claude --plugin-dir /path/to/claude-mods/plugins/intent-lens 不想每次敲这个参数,就在 shell 里给它起个别名: alias claude-lens='claude --plugin-dir /path/to/claude-mods/plugins/intent-lens' 要在每个会话里都加载,就把该目录加入 CLAUDE_CODE_PLUGIN_DIRS(以 : 分隔)。 用 /plugin(按 Tab 切到 Installed)检查是否已加载,或者直接运行 /intent。 标记 引擎 作用 成本 ▸ 青色 local 对工具参数做确定性翻译 无 ✦ 品红 model 由 Claude 根据工具、参数和本地草稿来写这一行 每次调用最多 60 个输出 token,另加提示词 ⚠ 红色 risk 始终本地处理:破坏性的 shell 命令绝不发送给模型 无 auto(默认)会立即画出本地那一行,然后针对读起来最糟的调用——编辑、未知工具和 MCP 工具——用 Claude 升级它。模型思考期间,这条带子永远不会空着。 ▸ Bash 统计你的各个仓库里排名前五的语言 6 步 · 获取 → 提取值 → 排序 → 统计重复 → 按数值排序 → 取前 5 ✦ Edit 给 token 解析器加一个空值防护 ⚠ Bash 递归删除文件 命令本身仍留在 Claude Code 的工具行里。这条带子回答的是它意味着什么。 用 /intent mode local、auto 或 model 切换引擎。 命令 作用 /intent 显示当前状态和用法 /intent on / off / toggle 显示或隐藏带子那一行(持久化)。关闭时警告仍然会触发。 /intent mode local|auto|model 选择引擎(持久化) /intent words plain|terse 普通词汇(默认),或更简短的词汇(持久化) /intent log 最近 20 次调用及其 ✓ / ✗ 结果和所用引擎 /intent clear 清除历史记录 /intent-log 等同于 /intent log 意图是如何得出的 本地引擎是工具名和参数的纯函数——没有 I/O,没有延迟。 Bash 是最有意思的一个:Claude Code 的 Bash 工具本来就要求 Claude 描述每一条命令,所以那个描述就是声明的意图——通常被埋在工具行里。 在管道场景下,第二行暗淡文字会逐阶段解读它:6 步 · 获取 → 提取值 → 排序 → 统计重复 → 按数值排序 → 取前 5。只有三个阶段及以上的管道才会得到这一行,因为两步的链条本身读起来就没问题。映射是字面意义上的——curl → 获取,jq 'select(…)' → 保留匹配的行,uniq -c → 统计重复,head -5 → 取前 5——而且能识别引号,所以 jq 程序内部的 | 不会被当成新阶段。/intent words terse 会切换到更简短的词汇(pick fields、rank)。它解释的是机制;完整命令仍留在 Claude Code 的工具行里。 模型引擎会把工具名、一段有界的参数视图(900 个字符)以及本地草稿发送给 haiku。它要求最多 12 个词,把答案硬性限制在 110 个字符以内,并且最多等待 1.5 秒。当一条 shell 命令到达时没有附带描述,auto 也会转而求助模型,因为此时本地那一行只能退回显示原始命令。失败、拒绝或回复缓慢时,会静默保留本地那一行:意图绝不能打断一次调用。 Shell 命令会与一些可能毁掉工作成果或触及项目之外的模式进行匹配:递归 rm、git reset --hard、git clean -fd、强制推送、DROP/TRUNCATE、mkfs/dd、fork 炸弹、curl … | sh、sudo、chmod -R 777、包发布。 一旦匹配,标记会变红并弹出一条提示。它在本地计算并始终显示——在 model 模式下如此,甚至在这条带子被隐藏时也是如此。它是提醒,不是沙箱:它匹配的是命令的文本。 local 模式不向任何地方发送任何内容,也不消耗 token。 auto 模式只在编辑、未知工具、MCP 工具,以及 Claude 未描述过的 shell 命令时才调用模型——每次编辑几百个 token。 model 模式对每一次工具调用都调用模型,累计下来每次调用会增加 1.5 秒延迟。 模型调用使用你自己的 Claude Code 凭据,并通过 $.model.complete 发出,和这个会话发出的任何其他请求完全一样。 无头运行(claude -p、Agent SDK)永远不会触发 ui.render,而这个 mod 只在该事件触发之后才调用模型,所以这类运行不产生任何花费。 目录结构 plugins/intent-lens/ ├── .claude-plugin/plugin.json 清单文件 ├── hooks/hooks.json {"modules": ["./register.js"]} —— 使它成为一个 mod ├── hooks/register.js hooks、两个引擎、风险规则 ├── tests/intent.test.mjs 针对打桩 API 运行的 hooks ├── assets/logo.svg 标志 ├── assets/demo.svg 带子示意图(包含全部三种标记) └── assets/screenshot-*.png 一个真实会话 测试

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

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

打开原文
去社区讨论 →