프롬프트 파이프라인
CLI-JAW는 다층 파이프라인을 통해 시스템 프롬프트를 조립합니다: 정적 템플릿(A1/A2), 동적 주입(메모리, 오케스트레이션, 스킬), 디스크 캐싱(B.md/AGENTS.md), 그리고 CLI별 스폰 어댑터.
조립 순서
src/prompt/builder.ts의 getSystemPrompt() 함수는 다음 순서로 프롬프트를 조립합니다:
- A-1.md -- 시스템 규칙 (브라우저 제어, 메모리, 하트비트, 위임)
- A-2.md -- 사용자 설정 (아이덴티티, 바이브, 작업 디렉토리)
- 메모리 주입 -- 고급(프로필 + 소울 + 태스크 스냅샷) 또는 레거시 폴백
- 오케스트레이션 섹션 -- Employee 디스패치 규칙 + PABCD 가이드
- 하트비트 작업 --
heartbeat.json의 예약 작업 설명 - 스킬 섹션 -- 활성 스킬 인라인 + 사용 가능한 스킬 목록
- Vision-click 힌트 -- 데스크톱 자동화를 위한 Codex 전용 레거시 폴백
- 위임 규칙 -- CLI 서브에이전트 vs jaw employee 구분
정적 템플릿
A-1.md (시스템 규칙)
경로: ~/.cli-jaw/prompts/A-1.md. src/prompt/templates/a1-system.md(305줄)로 폴백합니다. 핵심 시스템 동작을 포함합니다: 브라우저 제어 규칙, 메모리/하트비트 지침, jaw employee vs CLI 서브에이전트 구분, 그리고 채널 전송 규칙.
A-2.md (사용자 설정)
경로: ~/.cli-jaw/prompts/A-2.md. 템플릿: a2-default.md(25줄). 아이덴티티, 사용자 환경설정, 바이브, 작업 디렉토리 힌트를 포함합니다. 파일이 없을 때만 생성되며 절대 덮어쓰지 않습니다.
동적 주입
메모리 주입
인덱스 준비 상태에 따라 두 가지 경로가 있습니다:
- 고급 경로 (
src/memory/injection.ts): 프로필 컨텍스트(800자) + Soul & Identity(1000자) + 태스크 스냅샷(2800자, 최대 4건) - 레거시 폴백: 세션 메모리(10000자 예산) +
MEMORY.md의 Core Memory(1500자)
주입은 역할에 따라 다릅니다: boss는 전체 스냅샷을 받고, employee/subagent는 축소된 프로필을 받으며, flush 역할은 메모리 주입이 없습니다.
오케스트레이션
하나 이상의 employee가 등록되어 있으면, orchestration.md 템플릿이 cli-jaw dispatch 사용 예시와 함께 주입됩니다. skills/dev-pabcd/SKILL.md가 존재하면 PABCD Orchestration Guide가 뒤따릅니다.
하트비트
~/.cli-jaw/heartbeat.json의 활성 하트비트 작업은 활성화 상태, 사람이 읽을 수 있는 스케줄, 프롬프트 미리보기와 함께 렌더링됩니다.
스킬
활성 스킬(~/.cli-jaw/skills/*/SKILL.md)은 인라인으로 렌더링됩니다. 레퍼런스 스킬(~/.cli-jaw/skills_ref/registry.json)은 탐색 가능한 목록으로 표시됩니다.
디스크 캐시 (B.md)
regenerateB()는 디스크용으로 시스템 프롬프트의 캐시 버전을 생성합니다:
| 출력 | 용도 |
|---|---|
~/.cli-jaw/prompts/B.md | 디버그 및 캐시 파일 |
{workDir}/AGENTS.md | Codex, Copilot, OpenCode가 자동 읽기 |
콘텐츠 해시를 확인하여 프롬프트가 실제로 변경되었을 때만 파일을 다시 씁니다. 이를 통해 재개 연속성을 유지합니다.
CLI별 스폰 입력
각 CLI 런타임은 프롬프트를 다른 방식으로 전달받습니다:
| CLI | 시스템 프롬프트 | 사용자 입력 |
|---|---|---|
| Claude | buildArgs(..., sysPrompt) | stdin: withHistoryPrompt(prompt, historyBlock) |
| Codex | AGENTS.md 자동 로드 | stdin: [User Message] 블록 |
| Gemini | GEMINI_SYSTEM_MD 임시파일 | 인자 수준 프롬프트 |
| AGY | 시스템 프롬프트 플래그 없음 | agy -p <prompt> |
| Cursor | AGENTS.md / CLAUDE.md 자동 로드 | 인자 수준 프롬프트 |
| Grok | CWD 인스트럭션 파일 | -p <prompt> |
| Copilot | ACP + cwd 인스트럭션 파일 | session/prompt() |
히스토리 블록
새 세션(재개가 아닌 경우)에서 buildHistoryBlock()은 최근 대화 컨텍스트를 앞에 추가합니다:
- 소스:
messagesDB,workingDir기준 스코프 - 제한: 8000자, 최대 10개 세션
- Compact 마커는 히스토리 스캔을 중지하고 트레이스 요약을 삽입합니다
[Recent Context]
assistant: Previous response summary...
user: Previous question...
---
[Current Message]
Your new prompt here
프롬프트 커스터마이징
~/.cli-jaw/prompts/A-2.md를 편집하여 아이덴티티, 환경설정, 작업 디렉토리를 커스터마이징할 수 있습니다. /prompt를 사용하여 현재 A2 내용을 미리 볼 수 있습니다. Web UI 설정 패널에서도 프롬프트 템플릿 편집기를 제공합니다.