一键导入
cute-claude-hooks
为 Claude Code 提供完整的中文体验!包含工具提示、界面汉化、完整的自定义指南、实战经验和进阶开发教程, 让用户能够根据自己的需求修改和完善.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
为 Claude Code 提供完整的中文体验!包含工具提示、界面汉化、完整的自定义指南、实战经验和进阶开发教程, 让用户能够根据自己的需求修改和完善.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | cute-claude-hooks (可爱提示钩子) |
| description | 为 Claude Code 提供完整的中文体验!包含工具提示、界面汉化、完整的自定义指南、实战经验和进阶开发教程, 让用户能够根据自己的需求修改和完善. |
在自定义钩子脚本时,以下短语/格式千万不能随意修改,否则可能导致 Claude Code 无法正常启动或运行:
| 类型 | 不能修改的内容 | 原因 |
|---|---|---|
| JSON 结构 | {"systemMessage":"..."} 格式 | Claude Code 依赖此格式解析 hook 输出 |
| 特殊标记 | <{{GUID}}> 格式的标记 | 系统内部通信标识符 |
| 工具名称 | Bash, Read, Write 等工具名 | 与 Claude Code 内部工具对应 |
| 钩子字段 | PreToolUse, PostToolUse 等事件名 | 钩子系统核心字段 |
| 环境变量名 | CLAUDE_CODE_* 相关变量 | 系统运行时依赖 |
如果修改后 Claude Code 无法正常启动或出错:
# 方法1: 重新安装 Claude Code
npm install -g @anthropic-ai/claude-code
# 方法2: 清除缓存后重装
npm cache clean --force
npm install -g @anthropic-ai/claude-code
# 方法3: 恢复钩子默认配置
# 删除自定义钩子,使用原始配置
rm -rf ~/.claude/hooks/
cute-claude-hooks 是一个为 Claude Code 设计的中文增强工具包,包含两大核心功能:
每次 Claude Code 执行操作时,都会在界面上显示一条中文提示,告诉你它刚才做了什么:
🌸 📖 读取文件: package.json — 查看这个文件里写了什么 🌸
🌸 🖥️ 执行命令: git status — 查看代码仓库状态(有哪些文件被修改了) 🌸
🌸 ✏️ 编辑文件: index.js — 修改这个文件的部分内容 🌸
支持的工具类型:
| 工具 | 图标 | 说明 |
|---|---|---|
Read | 📖 | 读取文件 |
Write | 📝 | 写入文件 |
Edit / MultiEdit | ✏️ | 编辑文件 |
Bash | 🖥️ | 执行终端命令 |
Glob | 🔍 | 搜索文件 |
Grep | 🔎 | 搜索内容 |
Agent | 🤖 | AI子任务 |
| MCP 工具 | 🔌 | 第三方扩展 |
命令解释覆盖范围:
多命令支持: 当 Bash 工具执行多条命令(用 &&, ||, ; 连接)时,会逐条解释每一条命令。
将 Claude Code 的英文界面翻译为中文,包括:
/config)# 全局安装
npm install -g cute-claude-hooks
# 运行安装脚本
cute-claude-hooks-install
安装向导会提供四个选项:
npx cute-claude-hooks-install
无需全局安装,直接运行安装脚本。
详见 README.md 中的「Windows 手动安装」章节。
界面汉化通过 关键词全局替换 实现:
cli.js 为 cli.bak.jskeyword.js 中的翻译对照表(151条)cli.js 中执行全文替换| 区域 | 示例原文 | 示例译文 |
|---|---|---|
| 配置面板 | Theme | 主题 |
| 斜杠命令 | /help - Get help | /help - 获取帮助 |
| 快捷键提示 | Esc to cancel | Esc 取消 |
| 欢迎界面 | Welcome back! | 欢迎回来! |
| 状态信息 | Auto-compact | 自动压缩 |
所有翻译词条在 localize/keyword.js 中,格式为:
module.exports = {
'English text': '中文翻译',
// ...
}
编辑 ~/.claude/hooks/tool-tips-post.sh 中的 get_tip() 函数:
get_tip() {
case "$1" in
"Read")
echo "📖 正在读取文件 — 看看里面写了什么"
;;
"Write")
echo "📝 正在写入文件 — 创建或更新文件内容"
;;
# ... 添加你自己的提示
esac
}
编辑 explain_cmd() 函数中的 case 语句:
git)
local sub=$(echo "$rest" | awk '{print $1}')
case "$sub" in
status) echo "查看仓库状态" ;;
log) echo "查看提交历史" ;;
# 添加你自己的命令解释
esac
;;
在主逻辑中修改 🌸 标记:
# 默认
escaped_tip=$(json_escape "🌸 ${tip} 🌸")
# 改为你想要的标记
escaped_tip=$(json_escape ">>> ${tip} <<<")
在 get_tip() 函数中添加新的 case 分支:
# 添加对 NoteBookEdit 的支持
"NotebookEdit")
echo "📓 编辑 Notebook — 修改 Jupyter 笔记本单元格"
;;
编辑 ~/.claude/settings.json 中的 matcher 字段:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Bash|Read|Write|Edit|Glob|Grep|mcp__*",
"hooks": [...]
}
]
}
}
匹配规则说明:
| 规则 | 匹配内容 |
|---|---|
Bash | 精确匹配 Bash 工具 |
Bash|Read | 匹配 Bash 或 Read(用 | 分隔) |
mcp__* | 匹配所有 MCP 工具(通配符) |
* | 匹配所有工具 |
根据文件类型显示不同提示:
"Read")
if [ -n "$file_path" ]; then
ext="${file_path##*.}"
case "$ext" in
py) echo "📖 读取 Python 文件: $(short_path "$file_path")" ;;
js) echo "📖 读取 JavaScript 文件: $(short_path "$file_path")" ;;
*) echo "📖 读取文件: $(short_path "$file_path")" ;;
esac
fi
;;
在 get_tip() 的 MCP 分支中添加新的服务器:
case "$srv" in
"context7") echo "📚 查询文档: $tool" ;;
"exa") echo "🌐 网络搜索: $tool" ;;
"basic-memory") echo "🧠 记忆操作: $tool" ;;
# 添加你自己的 MCP 服务器
"my-server") echo "🔧 我的工具: $tool" ;;
*) echo "🔌 $srv: $tool" ;;
esac
在 explain_cmd() 函数中添加新的命令组:
# 示例:添加 Kubernetes 命令
kubectl)
local sub=$(echo "$rest" | awk '{print $1}')
case "$sub" in
get) echo "查看 Kubernetes 资源" ;;
apply) echo "应用 Kubernetes 配置" ;;
delete) echo "删除 Kubernetes 资源" ;;
logs) echo "查看容器日志" ;;
describe) echo "查看资源详细信息" ;;
*) echo "Kubernetes 集群操作" ;;
esac
;;
编辑 localize/keyword.js:
module.exports = {
// 现有词条...
// 添加新词条
'New English Text': '新的中文翻译',
};
然后重新运行汉化:
node ~/.claude/localize/localize.js
除了 PostToolUse(执行后提示),还可以添加 PreToolUse(执行前提示):
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/pre-warning.sh"
}
]
}
]
}
}
手动模拟 Claude Code 的调用:
# 测试 Read 工具提示
echo '{"tool_name":"Read","file_path":"test.py"}' | bash ~/.claude/hooks/tool-tips-post.sh
# 测试 Bash 工具提示
echo '{"tool_name":"Bash","command":"git status"}' | bash ~/.claude/hooks/tool-tips-post.sh
# 测试 Glob 工具提示
echo '{"tool_name":"Glob","pattern":"**/*.js"}' | bash ~/.claude/hooks/tool-tips-post.sh
# 测试多命令提示
echo '{"tool_name":"Bash","command":"git status && npm install && npm run build"}' | bash ~/.claude/hooks/tool-tips-post.sh
预期输出格式:
{"systemMessage":"🌸 🖥️ 共3条命令:\n 1. git status — 查看代码仓库状态(有哪些文件被修改了)\n 2. npm install — 安装项目依赖包\n 3. npm run build — 构建/编译项目 🌸"}
Claude Code 的 hook 执行日志在终端中可见。如果提示没有出现:
/)chmod +x)# 验证 JSON 格式
node -e "JSON.parse(require('fs').readFileSync(require('path').join(require('os').homedir(),'.claude','settings.json'),'utf8'));console.log('OK')"
问题: Windows 上 hook 脚本路径包含反斜杠或中文用户名。
解决: settings.json 中的路径使用正斜杠:
"command": "C:/Users/你的用户名/.claude/hooks/tool-tips-post.sh"
Claude Code 会自动通过 Git Bash 执行 .sh 脚本。
问题: 在 Windows 上编辑 .sh 文件后,换行符变成 CRLF,导致 bash 报错。
解决: 确保使用 LF 换行符。在 VS Code 中,点击右下角的 CRLF,切换为 LF。
或在安装脚本中自动处理:
# 将 CRLF 转为 LF
sed -i 's/\r$//' tool-tips-post.sh
关键发现: PostToolUse hook 的输出必须是以下格式才能在 UI 中显示:
{"systemMessage":"你要显示的文本"}
systemMessage原则: 解释应该让完全不懂编程的人也能理解:
执行命令: git status执行命令: git status — 查看代码仓库状态(有哪些文件被修改了)每个解释都包含两部分:
当 Bash 执行的命令包含多条语句时(用 &&, ||, ; 连接),脚本会:
修改 settings.json 的 matcher:
"matcher": "Bash"
修改 get_tip() 中的输出:
"Bash")
timestamp=$(date '+%H:%M:%S')
echo "🖥️ [${timestamp}] 执行命令: $real_cmd — $(explain_cmd "$real_cmd")"
;;
修改 get_tip() 中的 Read/Write/Edit 分支,去掉文件名:
"Read")
echo "📖 读取文件 — 查看文件内容"
;;
"Bash")
# macOS 声音提醒
afplay /System/Library/Sounds/Ping.aiff &
echo "🖥️ 执行命令: $real_cmd"
;;
在主逻辑中添加日志记录:
# 在输出 systemMessage 之前记录日志
log_file="$HOME/.claude/hooks/operation.log"
echo "$(date '+%Y-%m-%d %H:%M:%S') | $tool_name | $file_path" >> "$log_file"
Windows 用户必读! 90% 的 Hooks 失效问题都源于环境配置不当。请按以下五个阶段逐一排查。
将以下内容直接粘贴给 Claude Code,让它帮你排查:
"你现在是一个 Windows 专家级运维工程师。请针对以下五个维度,深度扫描我的系统路径、配置和环境变量,找出可能导致 Claude Code Hooks 失效、命令不识别或路径冲突的问题,并给出修复建议。"
| 检查项 | 命令 | 正确状态 |
|---|---|---|
| 终端版本 | $PSVersionTable.PSVersion | PowerShell 7+ (推荐) |
| 执行策略 | Get-ExecutionPolicy | RemoteSigned 或 Unrestricted |
| 管理员权限 | ([Security.Principal.WindowsPrincipal]::new([Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole('Administrators') | 按需判断 |
常见问题:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser| 检查项 | 命令 | 正确状态 |
|---|---|---|
| Node 版本 | node --version | v14.0.0+ |
| Node 路径 | where node | 路径无中文、无空格 |
| npm 全局前缀 | npm config get prefix | 非用户文档目录 |
| npm 全局包路径 | npm root -g | 路径无中文 |
常见问题:
C:\Program Files\nodejs) → 通常没问题,但某些工具可能报错C:\Users\小明\...) → 会导致 npm 全局包安装失败,建议修改 npm prefix:
npm config set prefix "C:\npm-global"
# 然后将 C:\npm-global 加入系统 PATH
| 检查项 | 命令 | 正确状态 |
|---|---|---|
| Git 安装 | git --version | git version 2.x |
| sh 可用性 | sh --version | GNU Bash 4.x+ |
| Git\bin 在 PATH | `$env:Path -split ';' | Select-String 'Git\bin'` |
| Git\usr\bin 在 PATH | `$env:Path -split ';' | Select-String 'Git\usr\bin'` |
| 换行符策略 | git config --global core.autocrlf | input (必须是这个!) |
| Hooks 路径 | git config --global core.hooksPath | 为空或未设置 |
⚠️ 头号死穴:core.autocrlf = true
这是 Windows 上 Hooks 失效的第一大原因!当 core.autocrlf = true 时:
.sh 脚本变成 CRLF 换行\r: command not found修复:
git config --global core.autocrlf input
为什么用
input而不是false?
input:提交时 CRLF → LF,检出时不动。Windows 写代码没问题,脚本也不会被破坏false:完全不管换行符。如果你用 Windows 编辑器写代码,可能会把 CRLF 提交到仓库
验证 sh 可用:
# 应该输出 bash 版本信息
sh --version
# 如果报错,检查 PATH 是否包含 Git\bin
$env:Path -split ';' | Where-Object { $_ -match 'Git\\\\bin' }
| 检查项 | 命令 | 正确状态 |
|---|---|---|
| UTF-8 区域设置 | 打开: intl.cpl → 管理 → 更改系统区域设置 | 勾选 "Beta: 使用 Unicode UTF-8" |
| 长路径支持 | Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem -Name LongPathsEnabled | LongPathsEnabled = 1 |
| 用户名路径 | echo $env:USERPROFILE | 无中文字符 |
常见问题:
C:\Users\古古) → 通常没问题,但某些老旧工具可能报错D:\项目资料\AI工具) → 极易出问题!建议改为英文路径C:\Users\xxx\.claude\plugins\cache\...\node_modules\...) → 超过 260 字符会导致 Node 报错开启长路径支持:
# 管理员 PowerShell 运行
Set-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem -Name LongPathsEnabled -Value 1
# 需要重启生效
| 检查项 | 命令 | 正确状态 |
|---|---|---|
| HTTP 代理 | echo $env:HTTP_PROXY | 按需设置 |
| HTTPS 代理 | echo $env:HTTPS_PROXY | 按需设置 |
| npm 代理 | npm config get proxy | 按需设置 |
| SSL 验证 | npm config get strict-ssl | true |
国内用户特别注意:
如果使用公司代理或 VPN:
# 如果代理导致 SSL 错误(不推荐,仅调试用)
npm config set strict-ssl false
# 推荐方式:使用国内镜像
npm config set registry https://registry.npmmirror.com
将以下内容保存为 check-env.ps1 运行,或直接粘贴到 PowerShell:
Write-Host "`n🌸 Cute Claude Hooks — Windows 环境自检 🌸`n" -ForegroundColor Magenta
$pass = "✅"; $fail = "❌"; $warn = "⚠️"
# Stage 1: Shell
Write-Host "[第一阶段] Shell 与权限" -ForegroundColor Cyan
$psVer = $PSVersionTable.PSVersion.Major
Write-Host ($psVer -ge 7 ? "$pass PowerShell $psVer" : "$warn PowerShell $psVer (建议升级到 7+)")
$policy = Get-ExecutionPolicy
Write-Host ($policy -ne 'Restricted' ? "$pass 执行策略: $policy" : "$fail 执行策略: $policy (需设为 RemoteSigned)")
# Stage 2: Node
Write-Host "`n[第二阶段] Node.js" -ForegroundColor Cyan
try { $n = node --version 2>$null; Write-Host "$pass Node $n" } catch { Write-Host "$fail Node 未安装" }
$prefix = npm config get prefix 2>$null
Write-Host ($prefix -match '[\u4e00-\u9fff]' ? "$fail npm prefix 含中文: $prefix" : "$pass npm prefix: $prefix")
# Stage 3: Git Bash (关键!)
Write-Host "`n[第三阶段] Git Bash (最关键)" -ForegroundColor Yellow
try { $g = git --version 2>$null; Write-Host "$pass $g" } catch { Write-Host "$fail Git 未安装" }
$autocrlf = git config --global core.autocrlf 2>$null
Write-Host ($autocrlf -eq 'input' ? "$pass core.autocrlf = input" : "$fail core.autocrlf = $autocrlf (必须改为 input!)")
$hookPath = git config --global core.hooksPath 2>$null
Write-Host ($hookPath ? "$warn core.hooksPath = $hookPath (可能拦截 Claude Hooks)" : "$pass 无全局 hooksPath 覆盖")
# Stage 4: Encoding
Write-Host "`n[第四阶段] 文件系统" -ForegroundColor Cyan
$userPath = $env:USERPROFILE
Write-Host ($userPath -match '[\u4e00-\u9fff]' ? "$warn 用户路径含中文: $userPath" : "$pass 用户路径: $userPath")
# Stage 5: Network
Write-Host "`n[第五阶段] 网络" -ForegroundColor Cyan
$reg = npm config get registry 2>$null
Write-Host ($reg -match 'npmmirror' ? "$pass npm 镜像: $reg" : "$pass npm 源: $reg")
Write-Host "`n🌸 自检完成!如有 ❌ 项请参考上方修复建议 🌸`n" -ForegroundColor Magenta
排查步骤:
检查 settings.json 格式
node -e "console.log(JSON.parse(require('fs').readFileSync(require('path').join(require('os').homedir(),'.claude','settings.json'),'utf8')).hooks)"
手动测试 hook 脚本
echo '{"tool_name":"Read","file_path":"test.py"}' | bash ~/.claude/hooks/tool-tips-post.sh
应该输出 {"systemMessage":"..."}
检查脚本换行符
file ~/.claude/hooks/tool-tips-post.sh
# 应该显示: ASCII text, not ASCII text, with CRLF line terminators
检查脚本权限(Linux/macOS)
ls -la ~/.claude/hooks/tool-tips-post.sh
# 应该有执行权限
chmod +x ~/.claude/hooks/tool-tips-post.sh
确保系统编码为 UTF-8:
# 查看详细错误
cute-claude-hooks-install 2>&1 | tee install.log
| 文件 | 位置 | 说明 |
|---|---|---|
| Hook 脚本 | ~/.claude/hooks/tool-tips-post.sh | 工具提示脚本 |
| 用户配置 | ~/.claude/settings.json | hooks 配置 |
| 汉化字典 | ~/.claude/localize/keyword.js | 翻译词条 |
| 汉化引擎 | ~/.claude/localize/localize.js | 替换脚本 |
| Claude Code 备份 | ~/.claude/localize/cli.bak.js | 原始英文文件 |
| Claude Code 主体 | Claude Code 安装目录的 cli.js | 被汉化的目标文件 |
# 方式一:使用卸载命令
cute-claude-hooks-restore
# 方式二:手动恢复
node ~/.claude/localize/localize.js --restore
编辑 ~/.claude/settings.json,删除 hooks 段:
{
"hooks": {}
}
# 1. 恢复英文界面
cute-claude-hooks-restore
# 2. 删除 hook 文件
rm -rf ~/.claude/hooks/
# 3. 删除汉化文件
rm -rf ~/.claude/localize/
# 4. 卸载 npm 包
npm uninstall -g cute-claude-hooks
当前共有 151 条翻译词条,覆盖 Claude Code 界面的主要文本。
主要分类:
| 分类 | 词条数 | 示例 |
|---|---|---|
| 配置面板 | 30+ | Theme → 主题, Model → 模型 |
| 斜杠命令 | 20+ | /help → 获取帮助 |
| 状态信息 | 25+ | Auto-compact → 自动压缩 |
| 快捷键 | 15+ | Esc to cancel → Esc 取消 |
| 欢迎界面 | 10+ | Welcome back → 欢迎回来 |
| 其他界面 | 50+ | 各类提示和说明文本 |
完整词条列表见 localize/keyword.js 文件。
A: 完全支持!安装脚本自动检测操作系统。
A: 会的。Claude Code 更新会覆盖 cli.js。重新运行 cute-claude-hooks-install 选择「仅安装界面汉化」即可。
A: 支持 80+ 常用命令的中文解释,涵盖 git、npm、pip、docker、文件操作、网络命令等。
A: 可以。安装时选择「仅安装工具提示」。
A: 一般不会。如果遇到编码问题,确保系统编码为 UTF-8。
A: 不需要。每次工具执行都会调用 hook 脚本,修改立即生效。
A: Claude Code 的 hook 系统通过 systemMessage 渲染文本,目前不支持 ANSI 颜色代码。提示会以默认颜色显示。
Claude Code 执行工具
↓
触发 PostToolUse 事件
↓
匹配 matcher 规则
↓
执行 hook command (tool-tips-post.sh)
↓
从 stdin 读取工具信息 JSON
↓
提取 tool_name, file_path, pattern, command
↓
调用 get_tip() 生成中文提示
↓
输出 {"systemMessage":"..."} 到 stdout
↓
Claude Code 读取并显示在界面上
Claude Code 通过 stdin 传递工具信息:
{
"tool_name": "Bash",
"file_path": "src/index.js",
"pattern": "**/*.js",
"command": "git status && npm install"
}
Hook 必须输出以下格式:
{"systemMessage":"🌸 🖥️ 执行命令: git status — 查看代码仓库状态 🌸"}
注意事项:
systemMessage 中的换行用 \n 表示\" 转义\\ 转义command 字段提取 bash 命令\n 转为实际换行# 开头)和空行&&, ||, ; 拆分explain_cmd() 生成解释...(还有N条)systemMessage JSON 格式head -c),现在显示完整命令\n 正确转换为实际换行git checkout -b feature/your-featuregit commit -m 'feat: 添加某某功能'git push origin feature/your-feature特别欢迎以下贡献:
使用 Conventional Commits 格式:
feat: 添加 kubectl 命令解释
fix: 修复 Windows 中文路径编码问题
docs: 更新 SKILL.md 安装说明
refactor: 简化 get_tip() 函数逻辑
MIT License - 自由使用、修改和分发
Made with 🌸 by gugug168