전 로컬 LLM 관통 '이드' persona substrate 의 Document Server 측 빌드(W2~W4). 설계 = PKM eid-persona-substrate(r1~r3 수렴) / impl = eid-persona-impl. W2 — compose + 표면 배선: - app/eid/compose.py: persona→rules→overlay→task 단일 system 문자열 + 정적 ROUTE_MAP (런타임 sniffing 아님) + rules 부재 fail-loud · persona 부재 quiet · overflow fail-loud. - 자유-prose 3 표면(react_ask·study_subject_note·study_question_explanation) 중복 정체성· generic 정책 trim + compose 배선(AIClient 에 additive system 파라미터). 도메인 calibration 보존. - STRICT JSON 기계류(briefing_comparative·digest_topic)는 persona-ZERO 동결(불변식 #3). - app/prompts/substrate/: persona(외부 컴파일 산출물 vendor) + rules(생성 가드 서브셋) + overlay 5. W3 — migration + 워커 + study_diagnosis: - migration 301~305: eid_* append-only 원장(약점/복습초안/회고) + approval_requests(가변 큐) + 일정 파생뷰 2. - app/workers/study_weakness.py: study_question_progress.pattern_state 집계로 약점 derived 산출 (LLM 0) + bounded tier(watch/review/focus). nightly cron. - study_diagnosis 표면: 최신 스냅샷을 코치 언어로 번역(약점 판정은 코드, LLM 은 블록 값만 인용). W4-1 — egress 코드층 박탈: - app/eid/ai.py EidAIClient: 이드 표면 = call_primary(내부 MLX) only. 외부 LLM fallback 경로 구조적 봉쇄(call_fallback raise · 자동 fallback 제거 · 외부 endpoint 차단). egress 워커는 분리 유지. load-bearing 정정 3(환경 grounding 강제, 설계 회귀 아님): - rules = 운영 ruleset 전체 → 생성 가드 서브셋(HTML 산출물 룰이 study task 와 충돌). - append-only = REVOKE → CREATE RULE DO INSTEAD NOTHING(단일 owner role 은 REVOKE 무효 + migration 검증기가 plpgsql BEGIN 거부) + actor/source_* NOT NULL 스탬프. - 이드 LLM 봉쇄 = path discipline → EidAIClient 구조화. 검증: eid 순수 단위테스트 30 통과 + py_compile + migration 검증기 모사 + egress 적대감사 COMPLETE. DB/LLM/httpx 의존 테스트(append-only RULE·EidAIClient·E2E)는 staging(Docker) 가동. W4-2 네트워크 belt 은 조건부 보류(코드층 1차 충분, P0-3② 원격 실측 후 hard-gate 시 승격). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2.5 KiB
app/prompts/substrate/ — 이드 substrate (vendored)
이드(eid) persona substrate compose 의 입력 아티팩트. app/eid/compose.py 가 읽는다.
파일
| 파일 | 출처 | 용도 |
|---|---|---|
persona.full.md |
claude-config knowledge/current-persona.md (생성물) |
26B/27B 경로 persona(WHO/HOW voice) |
persona.compact.md |
claude-config knowledge/current-persona.compact.md |
4B 경로 persona(미래 표면용) |
rules.md |
claude-config current-workflow-rules.md 의 생성 서브셋(큐레이션, verbatim 아님) |
생성 가드(injection·conservative·no-emoji) — compose 의 명시 항 |
overlays/*.txt |
PKM plans/2026-06-05-eid-persona-substrate-plan.html §2 |
기능별 행동요령(delta-only) |
동기화 (vendored — 직접 편집 금지)
persona.*.md 는 claude-config 컴파일 생성물의 verbatim 사본이다. 원본 수정 =
claude-config config/ops/persona.yml 고치고 bin/compile-persona 재실행 후 재복사:
CC=~/Documents/code/claude-config/knowledge
cp -p "$CC/current-persona.md" app/prompts/substrate/persona.full.md
cp -p "$CC/current-persona.compact.md" app/prompts/substrate/persona.compact.md
rules.md 는 verbatim 아님 — 생성 표면 가드 서브셋 큐레이션이다(운영룰 제외, rules.md 헤더
참조). claude-config 의 injection/conservative/no-emoji 룰이 바뀌면 rules.md 의 해당 줄을 손으로
맞춘다. 장기 정합 권고: claude-config compile-rules 가 'generation-surface' 태그 서브셋을
별도 방출(current-workflow-rules.generation.md)하도록 만들고 그걸 verbatim vendor → 손 큐레이션
divergence 제거 (W1 follow-up).
1회 캐시 불변식: compose 는
lru_cache라 sync 후 DS 프로세스 재시작(또는compose.clear_cache()) 전에는 반영 안 됨. 1인 운영 수용 사항(project_eid_persona_substrate 의식적 수용).
overlay (delta-only)
overlay 는 base persona/rules 가 선언한 것(evidence-first·금지·이모지·injection 방어 등)을
재선언하지 않는다. injection 입력방어는 공통 rules(rules.md)로 이관됐으므로(불변식 7,
never-dropped) overlay 에는 없다 — 기능 고유 delta 만.
ROUTE_MAP(app/eid/compose.py) 가 surface → overlay 를 정적 매핑한다. 현재 자유-prose 표면
(react_ask·study_subject_note·study_question_explanation)은 기능 overlay 없이 persona+rules+task.
overlay 는 미래 active eid 표면(study_diagnosis·recap_brief·schedule_brief 등, W3+)이 소비한다.