Files
chktime/README.md
T
yoshikazuandClaude Opus 5 2fd0ed1bef プロジェクト横断のタスク一覧と日別集計グラフを追加
左ペインに「すべてのプロジェクト」を追加し、全プロジェクトのタスクを1つの
一覧で扱えるようにした。あわせて右ペインに日別集計タブを設けた。

- /api/all: 全プロジェクトのタスクを開始日時順に返す (CSVはプロジェクト列付き)
- /api/daily: ターンをローカル日付で集計し、活動のない日も0で埋めて返す
  (プロジェクト別の内訳・期間指定 days= / 全期間・横持ちCSV)
- 日別集計タブ: 作業時間の棒グラフ (横断時はプロジェクト別の積み上げ、
  上位7件+その他)、14/30/90日・全期間の切替、日別テーブル、SVG手書きで
  外部ライブラリなし
- 再読込で横断モードの選択が先頭プロジェクトに戻る問題を修正
  (未選択と横断モードを state.project の undefined / null で区別)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-30 10:08:59 +09:00

5.5 KiB
Raw Blame History

chktime

Claude Code の タスク(セッション)ごとのチャットのやりとりの時刻を一覧表示するローカル Web アプリ。

~/.claude/projects/<プロジェクト>/<セッションID>.jsonl(Claude Code の会話ログ)を解析して、 「いつ何を頼んで、返事が来るまで何秒かかって、その作業が何分続いたか」を表にします。 外部通信なし・追加ライブラリなし(Python 3.9+ の標準ライブラリのみ)。

起動

python chktime.py

ブラウザで http://127.0.0.1:8787/ が開きます。

デスクトップに以下のショートカットを作成済みです。

ショートカット 動作
chktime 起動 pythonw chktime.py をコンソールなしで起動し、ブラウザを開く。すでに起動中ならタブを開くだけ
chktime 停止 stop.cmd を実行。chktime.py を実行中の python/pythonw を終了(結果を2秒表示)

run.bat(コンソール表示・ログを見たい時用)と stop.cmd は直接ダブルクリックでも使えます。 ※ .cmd / .bat は cmd の既定コードページで読まれるため、中身は ASCII のみにしています。

オプション 既定 説明
--port 8787 ポート番号
--host 127.0.0.1 待ち受けアドレス
--dir ~/.claude/projects ログの置き場所
--no-browser – ブラウザを自動で開かない

画面

  • 左:プロジェクト — 作業ディレクトリごと。タスク数・ログ容量・最終更新。先頭の ▦ すべてのプロジェクト を選ぶと横断モードになります。
  • 中央:タスク一覧 — 1 セッション = 1 行。タイトル(/title 指定 → AI 命名 → 最初のプロンプトの順)、開始日時、往復数、全体時間、作業時間。上の検索窓でタイトル/プロンプト本文を絞り込み。横断モードでは全プロジェクトのタスクを開始日時の新しい順に並べ、各行にプロジェクトを表示します(検索はパスにも効きます)。
  • 右:やりとりの時刻 — 1 ターン(あなたの発言 → Claude の応答一式)が 1 行。ヘッダの やりとり / 日別集計 タブで表示を切り替えます。

右ペインの列

列 意味
発言時刻 あなたが送信した日時 MM/DD hh:mm:ss.s(ヘッダの「経過時間で表示」で、セッション開始からの相対表示に切替)
空き 前のターンが終わってから次の発言までの間隔。前の応答中に送信した場合は 並行
初回応答 送信から Claude の最初のメッセージが返るまで
応答時間 送信からそのターンの最後のメッセージ(ツール実行・サブエージェント含む)まで
完了時刻 そのターンの応答が終わった時刻(相対表示時はセッション開始からの経過)
タイムライン 灰=空き、青=初回応答待ち、緑=応答中
内訳 そのターンの応答メッセージ数 / ツール呼び出し回数
やりとり 送信内容(クリックで全文展開)と使用ツールの内訳

上部サマリの 作業時間合計 は各ターンの応答時間の合計(=実際に Claude が動いていた時間)、 全体 は最初から最後までの経過時間です。放置時間が長いと両者は大きく離れます。

日別集計タブ

ターンをローカル日付で集計し、日ごとの 作業時間 / 往復数 / タスク数 を棒グラフと表で出します。

  • 表示範囲は 14日 / 30日 / 90日 / 全期間。活動のない日も 0 の列として並ぶので、間隔がそのまま日付軸になります。
  • 横断モードでは棒をプロジェクト別の積み上げにします(作業時間上位 7 件に色、残りは「その他」)。単一プロジェクト選択時は 1 色。
  • 棒にカーソルを当てると、その日の内訳(プロジェクト別の作業時間)が出ます。土日は背景を薄く敷いています。
  • 棒の高さは応答時間の合計なので、セッションを並行して動かした日は 24 時間を超えることがあります。

CSV ボタンでタスク一覧・ターン一覧・日別集計をそれぞれ書き出せます(Excel 用 BOM 付き UTF-8)。 横断モードのタスク一覧 CSV にはプロジェクト列が付きます。日別集計 CSV はプロジェクトごとの列を持つ横持ち形式です。

解析の仕様(ざっくり)

  • ターンの起点は「人間の発言」。ツール実行結果・システム挿入・サブエージェントの発言は起点にしません。
  • /model などのスラッシュコマンドは command、コンパクト後の自動継続は resume とラベル表示します。
  • [Request interrupted...](Esc 中断)が含まれるターンには ⚠ を付けます。
  • セッション再開時に書かれるメタ行(attachment / system / mode 等)は、ターンの所要時間には数えません。
  • 解析結果はファイルの更新時刻+サイズでキャッシュします。ログを更新したらヘッダの 再読込 を押してください。

ファイル

chktime.py      サーバ + jsonl 解析
web/index.html  画面
web/app.js      表示ロジック
web/style.css   スタイル