跳到正文
claudemods

Next Steps:每轮结束后的 Claude Code 提示词建议

每轮结束后,在 Claude Code 输入框上方显示 2 到 3 条可能的下一条提示词,按 1、2 或 3 即可填入草稿。

权限

  • 调用模型(消耗你的额度)可以自行向 Claude 发送请求,这些请求计入你套餐的用量($.model.* / $.agent.spawn)。
  • 读取你的提示词可以看到你输入的内容和对话记录(prompt.* / session.append / session.messages)。
  • 修改界面在 Claude Code 界面中绘制内容:横条、面板、状态文字、弹出通知(ui.render / $.ui.*)。
实测版本
v2.1.291
最近实测
需要
Claude Code ≥ 2.1.287
显示位置
输入框上方

在 Claude Code 中安装:

/plugin install next-steps --marketplace hamzafer/claude-code-mods
全部安装方式 ↓

这个插件能做什么?

Next Steps 是一款社区插件,作者是 Hamza Zafar(hamzafer),属于他的 claude-code-mods 合集。它为 Claude Code 提供提示词建议:一轮结束后,在输入框上方的横条里显示两三条你接下来可能输入的简短提示词。例如,Claude 解释完一个文件后,它可能给出 Write a test for the login function。

输入框为空时,按 1、2 或 3 会把对应的建议作为草稿放进输入框,按 0 则关闭列表。它不会自行发送任何内容:你可以编辑草稿,或按 Enter。终端足够宽时,所有建议排在一行(next: 1 ... · 2 ... · 0 dismiss)。放不下一行时,每条建议占一行;如果横条可用的行数不够,则只用一行,并在行尾截断。

建议来自一轮结束后对 haiku 模型的一次调用。在 Claude 工作时、问卷打开时、回复短于 20 个字符时,以及后台代理仍在运行时,横条保持隐藏。子代理的轮次会被忽略。作者的 where-am-i 插件会读取一个共享标记,以便在这个列表显示期间去掉它自己的 "next" 部分。

演示

录屏中,我们在小型演示项目里启动加载了该插件的 Claude Code,并让 Claude 读取 src/login.js,用两句话解释它。这一轮结束后,输入框上方出现一个 next: 横条,带有三条编号的建议,例如 Add error handling for empty strings 和 Write a test for the login function,以及 0 dismiss 提示。视频先停在这个画面,然后在空输入框中按下 1,第一条建议作为未发送的草稿出现在输入框里。视频经过加速,所以实际停顿比看起来短。

安装

使用安装区块中的任意一种方式;它们都直接从作者自己的插件市场安装。横条会在下一轮完成后出现。

$ install next-steps

需要 Claude Code ≥ 2.1.287

从作者自己的 marketplace 安装: hamzafer/claude-code-mods

  1. 1.在 Claude Code 中一行安装

    /plugin install next-steps --marketplace hamzafer/claude-code-mods

    粘贴到正在运行的会话中(v2.1.275+)。Claude Code 会先询问是否添加该插件市场。

  2. 2.从终端安装

    claude plugin marketplace add hamzafer/claude-code-mods
    claude plugin install next-steps@claude-code-mods

    然后在所有已打开的会话中运行 /reload-plugins。

  3. 3.免安装试用

    git clone https://github.com/hamzafer/claude-code-mods
    claude --plugin-dir ./claude-code-mods/mods/next-steps

    仅在当前会话中加载该插件,不会写入你的设置。

工作原理

插件把当前列表保存在由宿主持有的 $.state 原子中,并在 AbovePrompt 渲染位置上绘制,位于其他插件的横条下方。按键处理的代码来自 hooks/register.tsx:

on('prompt.edit', async ($, e, next) => {
  if (hasSurvey || !e.key || e.key.ctrl || e.key.meta || e.text !== '' || e.start !== 0 || e.end !== 0 || !/^[0-9]$/.test(e.inputText)) return next(e)
  const s = await read($, steps)
  if (!s) return next(e)
  if (e.inputText === '0') {
    await setSteps($, () => null)
    return { text: '', cursor: 0 } // consumed: the box stays empty
  }
  const pick = s.items[Number(e.inputText) - 1]
  if (!pick) return next(e)
  return next({ ...e, inputText: pick }) // a draft: the person edits it or presses Enter
})

在 turn.complete(仅主代理)时,suggest 会以 maxTokens: 200 和 20 秒超时调用 $.model.complete。它要求模型给出 2 到 3 条祈使句式、少于 60 个字符的提示词,每行一条,或者回复 NONE。随后 parseSteps 会去掉代码围栏、项目符号、编号、引号和破折号,丢弃开场白和超过 120 个字符的行(直接丢弃,从不截断),去除重复项,最多保留三条。只有在此期间没有新的提示词或新一轮开始时才会写入结果,因此迟到的回答不会覆盖更新的状态。prompt.submit 和 turn.start 会清空列表。

自定义

