Skip to content

ileeoyo/claude-code-task-timer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Claude Code Task Timer

在 Claude Code 状态栏实时显示当前任务的执行时间。

执行中

执行完成

功能特性

  • 实时显示:任务执行过程中显示已用时间
  • 完成状态:任务完成后显示总耗时
  • 多实例支持:多个 Claude Code 会话独立计时
  • 轻量无依赖:纯 Bash 脚本实现

使用方式

本项目支持两种使用方式:

方式 实时显示 完成时显示 依赖
ccstatusline + Hooks ccstatusline
仅 Hooks

方式一:ccstatusline + Hooks(推荐)

通过 ccstatusline 在状态栏实时显示任务耗时。

已知限制

ccstatusline 的刷新频率受 Claude Code 自身限制,刷新时间不可控,可能会有数秒的滞后。

安装步骤

1. 安装并配置 ccstatusline

参考 ccstatusline 完成安装和基础配置。

2. 复制 Hook 脚本

hooks/timing_hook.sh 复制到 ~/.claude/hooks/ 目录。

3. 配置 Claude Code Hooks

编辑 ~/.claude/settings.json,添加 hooks 配置:

{
  "hooks": {
    "UserPromptSubmit": [
      {
        "hooks": [
          {
            // Linux/macOS: "bash \"$HOME/.claude/hooks/timing_hook.sh\""
            "command": "bash \"%USERPROFILE%/.claude/hooks/timing_hook.sh\"",
            "type": "command"
          }
        ]
      }
    ],
    "Stop": [
      {
        "hooks": [
          {
            "command": "bash \"%USERPROFILE%/.claude/hooks/timing_hook.sh\"",
            "type": "command"
          }
        ]
      }
    ],
    "SessionEnd": [
      {
        "hooks": [
          {
            "command": "bash \"%USERPROFILE%/.claude/hooks/timing_hook.sh\"",
            "type": "command"
          }
        ]
      }
    ]
  }
}

4. 配置 ccstatusline 自定义命令

在 ccstatusline 配置中添加 custom-command 组件:

{
  "type": "custom-command",
  // Linux/macOS: "bash \"$HOME/.claude/hooks/timing_hook.sh\""
  "commandPath": "bash \"%USERPROFILE%\\.claude\\hooks\\timing_hook.sh\"",
  "timeout": 2000
}

方式二:仅 Hooks

不使用 ccstatusline,仅在任务完成时由 Claude 输出耗时信息。

工作原理

利用 Stop Hook 的 decision:block 机制:

Agent 完成任务
      │
      ▼
Stop Hook 第一次触发 (stop_hook_active=false)
      │
      ├─ 计算耗时
      ├─ 输出 {"decision": "block", "reason": "本次任务耗时: X分X秒"}
      │
      ▼
Claude Code 读取 block 决策,输出 reason 内容
      │
      ▼
Stop Hook 第二次触发 (stop_hook_active=true)
      │
      ├─ 检测到 stop_hook_active=true,直接退出
      │
      ▼
Agent 正常停止

配置方法

1. 复制并修改脚本

复制 hooks/timing_hook.sh~/.claude/hooks/,取消第 106 行的注释:

# 修改前(注释状态)
# echo "{\"decision\": \"block\", \"reason\": \"本次任务耗时: ${DURATION_STR}\"}"

# 修改后(启用)
echo "{\"decision\": \"block\", \"reason\": \"本次任务耗时: ${DURATION_STR}\"}"

2. 配置 Claude Code

编辑 ~/.claude/settings.json,添加完整的 hooks 配置:

{
  "hooks": {
    "UserPromptSubmit": [
      {
        "hooks": [
          {
            // Linux/macOS: "bash \"$HOME/.claude/hooks/timing_hook.sh\""
            "command": "bash \"%USERPROFILE%/.claude/hooks/timing_hook.sh\"",
            "type": "command"
          }
        ]
      }
    ],
    "Stop": [
      {
        "hooks": [
          {
            "command": "bash \"%USERPROFILE%/.claude/hooks/timing_hook.sh\"",
            "type": "command"
          }
        ]
      }
    ],
    "SessionEnd": [
      {
        "hooks": [
          {
            "command": "bash \"%USERPROFILE%/.claude/hooks/timing_hook.sh\"",
            "type": "command"
          }
        ]
      }
    ]
  }
}

显示格式

方式一(ccstatusline)

状态 显示 示例
执行中 执行中:{时间} 执行中:1分23秒
已完成 执行完成:{时间} 执行完成:2分45秒

方式二(仅 Hooks)

任务完成时输出:本次任务耗时: X分X秒

时间格式X秒 / X分X秒 / X时X分X秒

故障排除

计时器不显示

chmod +x ~/.claude/hooks/timing_hook.sh

时间显示异常

rm -rf ~/.claude/.timing/*

License

MIT License

About

在 Claude Code 状态栏实时显示当前任务的执行时间

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages