Trace Claude Code - Docs by LangChain
요약
stop_hook.sh 스크립트와 함께 설정하여 Claude Code의 응답 후 대화 내용을 LangSmith 실행(run)으로 변환하고 전송합니다.상세 내용
핵심 방법론 (Core Methodology)
이 Tracing 메커니즘은 Claude Code의 전역 "Stop" hook을 활용한다. "Stop" hook은 Claude Code가 응답을 생성할 때마다 실행되도록 구성된다. 이 hook은 stop_hook.sh라는 셸 스크립트를 실행하며, 이 스크립트가 Tracing의 핵심 역할을 수행한다.
stop_hook.sh 스크립트는 Claude Code가 생성한 대화 기록(conversation transcripts)을 읽는다. 이 기록은 일반적으로 .json 또는 텍스트 형식으로 저장된다.jq와 같은 JSON 처리 도구가 활용될 것으로 예상된다.curl 명령어 사용)을 통해 지정된 LangSmith project로 전송된다. 이때 LangSmith API key가 인증에 사용된다.thread_id를 공유하여 하나의 스레드(Thread)로 그룹화되어 표시되므로, 전체 대화 흐름을 쉽게 파악할 수 있다.전제 조건 (Prerequisites)
Tracing 설정을 위해서는 다음 사항이 충족되어야 한다.
* Claude Code CLI가 설치되어 있어야 한다.
* 유효한 LangSmith API key가 필요하다.
* 명령줄 JSON 프로세서인 jq가 설치되어 있어야 한다.
* 이 가이드는 현재 macOS 환경만을 지원한다.
설정 단계 (Detailed Setup Steps)
~/.claude/hooks/stop_hook.sh 경로에 stop_hook.sh 스크립트 파일을 생성하고, 이 스크립트가 실행 가능하도록 chmod +x ~/.claude/hooks/stop_hook.sh 명령어를 사용하여 권한을 부여한다. 이 스크립트는 대화 기록을 처리하고 LangSmith로 데이터를 전송하는 로직을 포함한다.~/.claude/settings.json 파일에 전역 "Stop" hook을 구성한다. 이는 Claude Code가 응답을 생성할 때마다 stop_hook.sh 스크립트가 실행되도록 설정하는 것으로, 모든 Claude Code CLI project에 대해 Tracing을 쉽게 활성화할 수 있는 기반을 마련한다. 설정 예시는 다음과 같다:{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "bash ~/.claude/hooks/stop_hook.sh"
}
]
}
]
}
}.claude/settings.local.json 파일을 생성하거나 편집하여 다음 환경 변수들을 포함시킨다. 이 설정은 project별로 Tracing을 활성화하거나 비활성화하며, LangSmith API key와 project 이름을 지정한다. CC_LANGSMITH_DEBUG 변수를 true로 설정하여 상세 디버그 로깅을 활성화할 수 있다.{
"env": {
"TRACE_TO_LANGSMITH": "true",
"CC_LANGSMITH_API_KEY": "lsv2_pt_...",
"CC_LANGSMITH_PROJECT": "project-name",
"CC_LANGSMITH_DEBUG": "true"
}
}위 설정은 모든 Claude Code 세션에 대해 Tracing을 활성화하기 위해 전역
settings.json 파일에 추가할 수도 있다.설정 확인 및 문제 해결 (Verification and Troubleshooting)
* 설정 후 Claude Code 세션을 시작하고, Claude Code가 응답한 후 LangSmith에서 Trace가 나타나는지 확인한다.
* Trace가 나타나지 않을 경우: ~/.claude/state/hook.log 파일을 확인하여 hook이 실행되는지, 환경 변수가 올바른지, API key가 유효한지, LangSmith project가 존재하는지, 그리고 디버그 모드를 활성화하여 API 호출 상태를 확인한다.
* 권한 오류: stop_hook.sh 스크립트가 실행 가능한지 (chmod +x) 확인한다.
* 필수 명령어 누락: jq, curl, uuidgen과 같은 필수 명령어가 설치되어 있는지 확인한다.
* 로그 파일 크기 관리: hook 활동 로그는 ~/.claude/state/hook.log에 기록되며, 디버그 모드 활성화 시 파일 크기가 커질 수 있으므로 주기적으로 관리하거나 지울 수 있다.