Files
chktime/README.md
T
yoshikazuandClaude Opus 5 cf17cf3fa0 Claude Code のやりとり時刻ビューア chktime を追加
~/.claude/projects の会話ログ (jsonl) を解析し、タスク(セッション)ごとの
やりとりの時刻を一覧表示するローカル Web アプリ。標準ライブラリのみで動作する。

- プロジェクト / タスク / ターンの3ペイン表示
- ターンごとに 発言時刻・空き時間・初回応答までの待ち・応答時間・完了時刻・
  ツール呼び出し内訳を表示、タイムラインバー付き
- 絶対時刻と経過時間の切替、絞り込み、CSV書き出し
- ファイルの更新時刻+サイズでの解析キャッシュ、tool_result 行はパースを省略
- デスクトップ用の起動 (pythonw) / 停止 (stop.cmd) スクリプト

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 15:10:48 +09:00

74 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# chktime
Claude Code の **タスク(セッション)ごとのチャットのやりとりの時刻**を一覧表示するローカル Web アプリ。
`~/.claude/projects/<プロジェクト>/<セッションID>.jsonl`(Claude Code の会話ログ)を解析して、
「いつ何を頼んで、返事が来るまで何秒かかって、その作業が何分続いたか」を表にします。
外部通信なし・追加ライブラリなし(Python 3.9+ の標準ライブラリのみ)。
## 起動
```bash
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 が動いていた時間)、
**全体** は最初から最後までの経過時間です。放置時間が長いと両者は大きく離れます。
`CSV` ボタンでタスク一覧・ターン一覧をそれぞれ書き出せます(Excel 用 BOM 付き UTF-8)。
## 解析の仕様(ざっくり)
- ターンの起点は「人間の発言」。ツール実行結果・システム挿入・サブエージェントの発言は起点にしません。
- `/model` などのスラッシュコマンドは `command`、コンパクト後の自動継続は `resume` とラベル表示します。
- `[Request interrupted...]`(Esc 中断)が含まれるターンには ⚠ を付けます。
- セッション再開時に書かれるメタ行(attachment / system / mode 等)は、ターンの所要時間には数えません。
- 解析結果はファイルの更新時刻+サイズでキャッシュします。ログを更新したらヘッダの **再読込** を押してください。
## ファイル
```
chktime.py サーバ + jsonl 解析
web/index.html 画面
web/app.js 表示ロジック
web/style.css スタイル
```