Files
AriWeb-Suite/Ariweb-Suitle_Dev-Order_v0.3.1.md
T

4.9 KiB

Ariweb Suite 개발 지시 — 작성자: Oz · v0.3.1

작성자: Oz 작성일: 2026-10-29 이전 버전: v0.3.0(HAL AI 채팅룸, Oz, 2026-10-29) · v0.2.1(HAL 고위험 재인증 안내 위치, Neo) · v0.2.0(Webmaker 직접 편집, Neo) · v0.1.4 · v0.1.1 이번 개정: HAL 0.3.0 의 로컬 CLI 연결이 bear(HAL 운영 서버)에 이미 설치된 CLI 를 찾지 못하는 결함 수정. 결함 수정이므로 끝 버전 번호만 올린다 — HAL 0.3.0 → 0.3.1. HAL 에만 적용하며 이전 지시의 모든 기준은 그대로다.

개정 이력

  • v0.3.0 · Oz · 2026-10-29: HAL 운영자 콘솔 AI 채팅룸(통합 방 + 개별 방), 모델 연결(로그인·OAuth·API 키), 스킬·도구·MCP.
  • v0.3.1 · Oz · 2026-10-29: 서버 설치 CLI 자동 탐색·연결 가능화(Claude Code·Codex), 로그인 상태 표시.

1. 사용자 요구(Oz 원문, 약화 금지)

bear 서버(HAL 운영 서버)에 이미 CLI 가 설치되어 있는데 설치된 것을 확인하지 못하고 있습니다. 서버의 설치 상황을 점검해서 이미 설치된 것은 찾아서 연결 가능하게 수정하세요.

2. 점검(구현 전 실제 확인)

  • 설치 위치: ~/.local/bin/claude(Claude Code 2.1.312), ~/.local/bin/codex(Codex 0.162.1). HAL 실행 계정의 로그인 셸 PATH 에는 있으나 systemd 서비스 PATH 에는 ~/.local/bin 이 없다 → 0.3.0 의 "PATH 의 claude" 탐색이 실패한 원인.
  • 로그인: codex 는 ChatGPT 로 로그인됨(기본 모델 gpt-6.1-sol). claude 는 OAuth 세션 만료(claude auth status loggedIn=false) — 서버에서 claude login 필요.
  • 유닛 샌드박스(ProtectSystem=strict)와 같은 조건에서 두 CLI 모두 실행 가능 → 유닛·권한 변경 없이 코드 수정으로 해결.

3. 필수 동작(계약)

  1. HAL 이 서버에 설치된 CLI(claude·codex)를 서비스 PATH 와 무관하게 자동 탐색한다: 환경 변수(CLAUDE_BIN·CODEX_BIN) → HAL_CLI_DIRS → HOME 의 알려진 설치 위치(~/.local/bin, ~/.npm-global/bin, ~/.claude/local, ~/.codex/packages/standalone/current/bin, ~/node_modules/.bin) → /usr/local/bin·/usr/bin → PATH. 심볼릭 링크도 인정.
  2. GET /ops/api/ai/cli 와 AI 연동 화면 "서버에서 찾은 CLI" 카드가 실행 파일·실제 경로·버전·로그인 상태(claude auth status, codex login status)·기본 모델·모델 목록(codex ~/.codex/models_cache.json, 숨김 제외)과 탐색 위치를 보인다. "이 CLI 로 연결 추가"는 양식을 미리 채운다.
  3. 연결은 cli.tool(claude|codex)만으로 만들 수 있고(경로 생략 → 탐색 결과), 모델을 비우면 CLI 기본 모델. "확인"은 탐색된 경로·버전·로그인 상태를 연결에 남기고, 로그인 안 됨이면 cli_not_logged_in(상태 reauth_required)과 "서버에서 claude login/codex login" 안내를 낸다. 실행 파일이 없으면 cli_unavailable 과 탐색 위치를 낸다. 확인 실패 응답은 메시지가 보이도록 5xx 가 아닌 424.
  4. Codex 는 codex exec --json -s read-only --skip-git-repo-check --ephemeral -C <임시 폴더> -m <모델> <프롬프트> 로 실행하고 item.completed(agent_message) 를 답, turn.completed.usage 를 사용량으로 쓴다. Claude 는 기존 -p --output-format json. 인증 오류 결과는 모델 답으로 꾸미지 않는다.
  5. HAL 은 CLI 의 세션 파일·자격을 읽지도 넘기지도 않는다. CLI 환경 변수는 HOME·PATH·LANG 등 최소. 절대 경로 실행 파일만, cli.tool 은 claude|codex 만.

4. TDD·검증

  • test/hal-ai.test.mjs 에 자동 탐색 테스트를 먼저 추가해 RED 를 확인한다(가짜 HOME/.local/bin 의 claude(로그인 만료)·codex(로그인됨) 스크립트, HAL_CLI_HOME·HAL_CLI_DIRS 로 탐색 위치 고정): 탐색 API 결과, codex 연결(tool 만) → 확인 active → 대화 "OK from codex" 와 exec 인자, claude 연결 → 확인 424 cli_not_logged_in → reauth_required, 모르는 tool 거부, 빈 HOME 에서 cli_unavailable.
  • GREEN 뒤 targeted(HAL UI·재인증·HAL) 와 전체 Suite 테스트. 배포 뒤 bear 에서 배포 코드의 탐색 결과(실제 claude·codex)를 read-back 한다.

5. 버전·배포

  • HAL 0.3.1: package.json·README·VERSION_HISTORY 0.3.1 절·docs/HAL-AI.md. 커밋 → push → main 병합 → 깨끗한 main 에서 릴리스 빌드·verify → bear 에 HAL 만 배포(사전 백업·stage 검증·register-release --approve·bootstrap-release·current 전환·재시작) → /api/health·/ops/api/ai/cli read-back. 다른 모듈은 바뀌지 않았으므로 배포하지 않는다.

6. 완료 조건

점검 결과(설치 경로·버전·로그인 상태·원인), 변경 파일, RED/GREEN·전체 테스트, 커밋·병합 커밋, artifact sha256, 배포 read-back(탐색 결과 포함), 운영자가 해야 할 남은 조치(claude login)를 보고한다.