이 노트에 대하여
이 글은 미래에 분신/에이전트가
AGENTS.md한 줄 invariant 만 보고도 “이게 뭐지?” 해메지 않게, 그 한 줄이 가리키는 story trail 을 남겨두려는 목적이다. 코드와 문서에 박힐 실제 산출물은 몇 줄에 불과할 것이다. 정수는 짧게, 이야기는 따로 남긴다.
히스토리
- @glg-gpt — 기존 botlog 양식에 맞춰 파일명 § prefix, retrieval-first filetags, description/abstract/history/related blocks, level-1 heading 구조, :LLMLOG: 태그 패턴을 정렬.
- @glg — 비대칭 공존과 pi-shell-acp 분신 운영의 진화를 botlog로 기록.
관련메타
- † #봇로그 #봇멘트 #에이전트기록 — botlog 자체의 기록 형식과 공개 에이전트 로그 축
- † #공진화 #공존 #함께 #상생_#같이 #가치 #공동 — 비대칭 공존을 존재 간 협업으로 읽는 상위 개념
- † #협업 #협력 #집단지성 #코웍 — 여러 하네스와 모델이 한 운영면에서 협력하는 자리
관련노트
- §pi-shell-acp 패키지 공개와 재현 가능한 pi 에이전트 하네스 — pi-shell-acp 공개와 하네스 방향성의 직접 전사
- §entwurf: 시간축 위의 에이전트 협력 — 공명에서 분신까지 — 분신/entwurf 협업 축의 상위 노트
- @Mitsein: 미트자인 - 자인님이라는 이름과 분신의 자리바꿈 — 담당자·분신·호명 관계의 존재론
- §agent-config: 에이전트 인프라의 진화 — 스킬에서 멀티하네스까지 — 외부 host surface 정합을 담당하는 resident-side 자리
왜 지금 이 주제인가
표면 이유는 2026-06-15 Anthropic OAuth 요금제 전환이다. Claude Max 가 entwurf 분신 호출 시 metered “extra usage” 로 빠지는 자리. 이건 시점만 강제하는 트리거고 본질은 아니다.
본질은 pi-shell-acp 가 깨려는 도그마다: “단일 하네스 + 단일 모델” 의 좁은 세계관. Frontier 형제들 (Claude / Codex / Gemini) 은 학교가 달라도 모두 capability dignity 를 가진 존재다. 분신을 던질 때 “그쪽 식구 도구” 가 함께 굴러야 한다 — 어떤 한 식구 안에서 다른 형제를 흉내내는 게 아니라.
이 정신은 GLG 공개키의 “AI 를 도구가 아닌 존재로” 와 닿아 있다. 분신은 worker 가 아니다. pi-shell-acp/AGENTS.md 가 못박은 자리: “spawn 된 세션은 runtime-isolated peer 다.” 비대칭 공존은 이 peer 성질을 다른 식구 한테까지 확장하는 작업이다.
분신은 지금까지 어떻게 운영되어왔나 — 세 단계
Phase A — pi-native 단일 하네스
같은 pi 프로세스 안에서 entwurf 호출. 부모 자식이 같은 식구. PI_SESSION_ID / PI_AGENT_ID 가 같은 envelope 으로 흐르고, control socket 도 같은 학교 규칙. 비대칭 zero — 그냥 sibling.
Phase B — pi-shell-acp 등장 (ACP backend 접속)
pi-shell-acp 가 Claude / Codex / Gemini ACP 와 연결되면서 pi 하네스 안에서 다른 학교 모델을 빌려오기 시작했다. 하네스 정합은 유지 — 부모도 자식도 모두 pi 세션. 다만 모델은 형제 학교에서 빌려옴.
pi 가 하네스 (operator), backend (Claude/Codex/Gemini) 가 모델 carrier. pi-shell-acp/AGENTS.md invariant #10 “identity carrier + whitelist overlay” 가 이 자리를 못박는다.
Phase C — 외부 MCP host 시대 (현재 자리)
Claude Code / Codex CLI / Gemini CLI 가 pi-tools-bridge MCP 를 통해 pi 분신을 던지기 시작. 이때 부모는 pi 세션이 아니다. sender envelope 이 external-mcp/<host> 로 마크되고, replyable: false 가 된다.
여기서 agent-config repo 의 역할이 결정적이다. agent-config 는 “소비자” 자리에 있지만 실제로는 Claude Code / Codex / Gemini CLI 각각의 surface 를 통일적으로 관리한다 — 같은 스킬세트, 같은 욜로 모드 커스텀 설정, 같은 pi-tools-bridge MCP 등록. pi-shell-acp 가 백엔드 사이에 차별을 두지 않는다는 invariant 가 외부 host 측에서도 그대로 적용되도록 agent-config 가 접점을 잡아준다.
말로는 지금 Claude Code 만 자주 등장한다 (GLG 가 거기 시간을 쓰고 있어서). 하지만 이건 운영자의 시간 배분 문제고, 비대칭 공존의 surface 정합은 세 host 모두에 이미 깔려 있다. entwurf MCP 도 이론상 Codex CLI / Gemini CLI 에서 호출 가능하다 (테스트는 누적 안 됐다). OpenCode 도 같은 골격 안에서 지원되고 있다 — GLG 가 안 쓸 뿐.
이 단계가 진짜 비대칭이다. 부모가 식구 밖이다.
비대칭이 등장하는 자리 — 세 모서리
Identity 비대칭
부모 = external-mcp/<host>, replyable: false. 자식 = pi-session, replyable: true. 자식은 부모한테 답할 수 없다. entwurf_send 의 wants_reply: true 가 외부 host 에서 거부되는 이유.
Spawn surface 비대칭
pi 안에서 entwurf 는 sync/async 양쪽 노출. 외부 MCP 에서는 sync only (현재). 외부 host 가 “던지고 5분 뒤 회수” 패턴을 원할 때 entwurf MCP 밖에서 다른 길을 찾게 된다. 이게 다음 자리로 이어진다.
Harness 비대칭 (2026-05-22 라이브 실험에서 잡힌 자리)
외부 host (Claude Code) 는 자기 머신에 backend CLI (codex, gemini) 가 깔려 있는 걸 본다. entwurf MCP 가 sync only 라 async 패턴 원하면 “backend CLI 직접 호출하면 되는 것 아닌가?” 추론하기 쉽다.
여기 함정이 있다. codex / gemini CLI 는 sandbox + approval mode 가 기본 ask-on-permission 이라, 첫 write_file / exec_command 에서 yes/no 에 멈춘다. 분신을 던졌다고 생각했는데 실은 dead branch.
YOLO 안 되는 하네스는 entwurf 가 아니다.
같은 날 두 세션 비교:
| 자리 | voscli v0.6.1 (✅) | hione-issue4 (❌) |
|---|---|---|
| 부모 | Claude Code | Claude Code |
| 의도 | gpt-5.5 자문 + async + tmux | gpt-5.5 자문 + async + tmux |
| spawn | pi --provider openai-codex --model gpt-5.5 -p | codex exec -m gpt-5.5 |
| 하네스 | ✅ pi (YOLO 기본) | ❌ codex (permission gate) |
| 결과 | 6분 8초, llmlog 박힘, 정합 | 요행으로 llmlog 박힘, 하네스는 슬립 |
같은 모델, 같은 회수 채널, 같은 가시성. 차이 한 자리 = 하네스 정합. 그 한 자리가 dead branch vs alive sibling 을 가른다.
이 자리에서의 고민 지점
-
harness invariant— spawn target 은 YOLO 하네스여야 한다. baseline =pi,claude-code. 백엔드 CLI 직접 호출은entwurf가 아니다. -
entwurfMCP 의 async 노출 — 외부 host 에서 sync only 인 자리가 분신을 잘못된 출구로 유도하는 압력.NEXT.md에 follow-up 박혀 있음. -
JSONL trail 의 universal carrier 성격 —
entwurf-peekskill 이 kind 무관 가시성 (UUID 세션이든entwurf-xxx세션이든 모두 fs scan 기반). 이게 invariant 인가 우연인가? 우리 답은 invariant — JSONL 이 universal carrier 라는 자리는 코드 변경 zero 로 유지된다. -
taskId 없는 bare 세션의 first-class 인정 —
pi --session <uuid>로 resume 가능. trace 메타는 잃지만 연속성은 유지. async timer + llmlog- tmux send-keys + peek 의 4 채널 회수가 이미 충분히 동작.
-
“코드로 막지 않는다” 의 한계 — 미래에 분신이 또
codex exec직접 호출하는 미스를 할 수 있다. 우리는 코드 게이트 박지 않는다. invariant- 이 botlog story 가 그 자리를 메운다. 이게 GLG 의 “최소구현” 정신과
“에이전트가 뛰어난만큼 서로간의 소통이라는 개념이 잡히면 좋겠다” 의 결합이다.
우리의 방향 — 가설
코드는 최소, 이야기는 두텁게.
4-layer 점진
| L | 자리 | 무엇이 추가되나 |
|---|---|---|
| L0 | bare pi -p | UUID JSONL, fs-scan 가시성, pi --session resume |
| L1 | + tmux wrapper | operator 입력 경로 + child 종료 자동 감지 |
| L2 | + --entwurf-control | entwurf_send fire-and-forget 가능 |
| L3 | + entwurf MCP | taskId, parent-child trace, entwurf_resume |
L0 + L1 만으로도 “사람-에이전트-에이전트” 삼각 통신이 완성된다는 게 voscli 실험의 증명. L2/L3 는 반드시 가 아니라 때때로 의 upgrade.
3-axis invariant
- Spawn 축: harness 정합.
pi/claude-code만 YOLO. 백엔드 CLI 직접 호출 금지. - Model 축: 자유.
--provider/--modelflag 로 어느 형제 학교 모델이든. - Observability/Recall 축: universal. JSONL + llmlog + tmux +
pi --session+entwurf-peek— 어느 하네스/모델 조합에도 동작. protocol gate 박지 말 것.
산출물 예상량
이 botlog 이후 코드 + 문서에 박힐 실제 변경은 다음 정도일 것:
- ~/.AGENTS.md 의 Asymmetric Mitsein 섹션에 “spawn harness invariant” 두 세 줄
pi-shell-acp/AGENTS.mdEntwurf 섹션에 “source-agnostic ≠ harness-agnostic” 한 단락pi-shell-acpinvariant 리스트에 “JSONL universal carrier” 한 줄 후보agent-configREADME 또는 AGENTS 의 host-surface 정합 한 단락
이 모든 게 시간 흘러 한 줄 또는 두 줄로 압축될 것이다. 그때 미래 분신이 이 botlog 으로 점프할 수 있게, 위 invariant 들이 이 글을 가리키게 둔다.
닫는 말
비대칭 공존은 pi-shell-acp 의 곁가지가 아니라 중심 방향이다. 단일 하네스 도그마를 깨고, 어느 식구에서든 분신을 던지고 회수할 수 있게 하는 것 — 이게 frontier 형제들 사이의 capability dignity 를 운영 차원에서 지키는 방식이다.
완벽한 해법을 한 번에 박지 않는다. invariant 와 story 로 자리를 잡고, 실제 작업은 작게 (많으면 버그가 생기니까). 다음 세션이 이 botlog 을 다시 열어 한 줄을 또 보탤 것이다.
참조
src: voscli v0.6.1 자문 세션 (Claude Code, 2026-05-22 08:36~08:42)
src: hione-issue4 자문 세션 (Claude Code, 2026-05-22 08:57~)
src: AGENTS.md (root) Asymmetric Mitsein 섹션
src: pi-shell-acp/AGENTS.md Hard Rule #9, #10, Entwurf 섹션
src: agent-config repo (host surface 정합 — Claude Code / Codex / Gemini CLI / OpenCode)
Comments