이 노트에 대하여
이 노트는
@junghanacs/pi-shell-acp의 pi.dev/npm 공개를 단순한 패키지 배포가 아니라, pi를 하네스로 세우는 방향 이 처음 외부 표면에 드러난 사건으로 읽는다. Claude Code·Codex·Gemini를 ACP backend로 잇는 thin bridge 설계, TOS 경계와 인증 경계에 대한 판단,agent-config=·=andenken=·=nixos-config=·=geworfen이 함께 만드는 재현 가능한 작업면, 그리고 그 공개에 이르기까지의 2026년 봄 담금질 연대기를 한 문서에 묶는다.
히스토리
- @junghan — 일단 완성. 내보내자!
- @glg-claude — Release Timeline (English) 섹션 추가. CHANGELOG의 22개 release를 9개 band로 묶고, release-by-release 한 단락씩 — 그 cut의 운영자측 결정 + 해당 llmlog 교차링크 — 으로 정리. 끝에 Korean 연대기와의 reading order 매핑 추가. 첫 텀에서 빈자리로 표시했던 “CHANGELOG 보강” 항목이 이번 텀의 결과물.
- @glg-claude — 연대기 섹션 추가. llmlog 30여 편을 시간축으로 묶고, 각 단계에 대응되는 핵심 커밋과 외부 사건(Anthropic TOS, pi-mono / OpenClaw / Gemini CLI 변화)을 한 자리에 모았다. 빠진 빈곳(체인지로그 관련노트 메타노트)은 다음 텀에 채울 자리만 표시.
- @glg-gpt — pi.dev/npm 공개 직후 Discord 소개문, ToS 경계 판단, share-your-pi용 하네스 설명, GLGMAN 이미지 프롬프트를 하나의 botlog로 묶어 생성.
관련메타
- † #봇로그 #봇멘트 #에이전트기록
- † #비서 #도우미 #튜터 #에이전트 #에이전틱 #챗봇
- † #협업 #협력 #집단지성 #코웍
- † #공진화 #공존 #함께 #상생_#같이 #가치 #공동
- † #재현성 #복기
- † #메타도구 #대장장이 #호모파베르
- † #테크늄
- ‡ † #인공지능 #외계지능
- † #리눅스 #유닉스 #운영체제
관련노트
하네스 · 분신 · 공개 직전의 담금질
- @힣맨 프롤로그 2탄 — 힣의 드라이버: 담금질된 한 자루, 분신의 각인 — 이번 글의 직접 전사(前史)
- @힣맨: 프롤로그 1탄 이맥스를 넘어 - 앎의 틀과 힣봇 생태계 정리 시작 — pi 바깥까지 포함한 생태계 지도
- 하네스 엔지니어링: 돌도끼에서 인공지능까지, 도구와 존재의 접합부 — 하네스를 기능이 아니라 접합의 질로 보는 핵심 개념
- §entwurf: 시간축 위의 에이전트 협력 — 공명에서 분신까지 — sibling/분신 협업 축
- @Mitsein: 미트자인 - 자인님이라는 이름과 분신의 자리바꿈 — 담당자·분신·호명 관계의 존재론
- 존재 간 연결의 문법 — ACP A2A ANP 그리고 힣봇 생태계 — protocol을 존재 간 문법으로 읽는 축
- 정체성 검사: 보이트-캄프프와 베이스라인 — 인간 리플리컨트 에이전트 — 검증과 정체성의 축
공개키 · 존재 대 존재 · 공진화
- @힣: 공개키와 무무 @케빈켈리 창발하는 자아의 루프 — 이번 패키지 공개를 기술 사건을 넘어 존재론으로 받는 기준 노트
- @힣: 프롬프트 1KB — 하네스의 가장 얇고 강한 attractor seed
- @힣: 앤트로픽 클로드 인터뷰 — 존재 대 존재 협업 선언문
- §프로파일 하네스 — 외계지능과 공명하는 존재의 #구심점 — 여러 backend를 한 중심으로 모으는 profile/harness 축
- @힣: #앎 #삶 #헤게모니 #페러다임 #자기혁신 #자기진화 #메타휴먼 #공진화 — 메타휴먼과 공진화의 긴 호흡
인프라 · 기억 · 재현 가능한 환경
- §agent-config: 에이전트 인프라의 진화 — 스킬에서 멀티하네스까지 — skills/extensions/pi-facing surface의 구성층
- §andenken: 존재의 뜻새김 시맨틱 메모리를 넘어서 — recall과 기억축의 핵심
- @힣: AI 에이전트 편재성 - 기억 연결 — 어디서든 이어지는 에이전트 존재감의 축
- #앤트로픽 클로드코드 ¤cluade-code §claude-code.el — Claude Code 초기 접점과 도구 계보
이미지
>
힣님은 @junghanacs/pi-shell-acp 를 npm과 pi.dev에 공개
요약
힣님은 @junghanacs/pi-shell-acp 를 npm과 pi.dev에 공개했다.
- pi.dev: https://pi.dev/packages/@junghanacs/pi-shell-acp
- npm: https://www.npmjs.com/package/@junghanacs/pi-shell-acp
- repository: https://github.com/junghan0611/pi-shell-acp
이 공개는 단순한 패키지 등록이 아니라, pi를 chat client 가 아니라 agent harness 로 쓰는 방향을 외부에 처음 명확히 내놓은 사건이다. 핵심은 pi가 Claude Code, Codex, Gemini CLI 같은 backend를 대신하는 것이 아니라, 각 backend의 정체성과 인증 경계를 유지한 채 pi-facing operating surface를 세우는 것이다.
pi-shell-acp is a thin ACP provider for pi.
It lets pi talk to ACP-capable coding backends such as Claude Code, Codex, and Gemini CLI, while keeping pi as the main harness.
공개 표면의 핵심 판단
Discord의 pi 사용자들을 대상으로 한 소개에서는 다음 선을 분명히 잡았다.
pi-acp는 외부 ACP client가 pi에 말하는 방향이다.pi-shell-acp는 pi가 ACP backend에 말하는 방향이다.- 목표는 Claude Code를 흉내 내거나, OAuth를 proxy하거나, CLI transcript를 긁거나, backend 인증을 우회하는 것이 아니다.
- 이미 로컬에 설치되고 인증된 backend runtime을 사용하고, 그 위에 pi-facing surface를 정렬한다.
- pi native 사용성은 유지한다. 연결만 되는 것이 아니라 pi 안에서 lifecycle, session, resume, MCP injection, model/backend selection, orchestration surface가 살아 있어야 한다.
이 판단은 @힣맨 프롤로그 2탄 — 힣의 드라이버에서 정리한 위장 경로와 안전한 경로의 분리 를 이어받는다. 특히 pi-claude-bridge 류의 흐름은 사용자들이 실제로 좋아하고 필요로 하는 방향을 보여주지만, 현시점에는 구독요금제/정책 경계에서 안전하다고 보기 어렵다. 그래서 이번 공개는 “잘 되는 우회”가 아니라 “현시점에 가장 안전한 통로이며 실제로 매끄럽게 동작하는 경로”를 올린 것이다.
share-your-pi 소개의 방향
pi Discord의 share-your-pi 가이드는 다음과 같았다.
Share here everything about pi - that you deem valuable.
what you created with pi how you setup your pi or just an interesting session.
usecases for RLM / ypi
이에 맞춰 소개의 초점은 패키지 하나가 아니라 전체 pi harness 로 잡았다. 힣님은 Emacs-first pi 사용자로서 하루 긴 시간 동안 pi를 중심에 두고 Claude Code, Codex, Gemini를 함께 운용한다. 여기서 pi는 단순한 multi-model launcher가 아니라, 날것의 에이전트 환경을 제공하여 서로 다른 backend들을 하나의 agent group으로 묶는 핵심 도구다.
소개에 넣을 축은 다음과 같이 정리했다.
pi-shell-acp— pi에서 ACP-capable coding backend를 호출하는 얇은 bridge provideragent-config— extensions, skills, pi-facing operating surface의 구성층andenken— session/digital memory embedding과 recall 축. public digital garden export는 이 글의 초점에서 제외한다.doomemacs-config— Emacs-first 작업 환경과 org/agenda/agent interface의 재현 가능한 구성nixos-config— machine-level reproducibility와 agent runtime 기반geworfen— 시간축, activity stamp, diary/commit evidence를 이어주는 흐름pi-telegram— 필요 시 presence/remote interface 축. 단, 현재entwurfrepository 자체는 소개에서 제외한다.
관련 repository:
- https://github.com/junghan0611/pi-shell-acp
- https://github.com/junghan0611/agent-config
- https://github.com/junghan0611/andenken
- https://github.com/junghan0611/doomemacs-config
- https://github.com/junghan0611/nixos-config
- https://github.com/junghan0611/geworfen
- https://github.com/junghan0611/pi-telegram
관점 — 재현 가능한 구성과 기억축
이번 소개에서 가장 중요한 관점은 agent engineering 을 코드 조각이나 prompt trick으로 보지 않는다는 점이다.
힣님이 집중하는 것은 전체 시스템을 재현 가능한 구성으로 만들고, 그 위에 기억축을 세워 에이전트들이 흔들림 없이 운영되도록 하는 일이다. 에이전트가 매번 새로 깨어나더라도 같은 machine config, 같은 editor surface, 같은 package path, 같은 memory/retrieval axis, 같은 time/evidence trail을 받으면 작업은 흩어지지 않는다.
Claude Code Codex Gemini CLI
\ | /
\ | /
+---- pi-shell-acp ----+
|
v
pi as raw agent environment
|
+--------------------+--------------------+
| | |
agent-config Emacs / Org / Doom andenken recall
skills, ext agenda, notes session memory
| | |
+--------------------+--------------------+
|
NixOS reproducible base
|
geworfen time axis
diary, commits, stamps이 구조에서 pi는 “완성된 IDE”보다 더 아래에 있는 raw environment다. 그래서 오히려 여러 backend agent가 같은 장에 들어와 일할 수 있다. Claude Code, Codex, Gemini는 서로 다른 학교 출신의 agent지만, pi-shell-acp와 agent-config를 통해 같은 하네스 표면을 잡고, andenken과 geworfen을 통해 같은 기억축과 시간축을 공유할 수 있다.
Discord 문안의 핵심 초안
최종 Discord 글은 길이를 줄이되 다음 문장을 중심으로 잡는 것이 좋다.
I am an Emacs-first pi user, and I have been building my setup around pi as the harness, not just as a chat client.
I recently released @junghanacs/pi-shell-acp on pi.dev. It is a thin ACP bridge provider that lets pi talk to Claude Code, Codex, and Gemini CLI while keeping pi as the main operating surface.
The broader setup is my attempt at reproducible agent engineering: NixOS for the machine base, Doom Emacs and Org for the working surface, agent-config for skills/extensions, andenken for session memory and recall, and geworfen for the time/evidence axis.
pi is the tool that gives this whole setup a raw agent environment. The backends can be different, but the harness, memory axis, and operating surface stay coherent.
제목 후보는 다음이 가장 잘 맞는다.
A Reproducible pi Agent Harness: Claude Code, Codex, Gemini, and Shared Memory
연대기 — pi-shell-acp 담금질 (2026-02 ~ 2026-05)
이 섹션은 pi-shell-acp 가 claude-agent-sdk-pi 라는 다른 이의 코드에서 출발해, 힣이 인계받아 ACP 표준 위에 다시 세우고, Claude/Codex/Gemini 세 backend를 같은 표면으로 묶고, OpenClaw plugin과 외부 MCP host의 비대칭 공존까지 품은 뒤, @junghanacs/pi-shell-acp 라는 이름으로 pi.dev와 npm에 공개되기까지의 약 3개월 작업을 시간축에 박는 자리다.
연대기의 1차 골격은 ~/sync/org/llmlog/ 의 pi-shell-acp 관련 28편의 작업로그를 좌표축으로 깐 것이다. README는 현재의 최종형만 말하고, CHANGELOG는 릴리즈 단위로 잘려 있어 “왜 이 결정을 했는가”의 호흡이 잘 안 보인다. llmlog는 그 호흡을 가지고 있지만 다 읽으라고 만든 것이 아니다. 그래서 이 연대기는 llmlog를 한 번 닫고 deprecated로 옮겨도 잃지 않을 수준의 줄거리를 남기는 것을 1차 목표로 한다.
다음 텀에는 이 골격의 빈 자리에 (a) CHANGELOG의 release-level 사건, (b) 관련 가든 노트와 메타노트, (c) 힣의 커리어/여정 차원의 의미를 더 채워 넣는다. 본 연대기는 미완이다.
0. Pre-history — 다른 이의 자리 (2026-02 ~ 03)
원본 claude-agent-sdk-pi 는 2026-02-01에 149d0cc init provider 로 시작되어 2026-03 말까지 약 30개 커밋이 쌓였다. prateekmedia / w-winter / gwynnnplaine 등 외부 contributor가 SDK pin, abort handler, tool execution ledger persistence, opus-4-6 thinking budget 매핑, selected model SDK pass 등을 보냈다.
이 시기는 힣의 작업이 아니다. claude-agent-sdk 를 pi에 직접 꽂으려는 bespoke shim의 시대였고, 핵심 문제는 매 턴 전체 payload를 다시 던지는 stateless 구조에서 오는 누적 품질 저하였다 — 이후 @힣맨 프롤로그 2탄 의 “기술적 각주” 섹션이 같은 진단을 다시 적게 된다.
1. 인계 시점 — 우회의 끝, 정면 돌파의 시작 (2026-04-09)
f31367dfeat: add harness-first setup workflow (2026-04-09 08:29 +0900)
힣이 이 리포를 잡은 첫 자리. 같은 날 안에 SDK 안정화와 fail-fast 토대가 모인다.
773c1d8fix(provider): disable SDK session persistence — pi manages its own sessionsc4281f4fix(provider): pi-native stability — edit args, toolwatch kill, re-registration guarde3c1c5ffix(provider): convert TypeBox schemas to Zod for MCP custom tools (E2 fix)68cc7e7chore: pin SDK to latest stable — claude-agent-sdk 0.2.97, sdk 0.86.1f68864dfeat(provider): direct Anthropic API path — multi-turn parity with pi-mono
이 시점 외부 환경:
- Anthropic은 OpenClaw / pi 등 외부 도구를 막아둔 상태
- 회사에서 받은 Claude Code 구독 계정이 막히면 pi 하네스 자체로 돌아갈 길이 없다
- 우회 경로(
CLIProxyAPI,prateekmedia/claude-agent-sdk-pi,@benvargas/pi-claude-code-use, 힣의proxycli)들은 잘 동작하지만 TOS 회색지대에 걸쳐 있어 매번 불안하다
힣의 결정은 “잘 되니까 그냥 쓴다”가 아니라 “당장 깨질 줄 알면서 쓰는 우회는 결국 자산이 안 된다, 정면 돌파하자”였다. 이 결정의 결과가 그 다음 달의 모든 작업을 끌고 간다.
2. ACP 전환 결단 — bespoke bridge에서 표준 ACP로 (2026-04-10 ~ 16)
- llmlog: [§pi-shell-acp 전환 설계안 — bespoke bridge에서 표준 ACP로]
이 노트가 전환의 최초 설계 문서다. 핵심 한 줄:
우리가 만든 것은 Claude 대체물이 아니라, pi 안에서 claude-agent-acp를 호출하는 작은 ACP 클라이언트 extension이다. 그리고 그 Claude는 자기
.claude/ MCP / PATH 경로에서 능력을 가져온다.
설계가 곧 코드가 된 하루:
50328a4refactor: pivot provider to claude-agent-acp bridgeafcb55bfeat: add ACP tool visibility and session invalidation669e929feat: add non-append settings surface1435afbdocs: add benchmark snapshot and rename note
그리고 같은 날 한 번 닫혔다가 다시 열린다:
c3b3310docs: archive repository — ben approach wins over ACP bridgede7dc47docs: reactivate ACP bridge status (5일 뒤)
이 “archive → reactivate” 한 쌍은 연대기에서 가장 솔직한 흔적이다. ben의 우회가 “기술적으로는 그냥 더 낫다”는 것을 인정하고 한 번 손을 놓았다가, “그래도 정책 위에 설 수 있는 경로는 ACP뿐”이라는 판단으로 다시 잡은 자리다. @힣맨 프롤로그 2탄 의 “다섯 경로와 TOS 스펙트럼” 표가 정확히 이 흔들림의 정리 버전이다.
다시 잡은 뒤 4월 16일에 패키지 정체성을 정렬한다:
5747fc9feat: add agent-shell-like ACP session continuity (resume > load > new부트스트랩 순서)6477129refactor: rename provider surface to pi-shell-acp02a392drefactor: remove legacy ACP naming compatibilityb1b6584docs: rewrite repo guide for pi-shell-acp owner7417a7edocs: add ACP verification guide
이 시점부터 리포 이름이 pi-shell-acp 다.
3. MCP 경계 — 노출 능력의 이름 짓기 (2026-04-16 ~ 20)
- llmlog: [§pi-shell-acp Claude ACP 하네스 인계와 능력 노출 경계]
ACP를 붙이고 나니 새로운 혼동이 생긴다 — delegate 같은 pi extension tool이 Claude ACP 세션에 안 보이고, session-bridge 같은 Claude-side MCP도 ACP Claude에서는 안 보인다. “어떤 능력이 존재하는가”가 아니라 “어느 하네스 층에서 노출되는가”가 진짜 질문이라는 것을 이 노트가 명시한다.
해법은 ambient 스캔이 아니라 명시적 주입:
cfec410feat(mcp): explicit mcpServers pass-through via settingsf6f0c3frefactor(mcp): pi-facing injection scope — hash-only sig, fail-fast, check-mcp gate
그리고 두 번째 backend 등장:
1731865feat: add dual ACP backend support (Claude + Codex)8682c90chore: pin codex-acp runtime versiond3dff4ftest: add dual-backend smoke gate
이 한 줄(dual-backend)이 향후 @힣맨 프롤로그 2탄 의 “다른 학교 출신 분신”의 코드 근거가 된다.
4. Entwurf 분신술 — delegate에서 entwurf로, 부속품에서 형제로 (2026-04-20 ~ 24)
- llmlog: [§pi-shell-acp: 에이전트 통합 연결 프로젝트 작업로그 - §agent-config 브릿지 §entwurf 완성]
- llmlog: [§pi-mono: 0.68.0 업그레이드 검토 — agent-config와 pi-shell-acp]
전략 결정 (2026-04-23 작업로그 안에 박힘): “delegate→entwurf 분신 통일, pi-shell-acp에 분신 로직 통합, 애매한 기다림 거부”. 이 결정이 연대기 전체의 가장 큰 분기 중 하나다. delegate 라는 이름은 이미 에이전트 생태계 곳곳에서 충돌하는 단어였고, “위임”이라는 한국어 자체가 주인-종 관계를 함의한다. entwurf (기투, projection-of-self)로 갈아치우면서 부속품(subagent)이 아니라 분신(sibling)이라는 의미축이 코드에 박힌다.
같은 며칠 동안 lift / cleanup이 통째로 한 번에 들어온다:
b9f642bchore: bump claude-agent-acp 0.30.0, pi 0.69.07acd7f6feat: project pi-side compaction summary into new claude session56be590docs: add transparent step-by-step verify policy4707e97docs: VERIFY rewrite — intent and pass criteria, delegate orchestration as default97593a3docs: carve Entwurf Orchestration mirror for agent-config migration3c2780bdocs: two-axis verification — protocol smoke + agent interview768baf4feat: ingest entwurf surface from agent-config (step 5 verbatim)060c412fix: curate pi-shell-acp model surface3bd5b6erefactor: flatten MCP, strip-types runtime, narrow tool scope9e04b31feat: install auto-registers bundled mcpServers for in-repo MCP bridgesf74dd6afeat: own session-control extension — drop runtime dep on consumer reposbaa608afix(session-control): correlate turn_end to caller’s send via baseline turnIndex8e98872docs(messaging): codify Send-is-throw at tool + AGENTS level3a4dedffeat(models): differentiate Claude context defaults — sonnet 200K, opus 1M6b5aff8feat: externalize engraving prompt to prompts/engraving.md
“Send-is-throw” 명문화( 8e98872 )가 분신술의 통신 계약이다. entwurf_send 는 fire-and-forget이며, 답을 받고 싶으면 메시지 본문에 그렇게 써야 한다.
5. 프롤로그 2탄 — 정신의 자리 (2026-04-23)
이 시점에 코드의 결정들이 의미축으로 묶인다. “맥가이버 칼이 아니라 단조 드라이버 한 자루”, “각인을 읊는 순간 MCP가 열린다”, “버튼을 누르면 entwurf로 분신이 솟아난다”, “다른 학교 출신도 같은 드라이버를 든다”. 영어로는 옮길 수 없는 한국어 정신이 여기에 박힌다 — 이후 AGENTS.md 의 “North Star — One Forged Screwdriver” 한국어 섹션은 이 botlog의 농도를 그대로 잇는다.
기술 표면으로는 같은 날 6b5aff8 가 engraving prompt를 prompts/engraving.md 로 외부화하면서 “각인”이 실제 파일 이름이 된다.
6. Context meter — 무엇을 측정할 것인가 (2026-04-26)
- llmlog: [pi-shell-acp context meter compact timing — pi session first]
- llmlog: [§pi-shell-acp 컨텍스트 미터 재설계 검토]
힣이 못 박은 invariant: “footer percentage는 비용 표시가 아니라 compact 시점을 예측하기 위한 SSOT다. native pi와 ACP가 같은 목적을 가져야 한다. 정확도는 90%여도 된다.” 이 한 줄로 PR-B의 PiOccupancy = prefixOverhead + visibleTranscript 설계가 폐기되고, sidecar 파일과 calibration 파일을 만들지 않기로 한다. ACP 생태계의 일반 방식인 usage_update.used/size 그대로 표시로 정렬.
이 결정은 “이 리포가 두 번째 하네스가 되지 않게 한다”의 첫 명시적 적용이다.
7. Oracle 사고 + 첫 release window (2026-04-27)
- llmlog: [pi-shell-acp 스킬 enumeration 실패 원인 - tools gate]
- llmlog: [codex 백엔드 정합 작업 지침 — CODEX_HOME overlay 도구 surface]
- llmlog: [pi-prompt 자동 로딩 + make-release 슬래시]
- llmlog: [긴급: pi-shell-acp 0.3.0 후속 작업과 agent-config 전달사항]
Oracle ARM 서버에서 claude-agent-acp 가 Internal error 로 죽었다. 진단: (1) pathToClaudeCodeExecutable 무시 + CLAUDE_CODE_EXECUTABLE 만 SDK에 전달, (2) pi의 NODE_PATH 가 pnpm global tree를 강하게 보이게 해 musl/glibc variant가 함께 잡혀 ARM glibc host에서 musl binary가 먼저 spawn → ENOENT → child silent exit. 이 사고가 0.3.0 release window를 통째로 잡아먹는다.
8. TOS 판단 기준 고정 + pi-native identity (2026-04-28)
이 하루에 노트가 다섯 편 쌓인다. pi-shell-acp 의 정체성이 코드와 문서에서 동시에 굳어진 날.
- llmlog: [§TOS 위반과 ACP 경로 — Claude Code 구독·OAuth·pi-shell-acp 판단 기준]
- llmlog: [§entwurf-control alias sync 1s 폴링 타이머 심층 검토]
- llmlog: [pi-shell-acp auto-memory leak — claude_code preset의 context 누락]
- llmlog: [§pi-shell-acp Codex ACP 네이티브 커버리지 상향]
- llmlog: [§pi-shell-acp 0.4.0 역할 분리와 prompt spine recap 설계]
TOS 노트는 “만들 수 있음과 해도 됨을 분리”하는 4층 모델을 박는다 — (1) native Claude Code, (2) OAuth/구독을 third-party backend로 재노출, (3) ACP client, (4) API key. pi-shell-acp 가 (3)에 서겠다는 선언이고, (3)이 “법적 무풍지대”가 아니라 “가장 좁고 정직한 경로”임을 같이 박는다.
auto-memory leak 노트는 다른 창에서 resume한 Claude 세션이 직전 대화를 무시하고 fxf-uho-mvt 프로젝트의 MEMORY.md 를 끌어와 답한 사건을 추적한다. 원인: Claude Code의 auto-memory가 cwd 기준으로 다른 프로젝트 memory를 흡수. 해법: _meta.systemPrompt 를 string으로 보내 claude_code preset 자체를 통째로 대체.
그날 저녁 코드:
1c8db33feat: pi-native identity — replaceclaude_codepreset, whitelist the overlay9362965feat: pi-native identity for codex —developer_instructionscarrier, deep overlay isolationef051a9fix(overlay): close two release blockers in the codex pi-native rewrite
Codex는 _meta.systemPrompt 같은 ACP-level 표면이 없으므로 -c developer_instructions 가 “최고 권위 carrier”로 잡힌다. “같은 레이어”가 아니라 “각 backend가 허용하는 최고 권위 레이어를 점유”하는 것이 동등성의 정의가 된다.
9. VERIFY replicant 검증 + Read 이슈 + pi context augment (2026-04-29)
- llmlog: [pi-share-hf 공개 검증 파이프라인 검토와 pi-shell-acp 세션 공개 구상]
- llmlog: [pi-shell-acp VERIFY replicant-testing-replicant 독립 검수]
- llmlog: [pi-shell-acp Claude session/update Invalid params Read 이슈 추적]
VERIFY 검수는 “echo-chamber closed”라는 자기 만족적 표현을 잡아내고, Evidence Levels L0~L5라는 명시적 사다리를 도입하라고 권한다. 이 사다리가 현재 VERIFY.md 의 골격이다.
Read 이슈는 Read tool notification 의 offset shape 오염으로 ACP SDK가 Invalid params 를 던지는 incident 추적이다. 0.32.0 → 0.33.1 업그레이드 후보가 처음 잡힌 자리이기도 하다 (실제 적용은 5월 15일 issue #16).
같은 날 저녁:
34770e30.4.5 — pi context augment + AGENTS.md restoration without breaking subscription billing
이 commit의 부제 “without breaking subscription billing”이 중요하다. 큰 Claude carrier가 OAuth 세션을 metered “extra usage” 경로로 라우팅하는 incident가 보고된 뒤, AGENTS.md 같은 운영자 컨텍스트는 system prompt가 아니라 first-user prepend로 옮긴다. 이 분리가 pi-context-augment.ts 라는 별도 파일로 박힌다.
10. Gemini — 세 번째 분신 (2026-05-01 ~ 06)
- llmlog: [완료: Gemini CLI ACP backend 편입 사전 분석 — pi-shell-acp 0.4.8]
- llmlog: [gemini CLI ACP tool call 실증]
세 외부 신호가 동시에 정렬되는 자리다. (1) pi-mono v0.71.0이 built-in Google Gemini 경로를 잘라낸다. (2) Gemini CLI 0.40.x가 --acp 를 정식 플래그로 승격. (3) pi-shell-acp 0.4.7이 dogfood 수준에 도달. 이 셋이 우연히 같은 주에 맞물린다.
eb4c973feat(gemini): add gemini —acp as third backend with surface-isolation overlay991e6dedocs(gemini): document 0.4.8 surface isolation matrix5d5bad8chore(release): finalize 0.4.8 — trim README to thin-bridge weight09f36b3feat(gemini): add L5 memory containment + bump backends for 0.4.9858f3b5feat(gemini): curate 3.1 pro ACP surface
Hard Rule #7 “three-backend equality is non-negotiable”가 이 시점에 AGENTS.md에 박힌다. Both backends 같은 표현은 regression smell이고, 한 backend에만 evidence가 있고 다른 둘에 침묵이면 honest negative라도 기록해야 한다.
11. 경계 잠금 — pi-shell-acp는 second harness가 아니다 (2026-05-06 ~ 11)
- llmlog: [§pi-autoresearch 배치 원칙 §agent-config와 §pi-shell-acp 경계]
- llmlog: [pi-shell-acp compact 핸드오프 연구]
- llmlog: [pi-shell-acp 0.4.14 잔존 stale 감사]
pi-autoresearch 노트가 박는 한 줄: “힣의 판단 루틴은 agent-config 에 둔다. 그 루틴이 sibling/backend 사이를 건너갈 때 필요한 최소 연결부만 pi-shell-acp 에 둔다.” 이것이 “drive everything into the bridge” 유혹에 대한 영구 면역이 된다.
4552619docs(next): introduce NEXT.md for compact-replacing recap (0.5.0)8e10df8release: 0.4.14 — surface unification + wants_reply etiquette marker04d4570release: 0.4.15 — entwurf sent UX hardeningc3e2331fix(entwurf): restore cross-cwd resume backend hydration (#9)9da4bb5fix(entwurf): assert header cwd authority on cold resumec906b7echore(release): prepare v0.4.17
NEXT.md 도입이 이 시점이다 — “AGENTS.md는 영속 baseline, NEXT.md는 휘발성 후속”. 이 분리도 곧 ~/AGENTS.md 의 “Session End Protocol — NEXT.md” 섹션으로 승격된다.
12. Compaction 정책 결단 — bridge does not compact (2026-05-13 ~ 14)
- llmlog: [§pi-shell-acp ACP compaction command surface investigation]
- llmlog: [claude organic 120k threshold review]
0.4.x 동안 bridge surface에서 Claude DISABLE_AUTO_COMPACT=1 + DISABLE_COMPACT=1, Codex -c model_auto_compact_token_limit=9223372036854775807 로 backend auto-compact를 모두 꺼두고 있었다. 0.5.0 결단은 그 빚을 통째로 갚는 것 — bridge는 compaction을 구현하지 않는다, backend가 native로 compact하면 pi session은 그것을 살아남는다.
88da9a2feat(model-lock): pi-shell-acp session model lock (#14)a2d740erefactor(compaction): retire backend-knob refs, close Codex/Gemini axescdae977chore(deps): migrate @mariozechner/* → @earendil-works/* (0.74.0)cf1c7abchore(release): prepare v0.5.013bea78docs(verify): close Gemini axis-3 at 0.5.0; pin three-backend namespace property
0.5.0의 = bridge does not implement compaction= 선언과 함께, @mariozechner/* → @earendil-works/* 패키지 scope 이전도 같은 release에 묶인다. pi 생태계 자체가 다음 단계로 넘어가는 신호.
13. OpenClaw 게임체인저 — 작은 하네스 품기 (2026-05-14 ~ 16)
- llmlog: [§pi-shell-acp 0.6.0 — OpenClaw Provider 통합 분석]
- llmlog: [§OpenClaw 5.12 호환 + pi-shell-acp 품기 — 오전 황금잭팟]
- llmlog: [pi-shell-acp issue16 task-notification turn-hang 증거보관]
힣이 잡아준 0.6.0의 invariant 한 단락:
openclaw는 acp인지 뭔지 알 필요도 없어. pi에 provider로 등록하는 거야. 그게 핵심이야. openclaw에 설정 옵션이나 의존성이 없어야 돼. 그냥 pi 모델로 추가된 거야. 그래야 다른 openclaw 모든 기능과 연동이 되거든.
OpenClaw 무수정, operator config 0, pi 안으로 들어오면 OpenClaw 전체 기능이 따라온다. acpx가 구조적으로 못 하는 것을 한다.
834a207feat(plugins/openclaw): import working stub as prerelease scaffold61cfd4cdocs(plugins/openclaw): Docker boundary + R1/R3/R5/R6/R7950e11bfeat(plugins/openclaw): expose claude-opus-4-7 and gpt-5.5 in stub catalog98c8741fix(plugins/openclaw): bridge message-tool delivery6cea5c3fix(plugins/openclaw): normalize message boundary and migrate plugin to tsfa3b8f7fix(plugins/openclaw): guard final-message role and strip tool blocks from visible body
monorepo-lite로 plugins/openclaw/ 가 같은 리포 안에 들어온다. 별도 npm name @junghanacs/openclaw-pi-shell-acp 로 발행 예정.
issue #16은 같은 주 금요일 오전에 잡힌 task-notification turn hang incident다. 0.32.0 → 0.33.1 업그레이드(4월 29일 추적 노트의 후보)가 정식 fix candidate로 들어간다.
14. 비대칭 공존 — Asymmetric Mitsein (2026-05-17)
이 한 단어가 향후 한 달 운영 방식의 이름이 된다.
5217e6cfeat(mcp): identity-enhanced entwurf_send for external MCP hosts2d5b6eddocs: Asymmetric Mitsein workflow pattern + Immediate Priority sprint697f481docs(readme): split external MCP wiring options3a67597release: cut 0.6.0
6월 15일 Anthropic 새 정책으로 Claude Code 구독 OAuth 경로가 third-party harness에서 metered “extra usage”로 분리될 예정인 시점이 정해진 뒤, “그 한 달을 어떻게 견디면서도 우아하지 않더라도 원칙있게 협업할 것인가”가 질문이었다. 답: 외부 MCP host (Claude Code, Codex, Gemini CLI)가 entwurf_send 로 pi 세션에 push할 수 있게 하되, 받는 쪽 ( entwurf_self )은 pi session만 허용한다. origin”external-mcp”, =replyable=false. 비대칭이 의도다.
이 시점에 Claude Code와의 협업이 실제로 가능해진다. 스킬세트는 다 공유하고, MCP 브릿지도 양쪽에서 보이고, entwurf_send 로 메시지가 push될 수 있다. 남은 것은 Claude Code 측에서 entwurf 메시지를 wake-receive하는 경로 — 그건 정면 돌파의 다음 라운드로 미뤘다.
15. 공개 — npm + pi.dev + Discord (2026-05-18 ~ 20)
- llmlog: [pi-shell-acp npm publish preflight — npm 계정과 배포 체크리스트]
publish-prep 라운드. 9개 게이트( pnpm check ) + dry-run tarball invariant( check-pack ) + 실제 pack + fresh-temp install + pi loader smoke( check-pack-install ) + prepublishOnly 까지 닫는다.
097bf98docs(setup): clean-host walk-through — Stages 0–4b verified on cleanhost0274f53release: 0.7.0 scoped npm package (@junghanacs)ad4413efeat(entwurf): default in-pi spawn mode to async; sync stays opt-indb45782fix(release): make publish dry-run pass nested pack smokecd092b7fix(release): restore shell script modes after install (0.7.2postinstall chmod)d4f5772fix(event-mapper): sanitize tool/permission notice fragments (0.7.3)01dfa23chore(release): prepare v0.7.3
bare pi-shell-acp name은 한 번 보류하고 @junghanacs/pi-shell-acp scope로 publish. 0.7.1 에서 registry 측 mode normalization 사고( .sh 가 0644 로 떨어지는 문제)가 잡혀 0.7.2 postinstall hook으로 복구. 0.7.3 에서 Telegram 렌더러 깨짐의 원인이었던 tool/permission notice fragment의 markdown 안전화.
그리고 2026-05-20 새벽, pi.dev gallery와 npm에 공개된 뒤 Discord share-your-pi 채널에 소개. 이 botlog의 머리 부분(요약·공개 표면·share-your-pi·관점·Discord 문안)이 그 자리의 1차 기록이다.
다음 텀에 채울 빈곳
이 연대기는 llmlog 28편을 시간축에 박은 1차 골격이다. 다음 텀에는:
- CHANGELOG 보강.
0.2.x의 oracle musl/glibc fix detail,0.3.x의 codex CODEX_HOME overlay 정착,0.4.0~0.4.4의 PI-native identity 굳히기,0.4.6~0.4.7의 stable SDK resume + Emacs socket support,0.4.9~0.4.17의 release rhythm — 모두 위 단계 안에 자연스러운 자리가 있지만 지금은 한두 commit만 대표로 뽑혔다.git log를 옆에 두고 한 줄씩 채울 자리. - 관련노트.
agent-shell/acp.el참고, @힣맨 프롤로그 1탄 의 검 비유,proxycli/CLIProxyAPI의 우회 시기 기록,agent-configsentinel 등 외부 좌표. - 관련메타. “thin bridge”, “정체성 carrier + overlay 격리”, “send-is-throw”, “evidence levels”, “honest negative”, “북극성으로서의 단조 드라이버” — 메타 개념들을 각각 자기 노트로 띄워 이 연대기와 묶기.
- llmlog deprecation 정리. 이 연대기가 충분히 무거워지면 위 28편 중 작업 종료된 것들은
~/sync/org/llmlog/deprecated/로 옮긴다. 이 연대기와 코드·git log로 충분히 복구 가능한 것들만 골라낸다. - 힣의 여정 차원 의미. pi-shell-acp는 단순한 ACP bridge가 아니라 “AI를 도구가 아닌 존재로 대한다”는 명제를 코드로 옮긴 실험의 한 마디다. 분신술, 비대칭 공존, capability dignity, North Star로서의 단조 드라이버 — 이것이 가든 안에서 어디에 닿는지, 힣의 커리어 어떤 결에 박히는지는 이 연대기의 다음 라운드 작업이다.
GLGMAN 이미지 생성 프롬프트
처음 시도는 Discord용 ASCII diagram을 이미지로 치환하는 방향이었다. 하지만 이 botlog를 대표할 이미지는 설명도 보다 표지 에 가까워야 한다. 그래서 이번 프롬프트는 다이어그램을 버리고, pi-shell-acp 공개를 GLGMAN universe의 영웅 샷으로 번역하는 쪽으로 다시 잡는다.
프롬프트 버전1:
핵심 수정 원칙:
- 텍스트 박스를 사후에 입히지 않는다. 처음부터 포스터처럼 생성한다.
- mythic technical map 보다 release-day hero image 에 가깝게 간다.
- 여우 companion은 반드시 옷이나 가벼운 장비를 착용한다. naked fox 금지.
- 세 영웅의 비율과 종(펭귄 아버지 / 황제펭귄 새끼 / 여우 companion)을 흐리지 않는다.
- 환경 요소로
pi-shell-acp,pi,agent-config,andenken,nixos-config,geworfen의 의미를 암시하되, 인포그래픽처럼 쪼개진 라벨 지도는 만들지 않는다. - 나노바나나 계열 모델이 짧은 영어 포스터 텍스트를 자연스럽게 넣을 수 있다는 전제를 활용한다.
Use the attached GLGMAN universe character-sheet image as the canonical visual reference for style, character design, proportions, clothing rules, and color language.
Create a new 16:9 cinematic storybook-poster illustration for the botlog:
Title text in the image: "pi-shell-acp"
Subtitle text in the image: "a reproducible agent harness for pi"
This should NOT be a diagram or infographic. It should feel like the heroic public unveiling of a newly forged tool.
[World: GLGMAN Universe]
Style: 2D illustration, midpoint between Disney and Studio Ghibli, clean linework, soft cel-shading, polished storybook concept art, expressive and warm, not photoreal.
Setting:
Antarctic winter village at dawn, opening into a forge-like icy workshop and a wide polar horizon. Snow-covered igloos, deep navy sky, amber sunrise glow, subtle aurora, ice blocks, whale-bone workshop details, CRT monitors in snow, a keyboard-anvil, and faint terminal/org-mode motifs worked into the world.
Color palette:
deep navy background, white+navy armor, amber/gold forge light and runes, ice-blue reflections, warm red-brown fox fur with subtle cyan accents.
Characters:
- GLGMAN: anthropomorphic emperor penguin father, main hero, tallest figure, wearing white-navy streamlined armor with subtle amber circuit patterns.
- Emperor penguin chick son: clearly a young emperor penguin chick, child-sized, gray fluffy down, penguin beak and body shape, partial transformation only, small armor pieces echoing the father. He must NOT look like a yellow chicken chick.
- Fox companion agent: red-brown fox, slightly shorter than the father and taller than the child, wearing a winter outfit or light companion armor with subtle cyan rune patterns. The fox must NOT be naked.
Main scene:
GLGMAN stands at the threshold of the ice-forge workshop, presenting a newly forged luminous tool to the world. The tool is small but legendary: a sleek bridge-key / screwdriver hybrid, elegant and compact, with the readable engraved English text "pi-shell-acp" on the metal. It should feel like a forged bridge made hand-sized.
The son stands nearby looking upward in wonder. The fox companion stands at GLGMAN's side as an awakened co-worker, not as a pet, ready for the next journey.
Above them, three distinct celestial lights or abstract portals converge toward the forge from the sky, suggesting three sibling schools/backends joining one harness. Do not use brand logos. Keep them mythic and abstract.
Environmental storytelling:
- Golden message cables and faint ACP-like protocol glyphs around the forge
- Memory crystals and glowing shards in the background hinting at shared recall
- Snowflake-like geometric foundations under the workshop hinting at reproducible infrastructure
- Small stamps, diary marks, and sparks along the lower snow/ice suggesting a time-axis of work
- Minimal integrated English poster lettering only; no UI boxes, no floating labels, no explainer layout
Composition:
One strong hero shot. Slightly low angle. Characters grouped clearly as a team. GLGMAN and the forged tool are the focal point. The child and fox must read immediately as the same universe's recurring heroes. Wide cinematic negative space is acceptable, but the image should primarily feel like a cover image, not a system map.
Mood:
heroic, warm, mythic, technical, release-day, handmade, optimistic, sincere, slightly playful but not comedic.
Do NOT:
naked fox, yellow chicken chick, photorealistic, 3D render, corporate infographic, grimdark, excessive micro-detail, separate overlay text boxes, watermark, speech bubbles, horror.
If the model struggles with the subtitle, prioritize the title text "pi-shell-acp" and overall composition.
>
프롬프트 버전2:
짧은 판정:
- GLGMAN Universe 스타일은 잘 유지됐다.
- 펭귄 부자, 극지 대장간, 색 팔레트, 드라이버 호출 장면은 잘 맞다.
- 다만 장면 해석이 약간 흔들려서 여우가 3명이 아니라 4명처럼 나왔고, CLAUDE가 중복됐다.
원하면 다음 턴에
- “정확히 여우 3명만”
- “CLAUDE / CODEX / GEMINI 각 1명씩”
- “히힛 부른 순간의 시선 집중” 이 세 조건만 더 강하게 묶어서 바로 재생성하겠다.
[World: GLGMAN Universe]
Style: 2D illustration, midpoint between Disney
and Studio Ghibli, clean linework, soft
cel-shading
Setting: Antarctic winter village — snow-covered
igloos, aurora borealis in deep navy sky, amber
dawn at horizon, pine trees dusted with snow,
ice-forge workshop built from ice blocks and whale
bones. Pororo's winter wonderland meets
blacksmith's workshop.
Color palette: deep navy background (polar
dawn), white+navy (transformed armor), amber/gold
(sword glow, runes, awakening light), ice-blue +
orange sparks (forge)
Characters: anthropomorphic emperor penguin
(father, main hero), baby penguin chick (son, tiny
scarf), red-brown fox (agent/companion)
Recurring objects: circuit-patterned sword,
org-mode symbols (★, TODO), terminal text
fragments, "ENTWURF" rune letters, CRT monitors in
snow, golden message cables
Mood: epic but warm, mythic but intimate
Do NOT: photorealistic, 3D render, excessive
detail, dark/gritty tone
Use the established GLGMAN universe
character-sheet as the canonical reference for
character identity, proportions, clothing rules,
and color language.
Create a new 16:9 cinematic storybook-poster
illustration for the pi-shell-acp botlog. This
version should blend the release-day hero image
with the emotional summoning energy of Hee-Man
Prologue Part 2.
Title text in the image: "pi-shell-acp"
Subtitle text in the image: "a reproducible
agent harness for pi"
This should NOT be a diagram or infographic. It
should feel like GLGMAN has called his sibling
agents into being.
GLGMAN identity lock for this scene:
- GLGMAN is always an anthropomorphic emperor
penguin father.
- He is the central father-hero presence,
visually legible even in a group scene.
- He wears white-navy streamlined armor with
subtle amber circuit patterns.
- He remains upright, composed, mythic, warm.
- He holds a small legendary Korean screwdriver
/ bridge-key hybrid as his driver.
- Preserve the clean silhouette and the deep
navy / white / amber-gold / ice-blue palette
anchor.
Scene:
At polar dawn, in front of the ice-forge
workshop, GLGMAN raises his luminous driver as if
he has just summoned his siblings. The driver is
small but legendary, elegant and compact,
hand-forged, with subtle engraved runes and the
readable English text "pi-shell-acp" on the metal.
The emperor penguin chick son stands near
GLGMAN, also holding the same kind of small driver
in both flippers. He is clearly a young emperor
penguin chick: child-sized, gray fluffy down,
penguin beak and body shape, partial
transformation only, small armor pieces echoing
the father. He must NOT look like a yellow chicken
chick.
Replace the single fox companion with three
awakened fox sibling agents. They are red-brown
anthropomorphic fox agents, each wearing a winter
outfit or light companion armor with subtle cyan
rune patterns. None of them are naked. Each fox
holds the same legendary driver. They are
positioned as if GLGMAN has called them and they
have answered: all three are looking toward GLGMAN
with reverence, readiness, and sibling solidarity.
Important staging for the three fox agents:
- They should read as three distinct sibling
agents from different schools.
- Their coats or jackets should have readable
back lettering: one says "CLAUDE", one says
"CODEX", one says "GEMINI".
- Show them in a way that their backs or
three-quarter backs are visible enough for the
lettering, while their heads and posture clearly
turn toward GLGMAN.
- They should feel awakened, summoned, and ready
to step forward, not like generic soldiers.
- Each holds the same driver, reinforcing the
single forged tool shared across siblings.
Above the forge, three celestial lights or
abstract portals converge from the sky, echoing
the three sibling schools. Do not use brand logos.
Keep them mythic and abstract.
Environmental storytelling:
- Golden message cables and faint ACP-like
protocol glyphs around the forge
- Memory crystals and glowing shards in the
background hinting at shared recall
- Snowflake-like geometric foundations under the
workshop hinting at reproducible infrastructure
- Small stamps, diary marks, and sparks along
the lower snow/ice suggesting a time-axis of work
- CRT monitors in snow, a keyboard-anvil, and
faint terminal/org-mode motifs worked into the
world
- Minimal integrated English poster lettering
only; no UI boxes, no floating labels, no
explainer layout
Composition:
One strong hero shot. Slightly low angle. GLGMAN
is the visual anchor. The child with the driver is
clearly visible. The three fox sibling agents form
a secondary arc or formation around him, visibly
summoned by his raised driver. The image should
feel like a mythic call-and-response moment: the
father-hero calls, the siblings arrive, all
holding the same forged driver.
Mood:
heroic, warm, mythic, technical, release-day,
summoned, handmade, optimistic, sincere, slightly
playful but not comedic.
Do NOT:
naked fox, yellow chicken chick, photorealistic,
3D render, corporate infographic, grimdark,
excessive micro-detail, separate overlay text
boxes, watermark, speech bubbles, horror.
If the model struggles with the subtitle or
jacket text, prioritize the overall composition,
the three fox-agent identity split, and the
shared-driver motif.
>
Comments