설치 및 빠른 시작
이 튜토리얼을 마치면 무엇을 할 수 있나요
- ✅ 5분 만에 DCP 플러그인 설치 완료
- ✅ 플러그인을 구성하고 설치가 성공했는지 확인
- ✅ 첫 번째 자동 가지치기 효과 확인
현재 겪고 있는 문제
OpenCode를 오래 사용하다 보면 대화가 점점 길어집니다:
- AI가 동일한 파일을 여러 번 반복해서 읽음
- 도구 호출의 오류 메시지가 컨텍스트를 가득 채움
- 매 대화마다 많은 토큰을 소모함
- 대화가 길어질수록 AI 응답이 느려짐
대화에서 중복된 내용을 자동으로 정리하고 싶지만, 수동으로 하고 싶지는 않습니다.
핵심 개념
**DCP (Dynamic Context Pruning)**는 OpenCode 플러그인으로, 대화 기록에서 중복된 도구 호출을 자동으로 제거하여 토큰 소모를 줄입니다.
동작 방식:
- 자동 감지: 메시지를 보낼 때마다 자동으로 대화 기록을 분석
- 스마트 정리: 중복된 도구 호출, 만료된 오류, 덮어쓴 내용 제거
- AI 기반: AI가
discard와extract도구를 적극적으로 호출하여 컨텍스트 최적화 - 투명하고 제어 가능:
/dcp명령어로 가지치기 통계를 확인하고 수동으로 정리 실행
핵심 장점
- 제로 비용: 자동 전략은 LLM 호출이 필요 없음
- 제로 구성: 설치 후 바로 사용 가능, 기본 설정이 이미 최적화됨
- 제로 위험: LLM에 보내는 컨텍스트만 수정, 대화 기록에는 영향 없음
🎒 시작 전 준비 사항
설치를 시작하기 전에 다음 사항을 확인하세요:
- [ ] OpenCode가 설치되어 있음 (플러그인 기능 지원)
- [ ] OpenCode 설정 파일을 편집하는 방법을 알고 있음
- [ ] 기본적인 JSONC 구문을 이해함 (주석이 있는 JSON)
중요한 안내 사항
DCP는 LLM에 보내는 컨텍스트 내용을 수정하지만, 대화 기록에는 영향을 주지 않습니다. 언제든지 설정에서 플러그인을 비활성화할 수 있습니다.
따라해 보세요
1단계: OpenCode 설정 파일 편집
이유 OpenCode 설정에서 DCP 플러그인을 선언해야 OpenCode가 시작할 때 자동으로 로드합니다.
OpenCode 설정 파일 opencode.jsonc를 열고 plugin 필드에 DCP를 추가하세요:
// opencode.jsonc
{
"plugin": ["@tarquinen/opencode-dcp@latest"],
}확인해야 할 사항: 설정 파일에 이미 다른 플러그인이 있으면(있는 경우), 배열 끝에 DCP를 추가하면 됩니다.
안내
@latest 태그를 사용하면 OpenCode를 시작할 때마다 자동으로 최신 버전을 확인하고 가져옵니다.
2단계: OpenCode 다시 시작
이유 플러그인 설정을 수정한 후에는 적용을 위해 다시 시작해야 합니다.
OpenCode를 완전히 종료한 후 다시 시작하세요.
확인해야 할 사항: OpenCode가 정상적으로 시작되고 오류 메시지가 없는지 확인하세요.
3단계: 플러그인 설치 확인
이유 DCP 플러그인이 올바르게 로드되었는지 확인하고 기본 설정을 확인합니다.
OpenCode 대화창에 다음을 입력하세요:
/dcp확인해야 할 사항: DCP 명령어 도움말 정보가 표시되어 플러그인이 성공적으로 설치되었음을 나타냅니다.
╭───────────────────────────────────────────────────────────╮
│ DCP Commands │
╰───────────────────────────────────────────────────────────╯
/dcp context Show token usage breakdown for current session
/dcp stats Show DCP pruning statistics
/dcp sweep [n] Prune tools since last user message, or last n tools4단계: 기본 설정 확인
이유 DCP의 기본 설정을 이해하고 플러그인이 예상대로 작동하는지 확인합니다.
DCP는 처음 실행할 때 자동으로 설정 파일을 생성합니다:
# 전역 설정 파일 보기
cat ~/.config/opencode/dcp.jsonc확인해야 할 사항: 설정 파일이 생성되어 있고 초기에 $schema 필드만 포함되어 있는지 확인하세요:
{
"$schema": "https://raw.githubusercontent.com/Opencode-DCP/opencode-dynamic-context-pruning/master/dcp.schema.json"
}설정 파일은 초기에 $schema 필드만 포함하며, 다른 모든 구성 항목은 코드의 기본값을 사용하므로 수동으로 구성하지 않아도 사용할 수 있습니다.
기본 설정 설명
DCP의 코드 기본값은 다음과 같습니다(설정 파일에 쓸 필요 없음):
- deduplication: 자동 중복 제거, 중복된 도구 호출 제거
- purgeErrors: 자동 오류 정리, 4턴 전의 오류 도구 입력 제거
- discard/extract: AI가 호출할 수 있는 가지치기 도구
- pruneNotification: 자세한 가지치기 알림 표시
사용자 지정 구성이 필요한 경우 이러한 필드를 수동으로 추가할 수 있습니다. 자세한 구성 설명은 설정 전체 보기를 참조하세요.
5단계: 자동 가지치기 효과 경험
이유 실제로 DCP를 사용하고 자동 가지치기 효과를 확인합니다.
OpenCode에서 대화를 진행하여 AI가 동일한 파일을 여러 번 읽거나 일부 실패하는 도구 호출을 실행하도록 합니다.
확인해야 할 사항:
- 메시지를 보낼 때마다 DCP가 자동으로 대화 기록을 분석하는지 확인
- 중복된 도구 호출이 있으면 DCP가 자동으로 정리하는지 확인
- AI가 응답한 후
pruneNotification구성에 따라 가지치기 알림을 볼 수 있음
가지치기 알림 예시:
▣ DCP | ~12.5K tokens saved total
▣ Pruning (~12.5K tokens)
→ read: src/config.ts
→ write: package.json/dcp context를 입력하여 현재 세션의 토큰 사용 현황을 확인하세요:
Session Context Breakdown:
──────────────────────────────────────────────────────────
System 15.2% │████████████████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│ 25.1K tokens
User 5.1% │████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│ 8.4K tokens
Assistant 35.8% │██████████████████████████████████████▒▒▒▒▒▒▒│ 59.2K tokens
Tools (45) 43.9% │████████████████████████████████████████████████│ 72.6K tokens
──────────────────────────────────────────────────────────
Summary:
Pruned: 12 tools (~15.2K tokens)
Current context: ~165.3K tokens
Without DCP: ~180.5K tokens검사 포인트 ✅
위의 단계를 완료한 후 다음 사항을 확인하세요:
- [ ]
opencode.jsonc에 DCP 플러그인이 추가됨 - [ ] OpenCode가 재시작 후 정상적으로 실행됨
- [ ]
/dcp명령어가 도움말 정보를 표시함 - [ ] 설정 파일
~/.config/opencode/dcp.jsonc가 생성됨 - [ ] 대화에서 가지치기 알림이 보이거나
/dcp context로 가지치기 통계가 표시됨
어떤 단계가 실패한 경우:
opencode.jsonc구문이 올바른지 확인하세요 (JSONC 형식)- 플러그인 로딩 오류가 있는지 OpenCode 로그를 확인하세요
- OpenCode 버전이 플러그인 기능을 지원하는지 확인하세요
함정 조심하기
문제 1: 플러그인이 작동하지 않음
증상: 구성이 추가되었지만 가지치기 효과가 보이지 않음
원인: OpenCode가 다시 시작되지 않았거나 구성 파일 경로가 잘못됨
해결책:
- OpenCode를 완전히 종료한 후 다시 시작하세요
opencode.jsonc의 위치가 올바른지 확인하세요- 로그 보기:
~/.config/opencode/logs/dcp/daily/디렉터리의 로그 파일
문제 2: 구성 파일이 생성되지 않음
증상: ~/.config/opencode/dcp.jsonc가 존재하지 않음
원인: OpenCode가 DCP 플러그인을 호출하지 않았거나 구성 디렉터리 권한 문제
해결책:
- OpenCode가 다시 시작되었는지 확인하세요
- 구성 디렉터리를 수동으로 생성하세요:
mkdir -p ~/.config/opencode opencode.jsonc에서 플러그인 이름이 올바른지 확인하세요:@tarquinen/opencode-dcp@latest
문제 3: 가지치기 알림이 표시되지 않음
증상: 가지치기 알림이 보이지 않지만 /dcp stats에는 가지치기 통계가 있음
원인: pruneNotification 구성이 "off" 또는 "minimal"로 설정됨
해결책: 구성 파일을 수정하세요:
"pruneNotification": "detailed" // 또는 "minimal"이번 수업 요약
DCP 플러그인 설치는 매우 간단합니다:
opencode.jsonc에 플러그인 추가- OpenCode 재시작
/dcp명령어로 설치 확인- 기본 설정으로 바로 사용 가능, 추가 조정 불필요
DCP 기본 활성화 기능:
- ✅ 자동 중복 제거 전략 (중복 도구 호출 제거)
- ✅ 오류 정리 전략 (만료된 오류 입력 정리)
- ✅ AI 기반 도구 (
discard및extract) - ✅ 자세한 가지치기 알림
다음 단계: 사용자 정의 구성 방법을 알아보고, 다양한 시나리오 요구에 맞게 가지치기 전략을 조정하세요.
다음 수업 예고
다음 수업에서는 **설정 전체 보기**를 학습합니다
배울 내용:
- 다중 계층 구성 시스템 (전역, 환경 변수, 프로젝트 수준)
- 모든 구성 항목의 역할과 권장 설정
- 회차 보호, 보호된 도구, 보호된 파일 패턴
- 다양한 가지치기 전략 활성화/비활성화 방법
부록: 소스 코드 참조
소스 코드 위치 보기
업데이트 시간: 2026-01-23
| 기능 | 파일 경로 | 줄 번호 |
|---|---|---|
| 플러그인 진입점 | index.ts | 12-102 |
| 설정 관리 | lib/config.ts | 669-794 |
| 명령어 처리 | lib/commands/help.ts | 1-40 |
| 토큰 계산 | lib/commands/context.ts | 68-174 |
주요 상수:
MAX_TOOL_CACHE_SIZE = 1000: 도구 캐시 최대 항목 수
주요 함수:
Plugin(): 플러그인 등록 및 후크 설정getConfig(): 다중 계층 설정 로드 및 병합handleContextCommand(): 현재 세션 토큰 사용 분석