18.9 KB · 수정 2026-08-19 10:42
목차

gptbutler — ChatGPT 앱 비서 (handoff)

ChatGPT 공식 앱을 창구로 삼아, 내 자산(PFS·user_brief·GitHub·C:\dev)을 MCP 서버 1개로 노출한다. PC = 데스크톱 앱(Codex 모드) 로컬 stdio(터널·인증 불필요) / 모바일 = 원격 HTTPS 커넥터. 역할 = 조회 · 브리핑 · devplan 매니저(현업↔AI개발 균형 조절). 서버는 신규가 아니라 C:\dev\tools\cody-mcp-gateway 확장.

🔶 루트 NOW 이관 — 진행·미결 (2026-08-19 대청소, 페페 지시)

루트 HANDOFF.md를 pncad 만 남기고 비웠다. 아래는 그때 옮겨온 원문(문구 무변경).

🆕 NOW (2026-08-04) — P0 전량 + P1 일부 완료 (진행상태는 페이지 최상단에서 본다)

단일 확인 창구 = devplan ai-stack-map.html 최상단 진행상태 블록(ai-stack-map-progress.json + 10초 폴링, 8799 재시작 불필요). 현재 18항목 = 완료 7 · 페페 차례 3 · 보류 1 · 대기 7(개발 6/9 · 현업 1/9).

확정 (그릴링 8건, 2026-08-02 — 재논의 금지)

항목 확정
보이스 경로 하이브리드 — 텍스트=커넥터, 보이스=사전 브리핑 주입(추가 과금 0)
노출 Cloudflare Tunnel (고정 도메인·자동 TLS). PC 상주 전제
인증 비공개 URL(경로 토큰) + 서버측 검증, 커넥터는 "무인증" 등록
쓰기 기존 cody-permission-broker(위험도 분류 + Telegram 승인) 재사용
1차 범위 PFS 업무조회 / user_brief·devplan 문서·결정 검색 / 작업·아이디어 등록(쓰기) / 코드·리포·로그 조회
PFS 경로 PFS REST API 재사용 (POST /api/auth/login → 세션 → API)
코드 위치 cody-mcp-gateway 확장 (원격 HTTPS 트랜스포트 + 조회 툴)
브리핑 시작 같은 대화에서 텍스트 호출 → 음성 버튼 전환

확정 2차 — devplan 매니저 (같은 날 추가 지시, 4건)

항목 확정
분류 기존 5카테고리 유지 + 카드에 biz(direct/indirect/experiment) 1줄 추가. 카테고리는 신규 프로젝트에 맞춰 수정 가능
순위 원리 2트랙 균형 모델 — 단일 순위표 금지. 현업/개발을 따로 뽑고 배분 자체를 감시
리듬 요청 시 1콜 + 주 1회 주간리뷰 자동 생성(weekly-review.html append)
쓰기 파일 직접 수정 금지. 추천 + 코디 지시문까지 생성, 승인 시 task_run으로 전달

[페페] 현업·개발 정의 확정 (2026-08-02) — devplan은 개발 보드다

구분 정의 어디서
현업 PFS·poin-agent·furniture-expert 등 실 업무 자동화를 실제로 활용하는 일(만드는 게 아니라 쓰는 것) devplan에서 다루지 않는다. 현재 창구=PFS, 별도 현업 대시보드는 추후 신설 후보. 매니저는 PFS API로 신호만 읽음
개발 가구·자동화·AI에 두루 걸친 만드는 일 devplan 카드 34개 전부

[코디] 균형 목표 재수립 — 시간 비율을 버리고 순환을 본다

"현업 60:개발 40"은 현업 실행 시간을 devplan이 볼 수 없어 근거가 없었다. 새 정의에서 현업과 개발은 경쟁이 아니라 공급-수요 관계(현업의 병목 → 개발 백로그 → 결과물이 다시 현업에서 활용)다. → 감시 대상을 "시간을 어떻게 쪼갰나"에서 "순환이 도는가"로 바꾸고, 목표는 측정 가능한 것에만 건다.

# 목표 측정 경보
A(핵심) 환류 — 만든 것이 실제로 쓰이는가 live 카드별 최근 30일 사용 흔적(스케줄러 실행 기록·로그 mtime·산출물 갱신일). 전량 자동은 불가 → 나머지는 "확인 필요" 표기 live인데 30일 흔적 0 = 헛돈 개발 후보
B 개발 갈래 배분(가구·PFS : 도구) 최근 2주 세션문서 수 × dev_track — devplan 안에서 정확히 측정 기본값(가정) 60:40, ±15%p
C 유입 — 현업의 고통이 개발로 올라오는가 PFS·poin-agent 판정 항목 중 백로그 미이관분의 체류일수 판정만 되고 7일째 착수 0

현업 실행량에는 목표를 걸지 않는다(측정 근거가 근사뿐 → 거짓 경보). A·C가 현업을 대리한다. 현업 대시보드가 생기면 A·C를 실측으로 대체.

[페페] 초안 수정 (2026-08-02) — 수치형 순위의 cold start

초안은 순위를 이력 수치(정체일수·마감 D-N·세션 수)로 만들었다. 그러면 신규 작업이 구조적으로 하위에 깔린다 — 방금 생긴 일은 이력이 0이라 어느 규칙에도 안 걸리는데, 현장에서 방금 터진 문제나 통화로 막 확정된 납기가 대개 제일 급하다. → 2층 분리로 수정.

