🗂️
チーム全体でAI活用の効率を上げるためにClaudeCodeのログを収集する
課題
- プロンプトの変更やコンテクストの追加をした際にそれが正解だったのか感覚値以外に図る指数がない
- AI駆動開発の上手/下手がよく分からない(上手な人に教えを乞いたい)
- タスク単位で成功/失敗のパターンを分析したい(AIが苦手なタスクを理解しておきたい、たぶんプロジェクトによっても異なる)
- 実感としてAI可読性が低いと思われるファイル(なんかこのモデル周りだと出力精度落ちるなーとか)があるが確信がもてない
解決案
- チーム全体のログを収集する
- OSSとかないのかなーと調べたら公式がOpenTelemetryにサポートしていた
受信サーバの用意
- テレメトリーデータを受信するサーバを用意
- 自前 or それ用のサービス
- 自分でOpenTelemetry対応のサーバを建てる
- OpenTelemetry対応のAPMサービスに繋げる
- AWS Distro for OpenTelemetry
- GCP Cloud Trace
- Datadog とか
- 既にDatadog使ってるならそれが早そう
claudeCodeの送信設定
-
settings.jsonでOpenTelemetryの送信先やフォーマットを変数で設定するだけ - あとはclaudeCodeがよしなに送信してくれる
- チームで利用する場合はコミットしてる
settings.jsonに設定
試してみる
一先ず個人開発プロジェクトのログを収集してみる
受信サーバはGrafanaLabsを利用
- https://grafana.com/
- 無料枠がある
- JAXAが使っていてテンション上がる
- Datadog使い始めちゃったけど円安もあって高いな!!と思っている企業は多そう
- 何の利害関係もありません
サーバの用意
- アカウントを作る
- "Manage your Grafana Cloud stack" のリストからデフォルトで作られているstackを選んでダッシュボードへ移動
- 左ナビ -> Connections -> Add new Connection -> 検索バーに
OpenTelemetryを入力して出てきたOpenTelemetryを選択 - OpenTelemetry setup で設定
- Choose your programming language
- Other - Choose your infrastructure
- Other - Choose your method
- OpenTelemetry Collector - トーク生成して環境変数をコピー
claude codeの設定
- プロジェクト内の
settings.jsonでenvを設定 -
OTEL_LOG_USER_PROMPTSを1にするとプロンプトの内容がログに含まれる - grafana の場合はプロトコルが
http/protobufなので注意 -
OTEL_EXPORTER_OTLP_ENDPOINT,OTEL_EXPORTER_OTLP_HEADERSは grafana でコピーした変数の内容
{
"env": {
"CLAUDE_CODE_ENABLE_TELEMETRY": "1",
"OTEL_METRICS_EXPORTER": "otlp",
"OTEL_LOGS_EXPORTER": "otlp",
"OTEL_LOG_USER_PROMPTS": "1",
"OTEL_EXPORTER_OTLP_PROTOCOL": "http/protobuf",
"OTEL_EXPORTER_OTLP_ENDPOINT": "https://otlp-gateway-prod-ap-northeast-0000.grafana.net/otlp",
"OTEL_EXPORTER_OTLP_HEADERS": "Authorization=Basic xxxxxxxxx"
}
}
ログを確認
- Explore -> データソースとして Loki を選択
- 一先ず全部見る為に
{service_name="claude-code"}でクエリを実行
こんな感じ、もちろんエクスポートも可能

分かった事
あくまでもメトリクスデータ
- ローカルのログとは違う所謂メトリクスデータ
- トークンの利用数や変更行数、利用されたツール、ユーザーが入力したプロンプトは取れる
- 書き込み、読み込みなどに関しては
tool_name: Readという形で何のツールが利用されたかは分かるが差分などはログに含まれない - Bashを使った場合は
tool_parametersに実行したコマンドや引数が入ってくる
分析できる範囲
- プロンプトの変更やコンテクストの追加をした際にそれが正解だったのか感覚値以外に図る指数がない
共通コマンド等のプロンプト変更、コンテクスト追加などの前後でメトリクスデータを比較してある程度見れる
- AI駆動開発の上手/下手がよく分からない(上手な人に教えを乞いたい)
ユーザー情報を取れるので、分析可能(ユーザー情報を送らない設定もあり)
- タスク単位で成功/失敗のパターンを分析したい(AIが苦手なタスクを理解しておきたい、たぶんプロジェクトによっても異なる)
Bashコマンドの tool_parameters を追うとclaudeCodeのセッションとPRを紐づけられるので頑張れば相関が見れる
claudeがPR作ってからの修正や手戻りが多いPR(とそのissue)を拾う
- 実感としてAI可読性が低いと思われるファイル(なんかこのモデル周りだと出力精度落ちるなーとか)があるが確信がもてない
理屈としてはこれもPRから追ってどうにか出来るか難しい
まとめ
- 完璧ではないが結構使える、収集に手間がないのが良い
- 新しいモデルの登場で解析結果が無意味になる、みたいな事はありそうだけど、AI駆動のデータをどう解析するのかみたいな方法論は数年は役に立つかも
Discussion