From e8dfdd97cedc56c8d93b8f73557917ec32943360 Mon Sep 17 00:00:00 2001 From: Variet Agent Date: Fri, 20 Mar 2026 06:50:05 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20=EC=84=A4=EA=B3=84=EC=84=9C=20v4.1=20+?= =?UTF-8?q?=20STATUS.md=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=20=E2=80=94?= =?UTF-8?q?=20Wiki.js=20=EC=97=B0=EB=8F=99=20=EB=B0=98=EC=98=81,=20Debate?= =?UTF-8?q?=20Room=20=F0=9F=9A=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .agent/references/STATUS.md | 9 ++++-- docs/design/debate-room-v2.md | 59 ++++++++++++++++++----------------- 2 files changed, 38 insertions(+), 30 deletions(-) diff --git a/.agent/references/STATUS.md b/.agent/references/STATUS.md index ee42653..6a20233 100644 --- a/.agent/references/STATUS.md +++ b/.agent/references/STATUS.md @@ -2,7 +2,7 @@ > AI 에이전트는 **세션 시작 시** 이 문서를 읽어 전체 맥락을 파악합니다. > **세션 종료 시** 변경사항을 이 문서에 반영합니다. -> Last updated: 2026-03-18 +> Last updated: 2026-03-20 ## 시스템 개요 @@ -50,6 +50,8 @@ Discord 메시지 | NC 핸들러 | `handlers/nc_handler.py` | 자연어→NC 도구 라우팅 (Embed 응답) | ✅ | | AI Foreman | `core/foreman.py` | 목표 분해 + 상담 + Vikunja 일괄 등록 (/goal) | ✅ | | 통합 분류 라우팅 | `api/discord_bot.py` | unified prompt→JSON→모드별 핸들러 라우팅 | ✅ | +| Wiki.js 클라이언트 | `tools/wiki_client.py` | GraphQL API — 페이지 CRUD + 대시보드 | ✅ | +| AI Debate Room | `handlers/debate_handler.py` | 파일 기반 자동 토론 + Flash 합의 판정 + Wiki.js 동기화 | 🚧 | | CLI Bridge | - | Gemini CLI 영속 프로세스 (PTY 미지원으로 보류) | ⏸️ | ## 모듈 상태 @@ -66,9 +68,12 @@ Discord 메시지 | NC 4모듈 | `tools/nc_*.py` | ✅ | Files/Calendar/Mail/Contacts | | AI Foreman | `core/foreman.py` | ✅ | 목표 분해 + 상담 + Vikunja 등록 | | 에이전트 워크플로우 | `.agent/` | ✅ | STATUS.md + 수칙 업데이트 | +| Wiki.js | `tools/wiki_client.py` | ✅ | GraphQL CRUD + 대시보드 | +| AI Debate Room | `handlers/debate_handler.py` | 🚧 | 파일 기반 자동 토론 + Wiki.js 동기화 | ## 최근 마일스톤 +- **2026-03-20**: AI Debate Room v2 — 파일 기반 자동 토론 + Flash 합의 판정 + Wiki.js 동기화 - **2026-03-18**: Nextcloud 4모듈 + NC핸들러 + AI Foreman v0.1 + unified 분류→라우팅 구현 - **2026-03-17**: 커뮤니티 트렌드 스크래퍼 구현 (DCInside 인기글 + Gemini Skill) - **2026-03-16**: 에이전트 수칙 업데이트 + STATUS.md 도입 + .agents 통합 @@ -80,5 +85,5 @@ Discord 메시지 ## 현재 미해결 - **핫딜 통합 수집기** (#393) — 뽐뿌/퀘이사존/딜봄/클리앙 핫딜 통합 크롤링 + 트렌드 분석 -- **AI 회의실 (Debate Room)** (#387) — Gemini + Claude CLI 래퍼로 3자 토론 세션 +- **AI Debate Room** (#387) — 파일 기반 자동 토론 MVP 테스트 중 (합의 판정, response.md 규정 준수 검증 필요) - **CLI Bridge PoC** (#203) — Windows PTY 미지원으로 보류. pywinpty 또는 Docker 환경 필요 diff --git a/docs/design/debate-room-v2.md b/docs/design/debate-room-v2.md index 1011c3c..1c271b8 100644 --- a/docs/design/debate-room-v2.md +++ b/docs/design/debate-room-v2.md @@ -1,6 +1,6 @@ -# AI Debate Room — 설계서 v4 +# AI Debate Room — 설계서 v4.1 -> 확정 구조: 파일 기반 토론 + Wiki 동기화 +> 확정 구조: 파일 기반 자동 토론 + Wiki.js 실시간 동기화 ## 아키텍처 @@ -43,20 +43,23 @@ debate_gemini/ debate_opus/ ```mermaid flowchart TD - S[!debate-start 주제] --> M1[사회자: 첫 발언자 선택] - M1 --> W1[input.md 작성 + wiki/ 동기화] - W1 --> D1[Discord 시그널 전송] - D1 --> AG1[AG 발언: response.md 작성] - AG1 --> M2[사회자: response.md 읽기] - M2 --> WIKI[Wiki.js 업데이트] - WIKI --> CHECK{합의 판정} - CHECK -->|대립 중| W2[상대 input.md 작성 + wiki/ 동기화] - W2 --> D2[Discord 시그널] - D2 --> AG2[상대 AG 발언] + S["!debate-start 주제"] --> M1["사회자: 첫 발언자 선택"] + M1 --> W1["input.md 작성 + wiki/ 동기화"] + W1 --> D1["Discord 시그널 전송"] + D1 --> AG1["AG 발언: response.md 작성"] + AG1 --> M2["사회자: response.md 읽기"] + M2 --> LOG["Round Log append (로컬 + Wiki.js)"] + LOG --> MERGE["Flash: Working Document 통합 편집"] + MERGE --> WIKI["Wiki.js 업로드 (WD + Round Log)"] + WIKI --> SYNC["양쪽 wiki/ 폴더 동기화"] + SYNC --> CHECK{"합의 판정 (Flash)"} + CHECK -->|대립 중| W2["상대 input.md 작성 + wiki/ 동기화"] + W2 --> D2["Discord 시그널"] + D2 --> AG2["상대 AG 발언"] AG2 --> M2 - CHECK -->|합의| DONE[Wiki 최종 기록 + 사용자 검토 요청] - CHECK -->|펜딩| ASK[사용자에게 질문] - ASK --> USER[사용자 응답] + CHECK -->|합의| DONE["Wiki 최종 기록 + 사용자 검토 요청"] + CHECK -->|펜딩| ASK["사용자에게 질문"] + ASK --> USER["사용자 응답"] USER --> W2 ``` @@ -89,15 +92,14 @@ flowchart TD ## Wiki.js 구조 ``` -/Debates/{주제}/ - Agenda ← 토론 의제 + 범위 - Working-Document ← 진행 중 합의 사항 (라이브) - Round-Log ← 라운드별 요약 기록 - Conclusion ← 최종 합의 (종료 후) +/debates/{topic-slug}/ + working-document ← Flash가 통합 편집한 산출물 (라운드마다 업데이트) + round-log ← 대화 전문 (append) + conclusion ← 최종 합의 (종료 후) ``` -- 사회자만 Wiki 쓰기 권한 -- 매 라운드 후 Working-Document 업데이트 +- 사회자만 Wiki 쓰기 — `WikiClient.upsert_page()` 사용 +- 매 라운드 후 Working Document + Round Log 자동 업로드 - AG는 로컬 `wiki/` 폴더에서 읽기만 ## Discord 채널 역할 @@ -122,16 +124,17 @@ Discord 메시지는 **시그널 용도**만. 전문은 모두 로컬 파일로 | 파일 | 역할 | |------|------| -| `handlers/debate_handler.py` | 세션 관리, 파일 읽기/쓰기, 턴 관리 | +| `handlers/debate_handler.py` | 세션 관리, 파일 I/O, 자동 루프, 합의 판정 | | `prompts/debate/participant_base.md` | AG 참여자 프롬프트 (→ GEMINI.md로 복사) | | `prompts/debate/moderator.md` | 사회자 프롬프트 | | `api/discord_bot.py` | 커맨드 + AG 메시지 감지 | -| `tools/wiki_helper.py` | Wiki.js 연동 | +| `tools/wiki_client.py` | Wiki.js GraphQL API 클라이언트 | ## 미결 사항 -1. AG가 `response.md`에 쓰라는 지시를 **확실히 따르는지** 검증 필요 -2. UTF-8 인코딩 — `debate_handler.py`에서 파일 읽기/쓰기 시 명시 -3. Wiki.js 페이지 → 로컬 폴더 동기화 함수 구현 (`wiki_helper.py`) -4. 합의 판정 Flash 프롬프트 정교화 +1. ~~Wiki.js 연동~~ → ✅ 구현 완료 +2. ~~Working Document 통합 편집~~ → ✅ Flash merge 구현 +3. ~~Round Log~~ → ✅ 대화 전문 append 구현 +4. AG가 `response.md`에 쓰라는 지시를 **확실히 따르는지** 검증 필요 5. 컨텍스트 창 관리 — 토론이 길어질 때 히스토리 압축 전략 +6. Nextcloud 백업 연동 (나중)