# 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`
## 관련 문서
- [[아이디어/기계터키인]] — 기계 튀르크 원본 아이디어