给 Claude Code 装一块秒表:每轮 + 累计耗时自动反馈

0 阅读3分钟

JeecgBoot AI专题研究 | 一段指令装完,每轮 + 累计耗时直接打在屏幕上


痛点

用 Claude Code 久了会发现一件事:它干完活不告诉你花了多久

昨晚让它在 JeecgBoot 低代码里跑自动搭建 OA 审批 Skills(设计表单、绘制流程、挂接表单流程、配置菜单字典),收尾时我顺口问了一句"耗时?",它回"没有精确耗时统计"。

这个数据对我来说其实是刚需——每次 Skills 跑下来速度都不一样,想优化就得先知道基线在哪;可跑了几天又发现哪怕同一套 Skills,今天和明天也能差出一截,原因往往是网络抖动或者 AI 降智。光凭感觉根本看不出规律,必须有客观数据才能分辨是"脚本本身慢了"还是"外部环境的锅"。

所以我顺手做了一个小插件——每轮自动追加一行会话和累计耗时提示,装起来一条指令就够。


效果预览

装完之后,每一次 Claude Code 回复的最后都会自动多一行:

⏱ 本轮耗时 4.72s · 累计 1m18s

会话退出时(Ctrl+D / 关闭终端 / /exit)再给一份汇总:

📊 会话结束 · Claude 响应累计 3m42s · 会话时长 12m5s

两个数含义不同:累计只算 AI 在思考和生成的时间,会话时长是从开终端到退出的总墙钟时间。想对比"AI 干了多少活 vs 我陪了它多久",两个数一起看就有画面。


一键安装:把下面这段话丢给 Claude Code

请帮我从 https://github.com/jeecgboot/claude-code-session-timer-hook
安装 session_timer。步骤:

1. 下载 session_timer.py 到 ~/.claude/hooks/(目录不存在就创建):
   https://raw.githubusercontent.com/jeecgboot/claude-code-session-timer-hook/main/session_timer.py
2. 把以下 4 个 hook 合并到 ~/.claude/settings.json 的 hooks 字段
   (保留我现有配置,不要整段覆盖):
   - SessionStart       → python "$HOME/.claude/hooks/session_timer.py" session_start 2>/dev/null || true
   - UserPromptSubmit   → python "$HOME/.claude/hooks/session_timer.py" start 2>/dev/null || true
   - Stop               → python "$HOME/.claude/hooks/session_timer.py" stop 2>/dev/null || true
   - SessionEnd         → python "$HOME/.claude/hooks/session_timer.py" end 2>/dev/null || true
   每个 hook 的 type 都是 "command"3. 校验 settings.json 是合法 JSON,然后提示我敲 /hooks 激活。

Claude 会自己下载脚本、创建目录、读现有 settings.json、合并 hook、校验 JSON、提示重载。全程不用你打开编辑器,也不用记路径

装完敲一次 /hooks 重载配置,下一次对话就能看到那行秒表了。

想清空累计?对 Claude 说一句"清空累计耗时",或直接终端跑:

python ~/.claude/hooks/session_timer.py reset --all

性能担忧:会不会拖慢对话?

这是我自己最在意的问题。用 perf_counter 跑了 10 轮实测:

  • Python 冷启动(baseline):中位 36ms
  • session_timer.py start:中位 52ms
  • session_timer.py stop(含 JSON 输出):中位 52ms

也就是说脚本本身只占 16ms 左右,其余都是 Python 解释器冷启动的固定开销。

每一轮对话的总额外成本 = UserPromptSubmit hook (~52ms) + Stop hook (~52ms) ≈ 100ms

人对延迟的感知阈值大约在 100ms,所以理论上处于"察觉边缘"。但 Claude 模型响应本身动辄几秒到几十秒,API 往返就不止 100ms,这点开销完全淹没在正常对话延迟里,实际用下来感觉不出来。

如果你要抠极致,可以给 UserPromptSubmit 加 "async": true 让它后台跑;但 Stop 必须同步,否则 systemMessage 可能来不及显示就被下一轮覆盖掉。


收尾

整个插件就两个文件——session_timer.py + README.md,加起来不到 200 行。下次再有人问你"这个功能 AI 帮你做了多久",你至少不用尬笑了。


本文为 JeecgBoot AI 专题研究系列文章。