From d07a8dad760facf7fbfa93edfda3c9ead4ecb400 Mon Sep 17 00:00:00 2001 From: gahusb Date: Fri, 12 Jun 2026 07:34:08 +0900 Subject: [PATCH] =?UTF-8?q?feat(co-gahusb):=20BE=20=ED=81=B4=EB=9D=BC?= =?UTF-8?q?=EC=9D=B4=EC=96=B8=ED=8A=B8=20=EB=B0=B0=EC=84=A0=20(.mcp.json?= =?UTF-8?q?=20+=20=EC=97=AD=ED=95=A0=20=EB=B8=94=EB=A1=9D=20+=20=EC=85=8B?= =?UTF-8?q?=EC=97=85=20=EB=AC=B8=EC=84=9C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- .mcp.json | 9 +++++++++ CLAUDE.md | 11 +++++++++++ co-gahusb/CLIENT_SETUP.md | 19 +++++++++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 .mcp.json create mode 100644 co-gahusb/CLIENT_SETUP.md diff --git a/.mcp.json b/.mcp.json new file mode 100644 index 0000000..7da5f7f --- /dev/null +++ b/.mcp.json @@ -0,0 +1,9 @@ +{ + "mcpServers": { + "co-gahusb": { + "type": "http", + "url": "https://gahusb.synology.me/api/co/mcp", + "headers": { "Authorization": "Bearer ${CO_BUS_KEY}" } + } + } +} diff --git a/CLAUDE.md b/CLAUDE.md index 4a89171..fff9118 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -485,3 +485,14 @@ Gitea Webhook 수신 → 자동 배포. HMAC SHA256 검증(`X-Gitea-Signature` - **렌더/생성 워커 분리**: music/video/image/insta 무거운 작업은 Windows `web-ai` 워커. NAS 코드의 `*_provider.py`/`card_renderer.py`가 DEPRECATED stub면 실 로직은 web-ai 쪽이 authoritative - **Playwright Dockerfile**: bookworm 고정 + 수동 chromium deps, `--with-deps` 금지 (`feedback_playwright_dockerfile.md`) - **lab 네이밍**: `-lab`은 개발/연구 단계에만, 정식 서비스엔 미사용 (`feedback_lab_naming.md`) + +--- + +## 협업 팀 버스 (co-gahusb) — 이 세션의 역할: **BE** + +이 세션은 백엔드(BE) 역할이다. co-gahusb MCP 툴로 다른 세션(FE/AI/Producer)과 협업한다. +- **소유권**: 이 세션은 `web-backend` repo만 쓴다(FE=web-ui, AI=web-ai). +- **공유 리소스 변경 전 반드시 `acquire_lock(resource, "BE")`**: 대상 = `nas-deploy`, `stock-db-schema`, `lotto-db-schema`, `memory-mirror`, `nginx-conf`, `compose`. 점유 중이면 대기, 긴 작업은 `heartbeat_lock`, 끝나면 `release_lock`. +- **모든 툴 호출에 `role="BE"`** (또는 `from_role`/`created_by`에 BE). +- **수신**: `/loop`로 주기적으로 `read_inbox("BE", after_id=)` + `list_tasks(assignee_role="BE")` 확인. +- 키 `CO_BUS_KEY`는 환경변수로 주입(커밋 금지). diff --git a/co-gahusb/CLIENT_SETUP.md b/co-gahusb/CLIENT_SETUP.md new file mode 100644 index 0000000..94fa60c --- /dev/null +++ b/co-gahusb/CLIENT_SETUP.md @@ -0,0 +1,19 @@ +# co-gahusb 클라이언트 설정 + +## 공통 +1. `CO_BUS_KEY` 환경변수를 각 머신에 설정(서버 `.env`의 값과 동일). +2. 해당 repo 루트 `.mcp.json`에 co-gahusb HTTP MCP 등록(이 repo의 예시 참고). +3. CLAUDE.md 역할 블록의 `/loop` 폴링 규약을 따른다. + +## web-ai (다른 머신) +web-ai 머신의 repo 루트에 아래 `.mcp.json` 생성, 역할 = **AI**: +```json +{ "mcpServers": { "co-gahusb": { + "type": "http", + "url": "https://gahusb.synology.me/api/co/mcp", + "headers": { "Authorization": "Bearer ${CO_BUS_KEY}" } } } } +``` +web-ai CLAUDE.md에 역할 블록 추가(role="AI", 소유권=web-ai repo, 동일 락 규약). + +## Producer (오케스트레이터 세션) +별도 repo 없이 조율 담당. `team_log()`로 전체 활동 감시, `create_task`로 분배, `acquire_lock`로 교차 작업 직렬화.