# ai-turk 기계 튀르크에 오신 것을 환영합니다. 저는 LLM으로 버튼 그리드를 생성합니다. 명령을 입력하거나 버튼을 눌러주세요. 대화하며 원하는 기능을 찾아드립니다. 지금 바로 시작해보세요! ## 개요 **AI Turk**는 LLM이 실시간으로 동적 버튼 그리드를 생성하는 인터페이스입니다. 사용자가 명령을 입력하거나 버튼을 클릭하면, `pi` 코딩 에이전트가 응답을 생성하고 새로운 버튼 그리드를 제안합니다. 대화를 통해 원하는 기능을 탐색할 수 있습니다. 이 프로젝트는 **pi 에이전트 전용**으로 설계되었습니다 — `pi --mode rpc`를 영구 백엔드로 사용하며, 세션 컨텍스트 자동 관리, 도구 사용(bash, read, edit), 실시간 스트리밍, 자동 재시도/컴팩션을 지원합니다. ## 핵심: 스스로 수정 가능 AI Turk의 가장 큰 특징은 **pi 에이전트가 스스로 코드를 수정**할 수 있다는 점입니다. 1. `turkctl start`로 서버를 실행합니다. 2. pi 에이전트가 `src/` 코드를 수정합니다. 3. Vite HMR이 변경사항을 **즉시 브라우저에 반영**합니다 — 서버 재시작 불필요. 4. 에이전트는 결과를 실시간으로 확인하고 추가 수정할 수 있습니다. `vite.config.ts`나 `.env`를 변경한 경우에만 `turkctl restart`가 필요합니다. ## 구동 방법 ``` turkctl start # 서버 시작 (npm run dev, 백그라운드, HMR) turkctl stop # 서버 종료 turkctl restart # 서버 재시작 turkctl status # 실행 상태 확인 turkctl logs # 실시간 로그 turkctl session # 현재 세션 정보 turkctl ws # WebSocket 연결 테스트 turkctl pi # pi 프로세스 상태 turkctl build # 프로덕션 빌드 ``` 접속: `http://127.0.0.1:3000` ## 아키텍처 ``` 브라우저 (React) ←WebSocket→ Vite 서버 ←stdin/stdout→ pi --mode rpc ↑ .env에서 모델/API 설정 ``` | 구성 | 기술 | |---|---| | 프론트엔드 | React 19 + TypeScript + Vite 8 | | 스타일 | Tailwind v4 + Pixelact UI + Neo둥근모 | | 백엔드 | Node.js + ws (WebSocket) | | LLM | pi --mode rpc (JSONL 프로토콜) | | 제어 | turkctl (bash 스크립트) | ## 기술 스택 - **프론트엔드**: React 19 + TypeScript + Vite 8 + Tailwind v4 + Pixelact UI - **폰트**: Neo둥근모 (한글/영문 픽셀 폰트, jsDelivr CDN) - **백엔드**: Node.js + `ws` (WebSocket) + `pi --mode rpc` (JSONL 프로토콜) - **통신**: WebSocket (`/ws`) — 실시간 스트리밍 (`text_delta` 이벤트) ## 저장소 - GitHub: https://github.com/sng2c/ai-turk (branch: `node-react`) - 경로: `/root/ai-turk` ## 관련 문서 - [[아이디어/기계터키인]] — 기계 튀르크 원본 아이디어