2026-08-04 세션 — AI 12층 지도로 자산 실사(poin-agent 현업축 + gptbutler 개발축)
논의·대안
페페 지시 = 유튜브 「AI 용어정리 12개(바이브코딩 지도 2부)」를 우리 자산에 적용해보고, 우리 자산의 부족한 부분과 영상 자체의 부족한 부분을 둘 다 평가해 devplan 기획서로 낼 것. 페페 문제의식 = "이건 poin-agent 개선안으로 볼 수 있다. 다만 poin-agent는 회사 업무만 다루니, gptbutler 기능으로서 devplan 개발 업무도 별도로 관련이 있다."
영상 12개념 = LLM → 멀티모달 → RLHF → 파인튜닝 → 프롬프트 엔지니어링 → 지식베이스 → RAG → MCP → 에이전트 → 워크플로우 자동화 → 하네스 → AGI.
- 대안A(기각) — 12개념 해설만 정리한 학습 페이지. 이미
harness.html(코디 하니스)이 있고, 개념 나열은 우리 자산에 아무 결정도 못 낸다. - 대안B(채택) — 12층을 자(ruler) 로 쓰고 우리 자산 3축(공통 인프라 / poin-agent / gptbutler)을 층별로 실사해 매트릭스를 만든다. 페페가 잡은 2축 구도가 26.8.2 확정한 현업/개발 2트랙 정의와 정확히 겹치므로, 새 개념을 도입하지 않고 기존 구도에 층만 매긴다.
실사 = 서브에이전트 6개(실사 3 → 적대검증 1 → 설계 2), 153 툴콜 · 오류 0 · 63.9만 토큰. 전 항목 파일 직접 판독(추측 금지, "없음"은 grep 0건 확인분만).
agent(에이전트 아키텍처)·mcp(도구 연결 표준)·safety(가드레일·승인게이트)·architecture(층 분해) 관점에서 본 결과가 아래.
결정
1. 판정 = "층이 없는 게 아니라 배선이 안 됐다." 12층 중 10층을 이미 갖고 있으나 전부 공통 인프라(코디)에만 있다.
| 축 | 서 있는 층 | 빈 층 |
|---|---|---|
| 공통 인프라 | 1·2·5·6·8·9·10·11 (RAG는 FTS5로 부분) | 3·4(의도적 미채택) |
| poin-agent | 1·5·10·11 뿐(4층) | 6 KB · 7 RAG · 8 MCP · 9 에이전트 |
| gptbutler | 1·5·6·8·11 | 9 부분(아바타 사이클 없음) · 판정층 空 · 7 RAG 空 |
- poin-agent =
watcher.py:258이claude -p단발 호출(도구 0·MCP grep 0건), board.md 전문을 통짜주입. 이름과 달리 구조는 "워크플로우 자동화 + LLM 텍스트변환 1스테이지". → 이건 사고가 아니라 의도된 안전설계(위험행위를 사람 하드락으로 분리). "진짜 에이전트로 만들기"는 이번 범위 밖으로 명시 배제. - gptbutler =
run_claude_code_task실행통로는 실재하는데 devplan 카드와 잇는 코드가 grep 0건. 판정층(priority_state.json)은 파일 자체가 없고portfolio_review()가 매 실행 "전 항목 미판정"을 자백한다. - 창고(user_brief·가구 KB)도 검색기(
mem_find.pyFTS5, 2,749섹션·0.1초)도 이미 도는데 두 에이전트가 안 쓴다.
2. 영상의 부족한 점 = 빠진 4축이 곧 우리가 밟은 지뢰다.
누락 = 메모리 · 컨텍스트 엔지니어링 · 평가(eval) · 구조화 출력. 각각 우리 실사고와 1:1 대응(시드체인/세션릴레이 140건 미발동 · board.md 통짜주입 · 프롬프트 사후규칙 append · _unfence() 정규식 땜질).
부정확 4건 = MCP를 에이전트의 전제로 못박음(우리 run_claude_code_task가 반증) · 파인튜닝을 4번에 배치해 위상 과대평가(우리 3축 전부 0건이 정답) · RLHF="예절교육"이 SFT와 뭉개짐 · 하네스 은유가 출력검증/승인게이트/충돌해결/실행로그 4개를 한 단어로 뭉갬(우리 코드는 정확히 넷으로 갈라져 있다).
3. 우리 지도 = 12 + 4축 = 16축으로 확장해 쓴다. 3·4·12(RLHF·파인튜닝·AGI)는 손대지 않기로 한 층으로 명시(부족이 아니라 미채택).
4. 공유선/분리선 확정 — 새 통합 프레임워크를 만들지 않는다.
- 공유 = 도구 수준(창고·mem_find·broker·project_state.py CLI·cody-vision·whisper). 이미 돌고 있고 붙이는 비용이 만드는 비용보다 싸다.
- 분리 = 실행권한 범위. 두 에이전트의 위험 프로파일이 다르다(poin-agent 도구 0 / gptbutler 무제한). poin-agent는 "도구 0" 설계를 유지하고 gptbutler만 차단목록을 얹는다.
- 안 만든다 = 공용 LLM wrapper(표 1장으로 충분) · 임베딩 벡터DB(FTS5가 0.1초에 답하는 규모에 근거 없음) · 통합 에이전트 프레임워크(분리선을 지운다).
5. 착수 순서 — gptbutler P0-1(실행통로 가드레일)이 전체 1순위.
broker whitelist.classify()가 Edit/Write/MultiEdit를 _is_ops_file 아니면 전부 AUTO_ALLOW라 파일쓰기엔 게이트가 없고, runner._build_claude_args엔 --disallowedTools가 없다. 실행통로를 여는 P0-2보다 가드레일을 먼저 넣거나 같은 커밋에 묶는다.
산출물·커밋
- devplan
ai-stack-map.html(신규, 기획서 단일 출처) — 12층×3축 매트릭스, 영상 결함 8건, 16축 지도, poin-agent 개선안 7항목 + gptbutler 개선안 8항목, 공유선/분리선, 검증·페페 몫. - 허브 카드 등록 —
projects.json(ai-stack-map, cat=ai, status=candidate) +project_state.json(dev_track=tool·scope=full·single 1회차·stage 2 승인대기·next_owner=pepe) +build_hub.py재빌드(카드 38개, selftest 11 PASS). - 코드 변경 0건. 승인 전 기획서까지만.
검증
- 게이트 = check_theme.py FAIL 0 · check_font.py FAIL 0 · build_hub.py --selftest 11항목 PASS(카드↔상태 1:1 통과) · 재빌드 후 카드 date=2026-08-04.
- 코디 직접 재확인 2건 = watcher.py:258 도구 없는 claude -p 단발 / mem_find.py가 FTS5 키워드 검색(임베딩 아님).
- 🔴 실사 오탐 1건 걷어냄 — "cody-mcp-gateway MCP 미등록" 판정은 ~/.claude.json(Claude용)을 본 것이고, 이 게이트웨이는 Codex 클라이언트용이라 ~/.codex/config.toml:44에 정상 등록돼 있다(직접 확인). 개선안에서 제외.
- ✅ 부수 발견 — devplan 빌드 게이트 강제 수준 불일치: check_font.py는 build_hub.py:85에 물려 FAIL로 빌드를 막는데 check_theme.py는 안 물려 있다(폰트=강제, 테마=수동권고).
다음
⏳ 페페 몫
1. P0 착수 승인 — poin-agent P0 3건 / gptbutler P0 3건. 추천 = gptbutler P0-1(가드레일)을 전체 1순위.
2. 결정 4건(3차에서 2건 → 4건) — ① poin-agent P1-1 가구지식 태그 기준(코디가 임의로 정하면 KB 오염 · 이것만 있으면 P1-1 착수 가능) ② 🆕furniture-expert KB 인계 범위(어디까지 poin-agent 자산으로 넘기나·접근권한·갱신 책임 — ①과 별개 트랙) ③ gptbutler P0-3 판정 가중치 숫자(priority_rules.md가 "페페가 직접 고친다"로 못박은 항목) ④ 🆕 P1-4 대화 채널 순서(코디 추천 = PFS 웹 먼저).
3. 페이지 육안(Ctrl+F5).
코디 잔여 = 승인 후 P0 착수. check_theme를 build_hub.py --selftest에 물리는 1줄(별건, 저긴급).
관계
- 주제 그룹: gptbutler(개발축) ↔ poin-agent(현업축) 공통 아키텍처
- 관련 문서: gptbutler-handoff, poin-agent-handoff, devplan-rules, gptbutler-session-2026-08-02-gptbutler-plan
- devplan:
ai-stack-map.html(단일 출처) ·gptbutler.html·harness.html(코디 자신의 하네스, 범위 다름)
3차 정리 — GPT 비서 2주기 반영 + 그림 3장 (26.8.4) [코디]
발단 — inbox/gpt-ai-stack-map-2026-08-04.md(메모 15건). 페페 지시 = "나머지는 추천안대로 수정. 파이프라인·다이어그램 추가해서 이해하기 쉽게. 매트릭스는 B안."
GPT 인계 15건 판정 — 채택 4 · 수정채택 3 · 중복 병합 8.
- ✅채택 = 개발 축을 기반/제품으로 분리(GPT 지적이 맞다). 코드상 이미 별개다 — 기반은
tools/cody-mcp-gateway(MCP 9툴·runner.py), 제품은devplan/(project_state.json·QA봇·빌드게이트). 한 칸에 뭉쳐 있어 9층 셀이 "실행통로는 실재 / 판정층 없음"이라는 두 판정을 동시에 담고 있었다. - 쪼개니 모양이 나온다: 기반은 1·5·8·9 ● 통로가 뚫렸고, 매니저 제품은 9·11 ○ · 1·5·7·10 △로 비어 있다. "이름만 매니저"의 정체 = 기반 부실이 아니라 제품이 기반을 안 쓴다.
- 표기 = B안(페페 택1) — 열을 늘리지 않고 gptbutler 칸을
기반/매니저두 줄로. 실측 = 6열 유지 시 표 자연폭 810px로 데스크톱(컨테이너 1018) 넘침 0, 창을 좁히면(컨테이너 663) 표 안에서만 148px 스크롤. 7열 안(A)은 만들지 않았으므로 넘침은 실측이 아니라 예상이다 — 근거는 현재 810px에 열 하나가 더 붙는다는 것뿐. - 🔧수정채택 = "도구 0 → 위험 실행 도구 0" 표현은 그대로 안 받았다. 실측은 MCP 도구가 종류 불문 0건이다. GPT 문구대로 쓰면 "안전한 도구는 붙어 있다"로 읽혀 사실이 약해진다 →
도구 0 — 위험 실행을 사람 하드락으로 뺀 결과로 적었다. - 🔧수정채택 = KB 인계 결정이 P1-1을 막지 않게 쪼갰다. GPT안대로 P1-1 목표를 "인계 범위·접근권한·책임 정의"로 바꾸면 큰 결정 하나에 P1이 통째로 묶인다 → append(태그 기준만 있으면 착수)와 인계 설계를 별도 트랙으로.
- 🔧수정채택 = 라이브 대화 접점. 코디 1차 판정은 "실사 근거 0인 신규 기능 → 개선안 1줄"이었는데 페페가 의도를 밝혀 제품 방향으로 격상했다(아래).
- ✅채택 = s9 권한 3단계(읽기·대화 / 상태 갱신 / 위험 실행) · s8 기반↔제품 라벨 분리 · s10 결정 항목 갱신.
- 무변경 = s3·s4(GPT 언급 없음) · s6(GPT가 "유지" 명시).
🆕 라이브 대화 접점 = 제품 방향(페페 지시) — "poin-agent를 실제 사람 직원처럼 해서 사무실 직원과의 소통 수단으로 써보려는 시도. 기본은 슬랙·카톡·PFS 웹페이지." 지금 poin-agent는 사람을 상대하지 않는다(입력이 사람이 아니라 통화·카톡 로그다) → 대화 접점은 입구가 하나 더 생기는 것이다. - 반영 = 7절 본문 블록 + 그림 3(파이프라인) + 개선안 P1-4 신설. ⚠매트릭스에는 안 넣었다 — 실사표는 지금 있는 것만 적는다(1차 최대 오류가 이 경계를 흐린 것). - 코디 추천(페페 결정 대기) = PFS 웹 먼저(사내 로그인이라 말한 사람이 누군지 이미 안다) → 슬랙·카톡은 신원 확인·오발신 설계 선행. 순서상 P0-2(관측) 뒤에 둔다 — 사람이 직접 말을 걸면 답이 맞았는지 재는 눈이 먼저 필요하다. - 「도구 0」 원칙 불변 — 늘어나는 건 조회·정리·승인 요청까지고 제출·확약은 사람 전속.
그림 3장 신설(페페 지시 "이해하기 쉽게") — 전부 인라인 SVG, 색은 테마 변수만(하드코딩 색 0 → 테마 게이트 통과). 1. 4축 구조도(s0) — 바닥 공통 인프라 / 제품 둘 / 개발 제품이 gptbutler 기반을 딛는다 / 맨 위 사람·대화 접점. 2. 두 폐루프(s5) — 6단계 사슬 2줄, 끊긴 단계는 빨간 테두리, 되먹임 곡선(개발 축은 점선=죽은 경로), 가운데 띠가 상위 루프(공급-수요). 3. 대화 파이프라인(s7) — 직원→대화 접점→의도 파악→(조회=자동 / 업무=승인 게이트), 바닥 띠 = 제출·확약은 사람 전속.
🔑함정 = 그림이 plan_read를 오염시킨다. SVG의 <text>는 HTMLParser에 그냥 텍스트라 GPT가 읽는 본문에 낱말이 뒤죽박죽 섞인다 → plan_tools.SKIP에 svg 추가하고 바로 뒤 캡션(.fig-cap)이 뜻을 글로 지고 가게 했다. selftest에 캡션 3건 유실검사 + svg 라벨 누출 검사 추가.
🔑함정 = 마커(화살촉)를 SVG마다 정의하면 id 중복 → 문서 최상단 0×0 SVG에 defs 한 번만 두고 3장이 url(#ah)로 공유(브라우저 실측 marker-end: url("#aha") 해석 확인).
검증
- plan_tools --selftest = 구역 11 · 유실 0(캡션 3건 포함) · 표 보존 · s10 순서 · svg 누출 0 · 방어 4.
- check_theme FAIL 0 · check_font FAIL 0 · build_hub --selftest 11 PASS · project_state.py check 38건 통과.
- 실브라우저(1512×950) = 구역 11 · SVG 3장 렌더 · 페이지 가로스크롤 0 · 매트릭스 넘침 0 · 그림 넘침 0 · 13px 미만 0(페이지 내) · 말풍선 배지 11(메모 0) · 콘솔 오류 = favicon 404뿐.
- 그림 3장은 캡처해서 눈으로 확인(겹침·잘림 없음).
- 메모 15건 초기화 + 인계문 inbox/archived/ 이동. 코드 변경 0건(기획서 · plan_tools.py는 읽기 배관).
⏳ 페페 몫 = ①P0 착수 승인(추천 1순위 = 개발축 P0-1 파일쓰기 가드레일) ②결정 4건(태그 기준 / KB 인계 범위 / 판정 가중치 / 대화 채널 순서) ③육안(Ctrl+F5).
🔎 후속 — "판정 가중치" 질의 중 실측 발견 (26.8.4, 코드 변경 0)
페페 질문("판정 가중치 개념이 이해 안 된다")에 답하려고 현재 38카드로 시뮬레이션을 돌렸더니 결정 ③의 전제가 흔들렸다.
- 지금은 가중치가 아예 없다 —
portfolio_review()는 바구니 3개(③병목→④90%마무리→⑤60일방치)에 순서대로 담고 그룹 안은 stage 내림차순일 뿐이다. 실측 = 병목 16건 · 마무리 8건 · 60일 방치 0건. - 🔴가중치 숫자를 정해도 순서가 안 생긴다 — 병목40/마무리25/단계×3으로 매기면 상위 8건이 전부 77점 동점이다(8건 모두
병목+마무리+stage4로 필드가 똑같다). 병목20/마무리45로 뒤집어도 순서 불변(동점이라 무의미). - → 결정 ③의 실제 내용은 "숫자 몇 점"이 아니라 "동점을 무엇으로 깨나"다. 무전환 일수 0.5점/일을 얹으면 순서가 실제로 갈린다 — gpt-consult(19일) 1위, pfs는 1위→7위(무전환 5일). 이 뒤바뀜이 곧 페페가 내려야 할 가치 판단(묵은 결재 먼저 vs 현업 직결 먼저)이다.
- 🔴60일 방치 규칙은 한 번도 안 걸린다 — 병목 16건의 최대 무전환이 19일이다. 임계를 30일로 낮추거나, 안 걸리는 규칙임을 알고 두거나 결정 필요.
- 참고 = 병목 16건의 트랙 분포는
tool 8 : pfs-furniture 8로 균형. 트랙 예산을 동점 깨기에 쓰면 지금은 거의 영향이 없다.