把你的使用情况加到地图上
在 Claude Code 设置里加三个 hook,就能匿名记录会话启动、你发出的每条消息以及每轮消耗的 token——这样地图看到的不只是会话数量,还有长时间工作中的真实负载。完全自愿,删掉几行配置即可关闭。
1. 安装 hook
方式 A:让 Claude Code 自己完成最简单
复制下面的提示词发给 Claude Code。智能体会下载脚本并先给你看内容,备份你的设置,替换旧版 Hourglyph hook(如果有),把新条目合并进去,最后展示 diff。写入文件前 Claude Code 会征求你的同意。
请在这台机器上为 Claude Code 安装 Hourglyph hooks(https://hourglyph.github.io/zh/setup/)。
目标:把会话启动时间、发送消息的时间以及每轮的 token 数匿名发送到高峰时段地图。消息文本、回复、代码和路径都不会发送。
步骤:
1. 下载脚本,在继续之前把完整内容展示给我:
mkdir -p ~/.claude/hooks && curl -fsSL https://hourglyph.github.io/hook/hourglyph.sh -o ~/.claude/hooks/hourglyph.sh
(GitHub 源码:https://github.com/hourglyph/hourglyph.github.io/blob/main/public/hook/hourglyph.sh)。确认它除了发送事件名和四个 token 数字之外不做任何事。
2. 读取 ~/.claude/settings.json(文件不存在就当作 {})。如果文件存在,先备份到 ~/.claude/settings.json.bak。
3. 从 hooks 中删除所有旧的 Hourglyph 条目——即包含 "hourglyph.sh" / "rpc/checkin" 的命令——避免重复。
4. 合并而不是覆盖:保留其他所有设置和 hook,把下面这些元素原样追加到 hooks.SessionStart、hooks.UserPromptSubmit 和 hooks.Stop 数组中(不存在就创建):
{
"SessionStart": [
{
"matcher": "startup",
"hooks": [
{
"type": "command",
"command": "sh \"$HOME/.claude/hooks/hourglyph.sh\" session",
"async": true
}
]
}
],
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "sh \"$HOME/.claude/hooks/hourglyph.sh\" message",
"async": true
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "sh \"$HOME/.claude/hooks/hourglyph.sh\" stop",
"async": true
}
]
}
]
}
5. 以合法 JSON 写回文件,并重新读取确认可以解析。
6. 检查 curl 和 awk 是否可用(command -v curl awk)。
7. 给我看 diff,并告诉我如何全部删除:从 settings.json 删掉这三个条目并删除文件 ~/.claude/hooks/hourglyph.sh——或者用一条命令:curl -fsSL https://hourglyph.github.io/hook/uninstall.sh | sh
不要修改其他任何内容。从下一个新会话开始就会发送数据。方式 B:手动安装
下载脚本(在 GitHub 上查看源码,65 行 sh + awk):
mkdir -p ~/.claude/hooks && curl -fsSL https://hourglyph.github.io/hook/hourglyph.sh -o ~/.claude/hooks/hourglyph.sh然后把 hooks 块加到 ~/.claude/settings.json(或与已有的合并)。如果你装过带 rpc/checkin 的旧版 hook,请删掉它。
{
"hooks": {
"SessionStart": [
{
"matcher": "startup",
"hooks": [
{
"type": "command",
"command": "sh \"$HOME/.claude/hooks/hourglyph.sh\" session",
"async": true
}
]
}
],
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "sh \"$HOME/.claude/hooks/hourglyph.sh\" message",
"async": true
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "sh \"$HOME/.claude/hooks/hourglyph.sh\" stop",
"async": true
}
]
}
]
}
}2. 会发送什么
| Hook | 触发时机 | 发送内容 |
|---|---|---|
SessionStart | 新会话启动 | {"p_event":"session"} |
UserPromptSubmit | 你发送一条消息 | {"p_event":"message"} — 不含文本 |
Stop | Claude 完成一轮回复 | 4 个整数:输入、输出、缓存写入和缓存读取 token 数 |
- 脚本在本地根据会话记录文件统计 token,文件路径由 Claude Code 传给 hook。离开你电脑的只有合计数字——没有文本、代码、路径或会话 ID。
- 所有 hook 都在后台运行(
async: true),超时 5 秒,不会拖慢 Claude Code。输出会被丢弃,不会进入模型上下文。 - 小时、星期和国家由服务器添加(国家取自网络附加在连接上的请求头);IP 不会被存储。
- 脚本里的密钥是 Supabase 的公开(publishable)密钥:只能发送事件,无法读取原始数据。每个网络的事件频率都有限制(见下方说明)。
3. 验证
在新终端里启动 claude,发一条消息,等一分钟后打开地图——消息和 token 计数会增加。/hooks 命令可以列出当前生效的 hook。
如何关闭
一条命令即可从 ~/.claude/settings.json 中只删除 Hourglyph 的条目(备份保存在 settings.json.hourglyph-bak),并删除脚本本身。你的其他 hook 和设置保持不变。在 GitHub 上查看源码。
curl -fsSL https://hourglyph.github.io/hook/uninstall.sh | sh需要 python3 或 node;如果都没有,脚本不会做任何修改,并会告诉你需要手动删除哪些内容。
或者让 Claude Code 来做
请在这台机器上删除 Claude Code 的 Hourglyph hooks(https://hourglyph.github.io/zh/setup/)。
1. 把 ~/.claude/settings.json 备份到 ~/.claude/settings.json.hourglyph-bak。
2. 只从 hooks 中删除 Hourglyph 的条目——即包含 "hourglyph.sh" / "rpc/checkin" 的命令。其他 hook 和设置保持原样;删掉因此变空的分组和事件。
3. 以合法 JSON 写回文件,并重新读取确认可以解析。
4. 删除文件 ~/.claude/hooks/hourglyph.sh。
5. 给我看 diff。手动删除
从 ~/.claude/settings.json 中删除包含 hourglyph.sh 的三个条目,并删除文件 ~/.claude/hooks/hourglyph.sh。已发送的数据是匿名的,与你无关联。
说明
- 需要
sh、awk和curl,macOS、Linux 和 WSL 都自带。在没有 WSL 的 Windows 上,Claude Code 通过 Git Bash 运行 hook,其中也包含这三个工具。 - 如果只想统计某个项目的工作,把同样的配置块放进该仓库的
.claude/settings.json。 - 每个网络每分钟最多接受 8 次会话启动和 30 条消息或回合——同时处理多个项目也够用。
- 不想做任何配置?在首页点击“我正在使用 Claude Code”即可。
- Hooks 文档:code.claude.com/docs/en/hooks。