Update Multi-AI CLI integration doc with verified implementation

- Add implementation completed section (2025-09-29)
- Document non-TTY pipe mode solution
- Include verified CLI flags for Claude/Gemini/OpenAI
- Add environment variables for forcing non-interactive mode
- Replace pexpect with subprocess.exec approach
This commit is contained in:
happybell80 2025-09-29 17:38:07 +09:00
parent 45f9c82d2c
commit 33926080a2

View File

@ -17,6 +17,28 @@ status: idea
- **51123 서버**: Claude만 설치
- **51124 서버**: Claude, Gemini, OpenAI 모두 설치, 세션 파일 접근 가능
## 구현 완료 (2025-09-29)
### 핵심 해결책: 비-TTY 파이프 모드
- **문제**: pexpect가 PTY 생성 → TUI 감지 → 대화형 모드 실행
- **해결**: subprocess.exec + 파이프 + 환경변수로 TUI 회피
- **검증**: 모든 CLI에서 non-interactive 모드 작동 확인
### CLI별 구현 방법
- **Claude**: `claude -p "prompt" --output-format json` → JSON에서 'result' 필드 추출
- **Gemini**: `gemini -p "prompt"` → stdout 라인별 스트리밍
- **OpenAI**: `openai chat.completions.create --stream` → SSE 형식 파싱
### 환경변수 설정
```python
env = {
'CI': '1', # CI 환경 표시
'TERM': 'dumb', # 터미널 기능 없음
'NO_COLOR': '1', # ANSI 컬러 비활성화
'CLICOLOR': '0' # 추가 컬러 비활성화
}
```
## 목표
여러 AI의 의견을 동시에 얻어 더 나은 의사결정을 내리고 개발 생산성 향상
@ -106,7 +128,7 @@ tmux attach -t ai-panel
### Phase 0: 단일 CLI 프로토타입
- **대상**: Claude CLI만으로 시작
- **기술**: pexpect (pty 대신) - PTY 제어, 타임아웃, 패턴 매칭에 강점
- **기술**: subprocess.exec (파이프 모드) - PTY 회피로 TUI 방지
- **검증 시나리오**:
- 정상 스트리밍 응답
- 세션 만료 처리
@ -126,10 +148,10 @@ tmux attach -t ai-panel
- **인터페이스**: healthcheck() | ask()->async iterator | cancel() | resume()
- **모드**: PTY/STDIO 모드 지원
- **정규화**: ANSI 제거, 프롬프트 재출현, 타임아웃 규칙 내장
- **pexpect 패턴**:
- Claude: "" 프롬프트, timeout=30
- Gemini: ">" 프롬프트, timeout=25
- Codex: ">>>" 프롬프트, timeout=20
- **CLI 플래그** (2025-09-29 검증):
- Claude: `-p "prompt" --output-format json` (result 필드 추출)
- Gemini: `-p "prompt"` (stdout 스트리밍)
- OpenAI: `chat.completions.create --stream` (SSE 파싱)
### 파싱 규칙
- **종료 판단**: 프롬프트 패턴 + 침묵 타임아웃 + 길이 상한
@ -152,9 +174,9 @@ tmux attach -t ai-panel
- ~/.config/codex: 600 (user read/write only)
### 입출력 제어
- **pexpect 사용**: pty 모듈보다 안정적, 패턴 매칭 우수
- **파이프 모드 사용**: PTY 생성 회피로 TUI 방지 (2025-09-29 검증)
- **비동기 처리**: asyncio.subprocess로 여러 CLI 동시 제어
- **입력 전송**: expect/send 메소드 활용
- **환경변수 강제**: CI=1 TERM=dumb NO_COLOR=1 CLICOLOR=0
### 응답 파싱
- **ANSI 코드 제거**: 색상 코드, 스피너, ASCII 아트 정규식 제거