主题
7. 快速上手指南
1. 前置条件
- Python 3.9+
- Langfuse 账号(Cloud 或自托管)
- Claude Code 或 trpc-claudecode 已在使用
2. 安装
bash
cd a_myset/learnNote/ai/cli/claudecode/langfuse_trace
pip install -r requirements.txtrequirements.txt 内容:
langfuse>=2,<33. 配置环境变量
bash
export TRACE_TO_LANGFUSE=true
export CC_LANGFUSE_PUBLIC_KEY=pk-lf-xxxxxxxx
export CC_LANGFUSE_SECRET_KEY=sk-lf-xxxxxxxx
# 自托管时修改 host
export CC_LANGFUSE_BASE_URL=https://cloud.langfuse.com建议写入 ~/.bashrc 或 ~/.zshrc。
完整环境变量表
| 变量 | 必填 | 默认值 | 说明 |
|---|---|---|---|
TRACE_TO_LANGFUSE | ✅ | — | 必须为 true |
CC_LANGFUSE_PUBLIC_KEY | ✅ | — | 也可用 LANGFUSE_PUBLIC_KEY |
CC_LANGFUSE_SECRET_KEY | ✅ | — | 也可用 LANGFUSE_SECRET_KEY |
CC_LANGFUSE_BASE_URL | https://cloud.langfuse.com | 也可用 LANGFUSE_BASE_URL | |
CC_LANGFUSE_DEBUG | false | 详细日志 | |
CC_LANGFUSE_MAX_CHARS | 20000 | 截断阈值 | |
CC_LANGFUSE_REDACT | true | 敏感信息脱敏 | |
CC_LANGFUSE_INCLUDE_SUBAGENTS | true | 子代理嵌套上报 | |
CC_LANGFUSE_SUBAGENT_TIME_WINDOW_S | 10 | 子代理匹配时间窗 | |
CC_LANGFUSE_STREAMING | true | Watcher 流式模式 | |
CC_LANGFUSE_WATCH_POLL_S | 1.0 | Watcher 轮询间隔 | |
CC_LANGFUSE_WATCH_IDLE_S | 300 | 空闲停止跟踪秒数 |
4. 方案选择
方案 A:Watcher(推荐)
bash
cd watcher
./run_watcher.sh或指定 trpc-claudecode 目录:
bash
python3 claude_langfuse_watcher.py \
--projects-root ~/.trpc-claudecode/projects然后在 Claude Code 里正常编程,打开 Langfuse UI 即可看到实时 Trace。
方案 B:Hook
bash
# 1. 部署脚本
cp hook/langfuse_hook_all_agents.py ~/.claude/hooks/
# 2. 在 ~/.claude/settings.json 注册 Stop Hook
# 详见 langfuse_trace/方案实现说明.md5. 验证上报成功
5.1 检查日志
bash
# Watcher 日志
tail -f ~/.claude/state/langfuse_watcher.log
# 共享解析日志
tail -f ~/.claude/state/langfuse_hook.log成功时看到类似:
streaming trace started turn=1 session=b0dcb60c-...
streaming tool started name=Bash id=toolu_01XYZ
streaming turn finalized turn=1 session=b0dcb60c-...5.2 检查 Langfuse UI
- 打开 Langfuse Cloud → Traces
- 筛选
tags包含claude-code - 点开一条 Trace,应看到:
- 名称
Claude Code - Turn N - 树状时间线:Generation + Tool Span
- Token 用量非零
- 延迟非 0.00s
- 名称
5.3 运行端到端测试
bash
# Watcher 测试
cd watcher && ./run_e2e_langfuse_watcher_test.sh
# Hook 测试
cd hook && ./run_e2e_langfuse_test.sh6. 典型使用场景
场景 1:日常开发可观测
bash
# 终端 1:启动 Watcher
./run_watcher.sh
# 终端 2:正常使用 Claude Code
claude场景 2:CI 离线分析
bash
python3 claude_langfuse_watcher.py \
--transcript /path/to/session.jsonl \
--once场景 3:调试单个 session
bash
export CC_LANGFUSE_DEBUG=true
python3 claude_langfuse_watcher.py \
--transcript ~/.claude/projects/xxx/session-id.jsonl \
--poll-interval 0.57. 注意事项
- Hook 和 Watcher 不要同时开 — 会重复上报
- SDK 版本必须是 v2 —
pip install 'langfuse>=2,<3' - 短脚本测试记得 flush — Watcher/Hook 内部已处理
- 子代理需要 INCLUDE_SUBAGENTS=true — 否则 Agent/Task 内部不可见
8. 目录与状态文件速查
~/.claude/
├── projects/ # Claude Code transcript
│ └── <hash>/<sessionId>.jsonl
├── hooks/ # Hook 脚本部署位置
│ └── langfuse_hook_all_agents.py
├── settings.json # Hook 注册
└── state/
├── langfuse_hook_all_agents_state.json # Hook 状态
├── langfuse_watcher_state.json # Watcher 状态
├── langfuse_hook.log # 共享日志
└── langfuse_watcher.log # Watcher 日志遇到问题 → 8_troubleshooting.md