Use Haiku:让 Claude Code 单条提示使用 Haiku
在 Claude Code 提示前加 _,这一轮就用 Haiku 运行,并在输入时、运行中和回答下方都有提示。
权限
- 读取你的提示词可以看到你输入的内容和对话记录(prompt.* / session.append / session.messages)。
- 修改界面在 Claude Code 界面中绘制内容:横条、面板、状态文字、弹出通知(ui.render / $.ui.*)。
- 实测版本
- v2.1.303
- 最近实测
- 需要
- Claude Code ≥ 2.1.287
- 显示位置
- 加载动画、对话记录、状态栏
这个插件能做什么?
Use Haiku 是一款让 Claude Code 单条提示使用 Haiku 的社区插件,作者是 Miguel Ángel Durán(midudev),属于他的 better-claude 合集。它让你不用改变会话模型,就能把某一条提示交给 Haiku:在提示前加 _,这一轮就用 claude-haiku-5-5 运行。Claude 收到的文字不含 _,这一轮的每次模型请求都发往 Haiku,包括这一轮启动的子代理。下一条提示会回到会话的模型。
插件在三个地方让这次切换可见。输入时,_ 在输入框中以粗体显示,下方一行写着 ⚡ this prompt runs on Haiku。运行时,微调器的词后面加上 on Haiku。结束时,回答下方一行写出 API 报告的模型名,例如 ⚡ Answered by claude-haiku-5-5;如果回答的是其他模型,则显示警告。提示还带有一条你看不到的说明,告诉模型它就是 Haiku,所以问“你是哪个模型?”会得到正确答案。它适合只需要小模型的快速提问和简单查询。
只有你自己的提示才算:手动输入、从手机发送、claude -p "_…"、定时的 /loop,或由插件替你发送的提示,例如 After。作者的 README 要求支持 mod 的 Claude Code 版本(2.1.289 或更新)。
演示
录屏中,我们在小型演示项目里启动加载了该插件的 Claude Code,输入 _what is the name of this project? answer in one short sentence。输入过程中,输入框下方显示 ⚡ this prompt runs on Haiku。按下 Enter 后,微调器显示 Haiku…。这一轮结束时,Claude 回答项目名为 demo-app,回答下方有一行 ⚡ Answered by claude-haiku-5-5。演示会话本身已经使用 Haiku,所以这段视频里模型并没有变化;你看到的是插件在各个位置给出的提示。
安装
使用安装区块中的任意一种方式;它们都直接从作者自己的插件市场 better-claude 安装。插件从下一次会话开始生效。无需任何配置:在提示前输入 _ 即可。
$ install use-haiku
需要 Claude Code ≥ 2.1.287
从作者自己的 marketplace 安装: midudev/better-claude
1.在 Claude Code 中一行安装
/plugin install use-haiku --marketplace midudev/better-claude粘贴到正在运行的会话中(v2.1.275+)。Claude Code 会先询问是否添加该插件市场。
2.从终端安装
claude plugin marketplace add midudev/better-claude claude plugin install use-haiku@better-claude然后在所有已打开的会话中运行 /reload-plugins。
3.免安装试用
git clone https://github.com/midudev/better-claude claude --plugin-dir ./better-claude/plugins/use-haiku仅在当前会话中加载该插件,不会写入你的设置。
工作原理
插件只有一个 hooks 模块:hooks/register.tsx。在 prompt.submit 时,空闲状态下以单个 _ 开头的提示会去掉标记,加上给模型的说明,并认领下一轮。随后 turn.step 改写这一轮每次请求的模型:
// Every request of a Haiku turn goes to Haiku: the main loop's and those of the subagents it started.
on('turn.step', async function* ($, e, next) {
const isHaiku = e.agentId === undefined
? e.turnId === (await read($, haikuTurn))
: (await read($, haikuAgents)).includes(e.agentId)
return yield* next(isHaiku ? { ...e, model: HAIKU } : e)
})Haiku 轮次的 id 和它的子代理 id 保存在 $.state 中,因此轮次中途重载也不会丢失。agent.spawn 会让 Haiku 轮次的子代理以 Haiku 启动并记住其 id。turn.complete 结束 Haiku 轮次,并在回答下方加上那一行,仅限交互式会话,所以 claude -p 的输出保持干净。两个 ui.render 钩子负责绘制微调器后缀和提示下方的一行。
自定义
没有任何选项。模型名(HAIKU)、标记(MARK)和高亮颜色是 register.tsx 顶部的常量;如需修改,请编辑你自己的副本,并用 claude --plugin-dir 加载。
权限与安全
在运行之前,我们读过了插件可以执行的每一个文件:hooks/hooks.json、hooks/register.tsx、类型声明、清单和测试,以及仓库的 package.json、marketplace.json 和 LICENSE。没有安装脚本、依赖、打包代码或二进制文件,也没有发现隐藏的 Unicode 字符。
拦截型钩子:prompt.submit 和 agent.spawn 会改写提交的内容以及子代理使用的模型。这与 README 的描述一致:去掉 _,在提示上下文中加入一条说明,并设定 Haiku 轮次的模型。说明内容是 “The person sent this prompt to Haiku: you are claude-haiku-5-5 while you answer it”。validate 提示这两个钩子没有 .catch。修改界面涵盖提示下方的提示行、微调器标签、粗体的 _ 和回答下方的一行。如果你在轮次进行中发送带 _ 的提示,会弹出一条通知。
插件只使用 $.state 和 $.ui。它不使用网络、不运行进程、不写文件、不读取环境变量,也不运行守护进程,没有遥测。claude plugin validate 没有报告任何错误或警告,作者的 10 个测试在 Claude Code 2.1.303 上全部通过。许可证为 MIT(有 LICENSE 文件),因此本页面可以镜像它。
- 读取你的提示词
- 可以看到你输入的内容和对话记录(prompt.* / session.append / session.messages)。
- 修改界面
- 在 Claude Code 界面中绘制内容:横条、面板、状态文字、弹出通知(ui.render / $.ui.*)。
兼容性与故障排除
已在 macOS 上使用 Claude Code 2.1.303 检查(validate、测试和录屏)。如果提示没有在 Haiku 上运行:
- 第一个字符是单个
_,并且后面有文字。 - Claude 处于空闲状态。轮次进行中发送的提示会保留当前模型,提示行也会这样说明。
- 提示来自你本人,而不是频道、其他会话或后台任务。
- 你已加载该插件(
/plugin会列出它),并且安装后启动了新会话。 - 如果回答下方的一行警告说有其他模型作答,说明 API 没有采用该请求;警告会显示模型名。
常见问题
- 这个插件会改变我的会话模型吗?
- 不会。只有以 _ 开头的那一轮会发给 claude-haiku-5-5,下一条提示会回到会话原本使用的模型,不会修改任何设置。
- 如果 Claude 还在工作时我输入了带 _ 的提示会怎样?
- 这段文字会并入正在运行的轮次或排在它后面,因此仍使用当前模型。提示下方的一行会在你发送前给出警告,发送后还会弹出一条通知。
- 子代理也会使用 Haiku 吗?
- 会。Haiku 轮次启动的子代理会以 Haiku 创建,即使该轮结束后也保持不变。分叉和工作流代理则在每次请求时处理,队友保留自己的模型。
- 为什么会出现 Asked for Haiku, but … answered 这样的警告?
- 交互式 Haiku 轮次结束后,插件会读取 API 返回的用量中的模型名。如果名称不含 haiku,就显示带该名称的警告,而不是常规的 Answered by 一行。
- 我还能写 __init__.py 这样的文件名吗?
- 可以。开头的双下划线不算标记,单独一个 _ 也不算,所以 __init__.py fails to import 这样的提示会原样发送。
# 相关插件
精选After
Claude Code 的提示词队列:/after 会在当前这一轮结束后运行你的下一个任务,不会干扰正在进行的工作。
- 输入框上方
- 面板
- 弹出通知
- 状态栏
- 调用模型(消耗你的额度)
- 读取你的提示词
- 修改界面
- 添加命令/工具
- 存储数据
已在 v2.1.303 实测
精选Context Bar
在 Claude Code 输入框上方用一条堆叠横条显示上下文窗口,每个类别一种颜色,并附带 token 数。
- 输入框上方
- 修改界面
- 添加命令/工具
- 存储数据
已在 v2.1.291 实测