컨텍스트 윈도우를 절약하며 긴 로그를 전달하는 방법
요약
AI 에이전트에게 대용량 로그 데이터를 전달할 때 컨텍스트 윈도우 압박 문제를 해결하는 방법을 제시합니다. 기존에는 수동으로 파일을 생성하고 절대 경로를 복사해야 했으나, `clipref`라는 명령어를 사용하여 클립보드의 내용을 파일로 저장하고 그 절대 경로를 자동으로 얻어 에이전트에게 전달할 수 있게 되었습니다.
핵심 포인트
- 대용량 로그 전송 시 컨텍스트 윈도우 절약 가능
- 클립보드 내용 -> 파일 저장 및 절대 경로 추출 자동화
- `clipref` 명령어로 간편하게 로그 파일을 생성하고 관리
- 파이프라인을 통해 명령어 실행 결과(로그)를 직접 파일로 저장할 수 있음
계기
AI 에이전트에게 로그와 같은 대량의 텍스트를 전달하고 싶었지만, 다운로드할 수 없거나 에이전트가 호출할 수 없는 것은 복사-붙여넣기로만 전달해야 했습니다.
하지만 그대로 전달하면 컨텍스트 윈도우(context window)가 압박되는 문제가 있었습니다.
로그를 파일로 전달하기
그래서 tmp/ 같은 곳에 Vim으로 임시 텍스트 파일을 만들고, 그곳에 로그를 붙여넣어 저장하는 방식으로 했습니다.
그리고 에이전트에게는 파일의 경로와 조사하고 싶은 내용을 전달하여 필요한 부분만 읽도록 지시했습니다.
로그: /absolute/path/to/startup-error.log
기동 실패 원인을 조사해 주세요.
우선 마지막 100줄을 확인하고, 에러가 있다면 그 전후의 줄도 읽어주세요.
파일 생성 과정의 번거로움
저장한 후에는 realpath와 pbcopy를 사용해 절대 경로를 복사했습니다.
(처음에는 pwd로 표시된 것을 복사했었는데, 비효율적이었습니다.)
realpath ./tmp/startup-error.log | pbcopy
이렇게 경로를 얻는 작업은 끝났지만, 파일 이름을 정하고, Vim을 열고, 로그를 붙여넣어 저장하는 수동 과정은 남아있었습니다.
로그를 전달할 때마다 같은 작업을 반복했기 때문에, 이 부분을 자동화할 수 없을지 고민했습니다.
클립보드에서 저장하는 명령어
그래서 명령어를 만들었습니다(만들게 되었습니다).
클립보드의 텍스트를 파일로 저장하고, 그 절대 경로를 다시 클립보드에 복사하는 방식입니다. 로그를 복사한 후 다음 명령어를 실행합니다.
clipref --clipboard --name startup-error.log
저장된 파일의 절대 경로는 터미널에도 표시됩니다.
이 방법을 사용하면 파일 생성과 경로 획득이 한 번에 끝납니다. 그 후 복사된 경로를 에이전트에게 붙여넣기만 하면 됩니다.
clipref 자체에는 로그 요약이나 토큰 수 측정 기능은 없습니다.

더미 로그를 사용하여 작업 화면을 재구성한 데모입니다. 경로는 예시용입니다.
설치
이 글의 명령어 예시는 v0.2.0 버전을 대상으로 합니다.
bash -o pipefail -c 'curl -fsSL https://raw.githubusercontent.com/rrhaya/clipref/v0.2.0/install.sh | bash'
설치 스크립트는 clipref를 ~/.local/bin에 배치합니다. 쉘 설정 파일은 변경하지 않습니다.
만약 ~/.local/bin이 아직 PATH에 포함되어 있지 않다면, 다음 줄을 ~/.zshrc에 추가하고 새 터미널을 열어주세요.
export PATH="$HOME/.local/bin:$PATH"
clipref --version
입력 원본 지정
--clipboard는 클립보드에서 읽도록 지정하는 옵션입니다. 일반 터미널에서는 clipref만으로도 클립보드를 읽을 수 있습니다. 파이프를 통해 전달한 경우에는 그 텍스트를 표준 입력(standard input)으로부터 읽어 저장합니다.
your-command 2>&1 | clipref --name command-output.log
your-command는 로그를 얻고 싶은 명령어에 대체해 주세요.
저장 위치 지정
워크스페이스 내부에 두는 것이 더 편리하다면, 저장 위치를 지정할 수 있습니다.
mkdir -p ./tmp
clipref --clipboard --dir ./tmp --name startup-error.log
./tmp 내부의 로그를 Git으로 관리하지 않을 경우, 프로젝트 방침에 맞춰 .gitignore로 제외합니다. 에이전트 측에 접근 제한이 있는 경우에는 그 범위 내의 저장 위치를 사용합니다.
저장 파일과 설정
초기 상태에서는 macOS의 TMPDIR을 사용합니다. 설정되지 않았다면 /tmp입니다. 그 아래에 실행마다 다른 디렉토리를 생성하므로, 같은 이름을 지정해도 이전 파일이 덮어쓰여지지 않습니다.
파일은 600 권한으로, 저장용 디렉토리는 700 권한으로 생성됩니다. 입력의 공백이나 개행(newline)은 그대로 저장되며, 확장자를 지정하더라도 내용 변환은 하지 않습니다.
저장된 파일은 clipref가 자동으로 삭제하지 않습니다. 다만, 임시 디렉터리의 파일은 OS에 의해 삭제될 수 있습니다. 남겨두고 싶은 로그는 --dir
으로 다른 위치를 지정합니다.
매번 저장할 경로와 확장자는 ~/.config/clipref/config에도 작성할 수 있습니다.
dir=~/logs
ext ext=log
~/logs는 미리 생성해야 합니다. 설정은 key=value 형식이며, 셸 스크립트로 실행되지 않습니다. 커맨드라인의 지정이 설정 파일보다 우선합니다.
최근 경로를 다시 복사하고 싶을 때는 히스토리를 사용할 수 있습니다.
clipref list --limit 5
clipref last
히스토리에 기록되는 것은 경로만입니다. 로그 내용은 히스토리로 복제되지 않습니다.
macOS 표준 Bash와 커맨드로 작동합니다. 설치 프로그램은 GitHub에 접근하지만, 설치 후의 clipref 자체는 네트워크 통신을 하지 않습니다. 로그를 외부로 전송하는 기능도 없습니다.
소스 코드
이번에 사용한 것은 GitHub에 소스 등을 올려두었습니다.
마찬가지로 로그를 파일로 전달하고 있는 분들은 한번 사용해 보세요.
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기