하는 일 근거
판정층(순위 생성) "이게 지금 얼마나 중요한가" 문맥 판정 — poin-agent(현장 급박도: 통화·카톡·PFS 실황) / furniture-expert(도메인 영향: 제조·납기) / 코디(기술 병목·비용: 코드·의존). 3축 라벨 + 근거 1줄. 이력이 없어도 판정된다
배분층(가드레일) "어느 트랙에 시간을 쓰고 있나" 수치 — 편향 경보·방치 감지·예산 잔량. 순위를 만들지 않고 감시만

[페페] 기록 주체 표기 (2026-08-02) — 비서를 열기 전 선행

코디·GPT 병행으로 파일 기록에서 누가 쓴 것인지 혼선이 생긴다 → 모든 기록 문서에 작성자 태그. 표기 = [코디]/[GPT]/[페페](SARA 노션 컨벤션 승계), 위치 = 항목 단위 접두(sessions.md 각 줄·handoff NOW 항목·ideas.md append·archive 이관 항목), 세션문서는 제목 줄에 — 기록: [코디] 1회. frontmatter 금지(No frontmatter 유지). 발화 주체 우선(페페 지시를 코디가 옮겼으면 [페페]). 자동화 기록은 도구명([relay]). 전역 규칙 원본 = user_brief/rules/workflow.md "작업 원칙"에 기록 완료. 이 프로젝트 적용 = note_add가 남기는 줄은 자동 [GPT], task_run이 코디를 돌려 만든 기록은 [코디], 판정 judged_by도 같은 어휘.

🔑 플랫폼 제약 (재조사 금지 — 결론만. 2026-08-02 확인)

초안 정정 — "음성모드엔 커넥터가 없다"는 웹·모바일 커스텀 커넥터에만 해당했다. 데스크톱 앱은 다르다. 페페 지시로 Codex 경로를 확인해 계획을 2트랙으로 재편했다.

  1. 데스크톱 앱(Codex)은 로컬 stdio MCP를 직접 등록한다 — 설정 → MCP servers → STDIO/Streamable HTTP, ~/.codex/config.toml에 저장되고 데스크톱 앱·Codex CLI·IDE 확장이 설정 공유. → PC 경로는 터널·인증·경로토큰이 전부 불필요.
  2. 데스크톱 음성이 Codex를 지휘한다(2026-07-23~, Win/macOS, Plus 포함). ✅[페페 실측 26.8.3] 음성 대화가 MCP 툴까지 도달한다 — Codex 모드 음성으로 비서 툴(brief_today 등) 작동 확인. P0 실측 항목 해소.
  3. 웹·모바일 커스텀 커넥터는 음성 모드에서 동작하지 않는다 → 모바일 음성에는 브리핑 주입 유지.
  4. 모바일에는 로컬 stdio가 없다 — 원격 HTTPS 커넥터만. 모바일을 포기하지 않는 한 터널+HTTP 트랜스포트는 필요하나 P2로 후순위.
  5. 모바일 앱은 쓰기 액션 비활성 — 이동 중에는 읽기·브리핑만 된다고 전제.
  6. GPT-Live 음성은 30~40분에 컨텍스트 한계로 끊긴다(session-relay 조사, OpenAI 헬프센터 명시·수치 비공개) + 음성 세션 딥링크가 없어 자동 인계 불가 → 브리핑은 언제든 1콜로 재생성 가능해야 한다.

🔁 session-relay 통합 (2026-08-02 — 그쪽 Codex v1 설계 확정분과 결합)

두 프로젝트는 역할이 다르고 Codex 표면이 같다. session-relay = Codex 세션 자동 인계(codex exec 체인), gptbutler = 사람이 Codex와 대화(MCP 툴). 공유하는 것은 셋뿐이고 코드는 각자 리포에 남는다.

  1. MCP 설정 공유(공짜 통합)~/.codex/config.toml의 MCP 서버는 데스크톱 앱·CLI·IDE 공통 → gateway를 한 번 등록하면 codex exec 체인이 돌린 무인 세션도 같은 툴(PFS·문서·코드 조회)을 그대로 쓴다.
  2. task_run 백엔드 2개 — 대화형=claude -p, 무인 장시간=relay.py --target codex. 체인상한(12h/5회)·텔레그램 승인·"중단" 지시는 guard.py 무수정 공유. codex 백엔드 연결은 session-relay v1 완성 후(선행 의존).
  3. 사용량 지표 — codex는 rate_limits.primary.used_percent 자체 보고, Claude는 /usage 역산 → 매니저 주간리뷰에 "개발 예산 잔량"으로 함께 싣는다. ⚠usage는 비용 지표지 컨텍스트 잔량이 아니다(GPT 상의 결론) — 두 숫자를 섞지 않는다.
  4. 고정 vs 동적 분리 — AGENTS.md=고정 컨벤션 / 인계문·툴 반환값=동적. priority_rules.md도 고정 쪽. ⚠.chatgpt-projects/g-p-*/AGENTS.md는 앱이 덮어쓰는 읽기전용 미러라 주입 채널로 쓰지 않는다.
  5. 음성 30분 벽 — session-relay의 발단이 GPT-Live 30~40분 컨텍스트 한계였고, 음성 세션 자동 인계는 비범위로 확정(시작·재개 딥링크 없음) → gptbutler는 "끊기면 brief_today 1콜로 재시작"으로 우회.

재조사 금지(session-relay 실측 완료): 딥링크 codex://new?prompt= 프리필 성공 · codex exec --json 이벤트 스트림과 -o 파일 · rollout jsonl 경로 · app-server daemon Windows 전면 불가 · state_5.sqlite threads 지연 삽입(검증 소스 부적합) · 앱 번들 alpha exe 대신 standalone codex + 버전 핀.

불변 핵심

아카이브 (완료된 작업 서사 — 원문은 archive.md)

→ 원문 = projects/gptbutler/archive.md · 세션 색인 = sessions.md