개요
OpenCode에서 AI 코딩 작업을 진행할 때, 파일 읽기/쓰기, 명령어 실행, 툴 호출 등 모든 작업을 프라이머리 에이전트가 직접 수행하기 때문에 세션의 컨텍스트가 빠르게 비대해집니다.
본 글에서는 서브 에이전트로 위임(delegation)하는 정책을 강제하는 플러그인과, 상세 절차를 필요할 때만 로드하는 스킬 그룹을 결합하여 프라이머리 세션의 컨텍스트 비대화를 방지하는 방법을 소개합니다.
배경
OpenCode에서는 프라이머리 에이전트가 직접 파일 탐색이나 코드 검색을 수행하면, 그 툴 실행 결과가 모두 프라이머리 세션의 컨텍스트에 축적됩니다. 긴 절차를 AGENTS.md에 작성해 두면, 매 세션마다 instructions로 로드되기 때문에 이 역시 컨텍스트를 압박합니다.
그래서 다음 3가지 레이어에서 역할 분담을 통해 대책을 마련합니다.
| 레이어 | 담당 | 구현 |
|---|
| 플러그인 | 위임 정책 강제 | prompt / context 후크 |
| 스킬 | 태스크별 상세 절차 | 온디맨드 로딩 |
| | 간결한 베이스라인 |
플러그인은 '위임 강제', 스킬은 '언제 위임할지 판단 기준', AGENTS.md는 '간결한 베이스라인 + 스킬 인덱스'를 담당합니다.
위임 강제 플러그인
.opencode/plugins/delegate/index.ts 파일을 생성합니다. 이 코드는 프로젝트 고유의 수정이 필요 없으며, 모든 프로젝트에서 그대로 사용할 수 있습니다.
import { Plugin } from "@opencode/plugin"
// Short, always-on delegation policy. Keep this text compact: the prompt hook
// appends it to every incoming user prompt, so it occupies context on every
...
핵심은 다음 2가지입니다.
: 모든 사용자 프롬프트의 끝에 위임 정책을 주입합니다. 모델이 매번 이 정책을 보기 때문에, 위임을 무시하기 어려워집니다 (prompt 후크)
: 에이전트 루프의 시스템 지침에도 동일한 정책을 추가합니다 (context 후크)
참고로, 정책 텍스트는 프롬프트에 매번 주입되므로, 짧고 간결하게 유지하는 것이 중요합니다. 상세 절차는 여기에 적지 않고 스킬에게 맡깁니다.
스킬화 + AGENTS.md의 슬림화
플러그인 생성 후, 새로운 세션에서 OpenCode에 다음 프롬프트를 던져서, AGENTS.md의 긴 절차 섹션을 .opencode/skills/ 아래의 스킬로 옮깁니다.
AGENTS.md の長い手順セクションを .opencode/skills/ 以下のスキルに移設してください。
- 手順セクション(開発ワークフロー、命名規則、ツールの使い方、ログ確認など)を
SKILL.md 形式のスキルに分割する
...
내용을 프롬프트에 붙여넣을 필요는 없습니다. OpenCode가 AGENTS.md를 읽고 판단합니다.
스킬 분할은 작업 종류별로 진행합니다. 예를 들어 '플러그인 개발 절차', '명명 규칙', 'MCP 툴 사용법', '로그 확인'처럼, 1 작업 종류 = 1 스킬로 합니다.
AGENTS.md는 긴 절차를 삭제하고, Core Tech Stack / 환경 변수 / 스킬 인덱스 / 제약만 남긴 베이스라인으로 간소화합니다.
동작 확인
새로운 세션을 시작합니다 (플러그인은 다음 세션 시작 시 로드됨) - 프롬프트 끝에 [Delegation policy] 텍스트가 추가되는지 확인 -
서브 에이전트로부터의 툴 실행을 확인합니다 (예: MCP 툴의 ping /status를 서브 에이전트를 통해 요청하고, 결과가 반환되는지 확인) - AGENTS.md에서 사라진 절차가 해당 작업 시 스킬을 통해 읽히는지 확인
효과
- 베이스라인 축소: 매 세션에 주입되는 instructions에서 긴 절차가 사라지고, 스킬 인덱스 테이블 몇 줄로 대체됨.
- 온디맨드 로딩: 절차는 해당 작업 시점에 스킬을 통해 읽어지기만 함.
- 위임 누락 방지: 플러그인이 프롬프트와 시스템 지시 양쪽에 위임 정책을 적용하기 때문에, 모델이 위임을 무시하기 어려움.
위임 판단 기준
플러그인의 정책 외에도, 모델이 위임할지 여부를 판단하는 기준은 다음과 같습니다.
| 작업 | 위임 | 직접 실행 |
|---|
| 읽기량이 ≫ 쓰기량, 정보 미획득 (파일 탐색, 조사, 일괄 로딩) | ○ | |
| 정보를 이미 파악했거나, 쓰기가 본체인 경우 (편집, 최종 요약, 소규모 검증) | ○ | |
보충
compaction 설정 (선택 사항)
위임 누락이 발생하더라도 자동으로 요약으로 대체되는 안전장치로 opencode.json(c)에 compaction 설정을 추가할 수 있습니다.
{
"compaction": {
"auto": true,
...
}
글로벌 등록 옵션
~/.config/opencode/opencode.json(c)의 plugins 배열에 플러그인을 등록하면 모든 프로젝트에 한 번에 적용할 수 있습니다. 다만, ~/.config는 컨테이너 내부이므로 컨테이너 재빌드 시 사라진다는 점에 유의해야 합니다. 영속화하려면 dotfiles 리포지토리 관리 + devcontainer의 post-create-command.sh에서 복원이 필요합니다.
devcontainer (재빌드 포함)에서 사용할 경우, **개별 리포지토리로 복사(Git 관리 하에)**하는 것이 확실합니다.
요약
- 플러그인으로 위임 정책을 강제하여 주(Primary) 세션의 컨텍스트 비대화를 방지함.
- 상세 절차는 스킬로 이전하고, 온디맨드 방식으로 로딩함.
- AGENTS.md를 간결한 베이스라인 + 스킬 인덱스로 슬림화함.
위임 정책 텍스트 자체도 매번 컨텍스트를 소모하므로 '짧게 유지'하는 것과, 상세 절차를 어디까지 스킬로 분리할지는 프로젝트 고유의 판단이 필요한 운영상의 포인트입니다.
Discussion