/config 中没有任何选项。若要改变行为,请编辑 register.tsx 顶部的常量:MODEL(默认 haiku)、MAX_ITEMS(3)、MAX_CHARS(60,即向模型要求的长度)、MAX_KEPT(120,保留的最长行)和 MIN_ANSWER(20,触发调用所需的最短回复)。发给模型的请求措辞在 suggest 的 system 和 prompt 字符串中。

权限与安全

在运行任何东西之前,我们读过了插件可以执行的每一个文件:.claude-plugin/plugin.json、hooks/hooks.json、hooks/register.tsx(唯一的模块)、类型声明以及测试。没有 package.json、安装脚本、二进制文件或打包、压缩后的代码,也没有从插件文件夹之外加载任何内容。

  • 模型调用。 每次主代理的一轮完成后,suggest 会通过 $.model.complete 把最近最多 6 条会话消息(每条截取 800 个字符)和最新回复(截取 2,000 个字符)发送给 haiku 模型。这和其他模型调用一样使用你的 Claude Code 账户,插件不会打开任何其他网络连接。这些文本是会话内容,所以可能包含你和 Claude 讨论过的一切。
  • 提示词文本。 插件发给模型的指令是清晰可读的普通字符串。它不会向你的提示词或 Claude 的上下文注入任何内容:模型的输出只会作为草稿出现在输入框里,必须由你自己发送。由于建议是根据对话记录生成的,Claude 读过的文件中的文字仍可能影响建议的内容,不过你会在发送之前看到它。
  • 按键和提示词钩子。 prompt.edit 会把输入到空输入框中的数字替换为建议文本,或者吞掉 0。prompt.submit 只是清空列表并原样传递提示词。claude plugin validate 提示 prompt.submit 是没有 .catch 的拦截型钩子,但它从不阻止或改写提示词。
  • 没有其他行为。 它不运行命令、不读写文件、不修改设置、shell 文件或守护进程、不读取环境变量,也没有遥测。状态由宿主保存在内存中。许可证为 MIT,仓库中有 LICENSE 文件。

claude plugin validate 没有报告任何错误或警告,作者的 16 个测试在 Claude Code 2.1.291 上全部通过。

调用模型(消耗你的额度)
可以自行向 Claude 发送请求,这些请求计入你套餐的用量($.model.* / $.agent.spawn)。
读取你的提示词
可以看到你输入的内容和对话记录(prompt.* / session.append / session.messages)。
修改界面
在 Claude Code 界面中绘制内容:横条、面板、状态文字、弹出通知(ui.render / $.ui.*)。

兼容性与故障排除

已在 macOS 上使用 Claude Code 2.1.291 检查(validate、测试和演示录屏)。如果没有出现建议:

  • 上一条回复很短(少于 20 个字符),或者模型没有合适的内容可以补充。
  • 后台代理仍在运行;调用会等到主代理继续工作后再进行。
  • Claude 仍在工作,或输入框上方打开着问卷。横条会在这一轮结束后显示。
  • 你在输入框已有文本时按了数字,或是粘贴了数字。数字只在输入框为空时起作用。
  • 你发送了提示词或开始了新的一轮,这会清空列表,直到这一轮结束。

常见问题

Next Steps 会替我发送提示词吗?
不会。按下数字键只是把建议作为草稿放进输入框,你可以编辑,也可以按 Enter。在你操作之前不会发送任何内容。
它会消耗 token 吗?
会,但很少。每一轮结束后,它通过 Claude Code 自己的模型接口调用一次 haiku 模型,输入是最近最多 6 条消息和最新一条回复。回复短于 20 个字符时,以及后台代理仍在运行时,它会跳过这次调用。
列表显示时,我怎样输入以数字开头的提示词?
先按 0。它会关闭列表并保持输入框为空,之后输入的数字就会作为文本输入。在其他文本之后输入的数字,以及粘贴进来的数字,始终作为文本输入。
列表什么时候消失?
当你发送提示词(包括斜杠命令)时、新一轮开始时、按下 0 时,以及 Claude 正在工作或输入框上方打开着问卷时。
我可以更改模型或建议的数量吗?
没有设置项,但 hooks/register.tsx 顶部的常量可以控制:MODEL、MAX_ITEMS、MAX_CHARS、MAX_KEPT 和 MIN_ANSWER。发给模型的提示词在同一文件的 suggest 函数中。
Context Bar 在 Claude Code 中运行精选

Context Bar

在 Claude Code 输入框上方用一条堆叠横条显示上下文窗口,每个类别一种颜色,并附带 token 数。

  • 输入框上方
  • 修改界面
  • 添加命令/工具
  • 存储数据

已在 v2.1.291 实测

md-preview 在 Claude Code 中运行精选

md-preview

Claude 编辑的 Markdown 文件,以 GitHub 的样式渲染在对话旁的窗格中,并可查看修改前后的对比。

  • 面板
  • 弹出通知
  • 读取文件
  • 写入文件
  • 执行命令
  • 拦截工具调用
  • 修改界面
  • 添加命令/工具

已在 v2.1.291 实测

更多 计时、待办与站会。