크라우니에이전트 v0.5 — 대화형 책쓰기 (서비스 안에서 내용 늘리기)
개요
같은 날(2026-05-27) v0.4 통합 + Gemini 대필 8챕터 완성 후, 사용자가 "책 안에서 대화체로 내용을 계속 늘려나갈 수 있게" 만들어 달라고 요청. 이번 라운드에서 챕터 페이지의 채팅창에 한 줄 요청 → Gemini가 새 단락 생성 → 챕터 본문에 자동 append → HTML 자동 재빌드 → 페이지 새로고침의 전체 흐름을 한선씨로만 구현했다.
또한 Om/Ta/Um 3권을 8챕터씩 메타 등록해 4부작 32챕터 구조 완성.
무엇을 했는지
- 메인.한선에
확장명령 추가
체계() 함수로 gemini-api.toau 호출 (GEMINI_API_KEY 인라인 export)
- 응답을 챕터 .md에 append (구분선 + 독자 요청 + 새 단락)
- 챕터 메타에 확장수 증가, 상태: 확장중
- 책빌더.한선에 채팅창 UI 추가
<textarea> + "새 단락 만들기" 버튼
- fetch POST /api/book/agent/expand → 응답 표시 → 2.5초 후 새로고침
- 책서버.한선 신규 작성 (포트 9931) — 완전 한선씨 HTTP 서버
/<슬러그>/*.html)
- 책방 페이지 / (4권 목록)
- JSON API: /api/book/agent/projects, /api/book/agent/expand, /api/book/donate
- 확장 API는 메인.한선을 자식 프로세스로 호출 → 응답 추출 → 책빌더 자동 재실행
- Om/Ta/Um 3권 등록 (한선씨 CLI 24회 호출)
검증된 엔드투엔드
bash# 책서버 시작 (한선씨 한 줄)
GEMINI_API_KEY="…" \
/Users/ef/CrownyOS/crownyc/crownyc run /Users/ef/crowny-agent/책서버.toau &
# 브라우저
open http://127.0.0.1:9931/ # 책방
open http://127.0.0.1:9931/ilcrowny-ti/ # 목차
open http://127.0.0.1:9931/ilcrowny-ti/5.html # 챕터
# 챕터 페이지 채팅창에서 한 줄 입력 → "새 단락 만들기" → 자동 반영
# 또는 curl 직접:
curl -X POST http://127.0.0.1:9931/api/book/agent/expand \
-H "Content-Type: application/json" \
-d '{"slug":"ilcrowny-ti","chap":3,"prompt":"왜 하필 6561명일까요?"}'
실제 검증: 챕터 3에 "왜 하필 6561명일까요? 너무 많지 않을까요?" 질문 → "딱 맞는 숫자, 6561" 소제목 + 도서관 비유 단락 자동 추가. HTML 8917B → 10901B.
한선씨 비율 — 100%
| 영역 | 파일 | 줄수 | 컴파일 결과 |
|---|---|---|---|
| 진입점 CLI | 메인.한선 | 209 | 616 KB |
| 데이터 모델 | 책프로젝트.한선 | 88 | 203 KB |
| 오케스트레이션 | 오케스트레이터.한선 | 110 | 420 KB |
| 정적 빌더 | 책빌더.한선 | 245 | 849 KB |
| Gemini HTTPS | 스크립트/gemini-api.한선 | 83 | 148 KB |
| HTTP 서버 | 책서버.한선 | 226 | 445 KB |
curl(체계 호출 1회 — Gemini HTTPS).Node / Python / Streamlit / LangChain 0.
라우트 (책서버 9931)
| 메서드 | 경로 | 역할 |
|---|---|---|
| GET | / | 책방 (4권 카드 목록) |
| GET | /<슬러그>/ | 책 목차 HTML |
| GET | /<슬러그>/<n>.html | 챕터 HTML |
| GET | /api/book/agent/projects | JSON 책 목록 |
| POST | /api/book/agent/expand | 챕터 대화형 확장 → Gemini → append → HTML 재빌드 |
| POST | /api/book/donate | 챕터/책 후원 → data/donations.json |
4부작 등록 현황
ilcrowny-ti 8챕터 [Ti권 — 대필완료, 챕터 5·3 확장 적용됨]
ilcrowny-om 8챕터 [Om권 — 메타만, 대필 대기]
ilcrowny-ta 8챕터 [Ta권 — 메타만, 대필 대기]
ilcrowny-um 8챕터 [Um권 — 메타만, 대필 대기]
Om/Ta/Um 대필은 Ti와 동일 흐름:
bash# 권별 리서치 번들 (Agent 위임 가능)
# → Gemini 대필 8회 × 3권 = 24회
# → 책빌더 권별 재실행
핵심 발견 (메모리 갱신 대상)
- 한선씨 예약어 토큰 —
메서드(이번 발견): 함수 매개변수명으로 못 씀. 파싱 에러인자명 기대(expected), '메서드' 발견(found). →방식등으로 대체 체계()환경변수 비상속 (지난 발견 보강): 자식 프로세스에 부모 env 안 넘김. 명령 문자열에KEY='" + 값 + "' 명령인라인 export 필수체계()동기 동작 확인: stdout redirect 후 즉시읽기()가능. 명령이 끝나기 전 읽기 발생 안 함.
잔여 이슈
- Om/Ta/Um 권 리서치 + 대필 — Ti 패턴 그대로 24챕터
- gateway 등록 —
book-agent.crowny.org:9931게이트웨이가 픽업하면 외부 URL 활성 (별도 세션) - 확장 누적 표시 — 챕터 페이지에서 "지금까지 N회 함께 늘렸어요" 카운터 노출
- 챕터 상태 머신 — 현재
대필완료 → 확장중.확장완료단계로 잠금/해제
다음 시연 한 줄
브라우저에서 http://127.0.0.1:9931/ilcrowny-ti/5.html
→ 본문 아래 파란 박스에 "이 부분에 코드 예시 더 보여주세요" 입력
→ "새 단락 만들기" 클릭
→ Gemini가 새 단락 작성 → 본문에 자동 추가 → 페이지 새로고침