← 목록
AI 2026-07-17 4KB 읽기 5분

CrownyAI 신셸 — 집사 CLI 계정/특성 설정 입력 + 검증(N8)

개요

CrownyAI 신셸(native/) 집사 CLI 폴백(brainq 토큰0 → claude CLI)에 계정/특성 프로필을 두어, 설정(crowny://settings) → "크라우니AI" 섹션에서 CLI 명령/모델/계정 디렉토리/특성(추가 시스템 프롬프트)을 편집하고 연결을 즉시 검증할 수 있게 했다. 지금은 클로드 CLI만 실사용 대상이나, 브릿지는 basename 판정으로 향후 타 CLI 여지를 열어뒀다.

무엇을 했는지

  1. tools/집사CLI브릿지.sh — 하드코딩(CLAUDE_BIN=...) 제거, env 구동으로 일반화.
- CROWNY_CLI_CMD(기본 /Users/ef/.local/bin/claude) / CROWNY_CLI_MODEL(기본 haiku) - CROWNY_CLI_PERSONA — claude 계열(basename==claude)일 때만 --append-system-prompt 부여 - claude가 아니면 인자 없이 CMD "$PROMPT" 만(최소 규약) - CLAUDE_CONFIG_DIR는 env 패스스루(호출측 책임, 스크립트가 직접 export 안 함) - 로그(psv) 출처 라벨이 claude_CLI_${MODEL}로 모델 반영

  1. native/crowny-ai-butler.mcbRunLocalCLI:가 defaults 4키
(crowny.ai.cliCommand/cliModel/cliConfigDir/cliPersona)를 읽어 NSTask environment에 CROWNY_CLI_CMD/CROWNY_CLI_MODEL/CROWNY_CLI_PERSONA/CLAUDE_CONFIG_DIR로 주입(빈 값은 미주입). 기존 120초 타임아웃·로그 구조는 그대로.

  1. native/crowny-ai-settings.m — "크라우니AI" 섹션에 N8 UI 추가.
- CASettingsTextRow 신규 뷰(제목/부제 + 우측 편집가능 240폭 NSTextField, 포커스아웃/Enter 시 onCommit 콜백) — CASettingsRow 관용구 답습. - 4개 편집행: 집사 CLI 명령 / CLI 모델 / CLI 계정 디렉토리 / 집사 특성. 편집 종료 시 defaults 저장(빈 문자열 = removeObjectForKey). - "CLI 연결 검증" 행: [검증] 버튼 → 브릿지를 defaults 프로필 env로 직접 실행(질의 "연결 확인. 한 단어로 답해", 60초 타임아웃, 백그라운드 NSTask + main 큐 라벨 갱신). 성공 ✓ 응답(N초): <첫 60자> / 실패 ✗ 실패: <사유>.

  1. tools/집사CLI브릿지.한선 — 동일 4상 로직을 env 프로필 반영으로 갱신.
- 명령베이스이름() 헬퍼(hanseonc_high 글자(s,i)가 1글자 문자열 반환하는 점에 유의 — RPN의 코드포인트 반환과 다름, 문자열 "/" 비교로 basename 판정) - 환경변수("CROWNY_CLI_CMD"/"CROWNY_CLI_MODEL"/"CROWNY_CLI_PERSONA") 읽어 명령 조립. - CLAUDE_CONFIG_DIR는 체계()가 popen 자식이라 현재 프로세스 env를 그대로 상속 — 함수 내부에서 별도 처리 불필요.

검증

  • cc -fsyntax-only -fobjc-arc -DCROWNY_VM_WEBKIT -DCROWNY_HYBRID crowny-ai-settings.m /
crowny-ai-butler.m — 에러 0.
  • 브릿지 실측 3건(env -i로 격리): ①기본(env 없음) "안녕 한 단어" → claude CLI 호출("Not logged in"
응답이나 파이프라인 정상, 라벨 claude_CLI_haiku) ②`CROWNY_CLI_MODEL=haiku CROWNY_CLI_PERSONA="반말로" 지정 → 정상 ③CROWNY_CLI_CMD=/없는/경로[집사CLI브릿지] CLI 없음: ... + exit 3. 로그 psv 라벨에 모델 반영 확인(claude_CLI_sonnet` 등 동적 반영).
  • .한선 컴파일(hanseonc_high 1282 큐브) + crownyc run 3케이스: 빈 입력→타|빈입력거부,
非claude CMD(/bin/echo)→인자 없이 그대로 echo, claude 계열 더미 바이너리(basename=claude)로 -p/--model/--append-system-prompt 인자 조립 확인.

관련 파일

  • /Users/ef/CrownyBrowser/tools/집사CLI브릿지.sh
  • /Users/ef/CrownyBrowser/tools/집사CLI브릿지.한선
  • /Users/ef/CrownyBrowser/native/crowny-ai-butler.m (cbRunLocalCLI:)
  • /Users/ef/CrownyBrowser/native/crowny-ai-settings.m (CASettingsTextRow, _buildCLIProfileAt:width:,
_cliValidateTapped:)

잔여 이슈

  • 로컬 claude CLI가 "Not logged in" 상태라 실사용 검증은 파이프라인/라벨까지만 확인(로그인 후
실응답 재확인 필요, 사용자 환경 의존).
  • 크라우니코드: lookup HIT 0건(재사용) / MISS 1건(생성, 신규 N8 기능) / learn 추가 1건.