Skip to content

CLI 사용 ​

시작하면 대화형 CLI로 들어가 자연어로 작업을 입력할 수 있습니다. 프롬프트는 [모드][agent명] > 형식으로 현재 상태를 표시합니다(예: [plan][code] > ).

내장 명령 ​

명령설명
/plan계획 모드로 전환(읽기 전용 탐색 + 계획 제안)
/interactive대화형 승인 모드로 전환(기본)
/auto완전 자동 모드로 전환(승인 불필요, 고위험)
/discuss토론 모드로 전환(읽기 전용 대화)
/mode현재 모드 표시
/connectLLM 연결(provider 선택 → key → 모델 목록 새로고침 → 추론 강도)
/connect rm연결 구성 삭제(환경 변수로 복귀)
/providers구성된 LLM 공급자 나열(▶가 현재 활성)
/use <번호|id>현재 활성 공급자 전환
/rm <번호|id>지정 공급자 삭제
/link계정 연결 마법사 시작(Hub 주소 + 이메일/휴대폰 번호 + 비밀번호 또는 SMS 인증 코드)
/link <연결 코드> [Hub 주소]일회용 연결 코드로 이 기기 노드를 사용자 센터에 연결
/sessions저장된 세션을 나열하고 복원 선택(전환 후 최근 메시지 표시)
/history현재 세션의 사용자 지시 나열
/model <id>LLM 모델 전환
/agent <name>agent 전환(Prompt + 선택적 모델 동기화)
/agents모든 agent 나열(현재 항목 강조)
/agent add <name> <prompt...>사용자 지정 agent 추가
/agent edit <name> <prompt...>agent의 Prompt 수정(현재 agent는 즉시 핫 리로드)
/agent rm <name>agent 삭제
/agent show [name]agent 상세 보기
/mcpMCP 서버와 연결 상태 나열
/mcp add <name> stdio <cmd...>|http <url>MCP 서버 추가 및 연결(도구 자동 주입)
/mcp rm|enable|disable|refresh [name]제거 / 활성화 / 비활성화 / 도구 목록 새로고침
/tools모든 도구 나열(출처, 위험, 비활성 상태)
/tool add <name> <cmd...>명령 도구 추가(shell 명령 실행)
/tool rm|disable|enable <name>도구 제거 / 비활성화 / 활성화
/clear현재 세션 비우기
quit / exit종료
reset세션 초기화
실행 중 입력 + Enter현재 작업에 보충 정보 전송(다음 반복에 적용)
실행 중 ESC 두 번현재 작업 중단

자주 하는 작업 예시 ​

자연어로 바로 입력합니다. 예:

> 현재 디렉터리에 TypeScript 프로젝트를 초기화해 줘
> src/ 아래 코드를 읽고 잠재적 문제를 지적해 줘
> logs/의 모든 .json 파일을 .json.bak로 이름을 바꿔 줘
> 테스트를 실행하고 실패한 케이스를 고쳐 줘

파일을 수정하거나 명령을 실행해야 할 때, 대화형 모드에서는 승인 카드가 표시되어 확인을 기다립니다.

실행 모드 ​

모드동작
discuss읽기 전용. 모든 쓰기와 실행 금지
plan읽기 전용. 모든 쓰기와 실행 금지. 계획 제안용
interactive부작용이 있는 작업은 사용자가 매번 승인(기본)
auto부작용이 있는 작업을 모두 허용(고위험, 자기 책임)

승인 카드 ​

대화형 모드의 승인 카드는 다음을 지원합니다:

  • Y 이번만 허용
  • A 이 도구 항상 허용
  • D 거부
  • run_shell은 추가로 C 이 명령 항상 허용(명령 단위 허용 목록. 도구 전체를 허용하는 것보다 안전)

실행 중 보충 정보(steering) ​

작업 실행 중에도 완료를 기다리지 않고 지시를 추가할 수 있습니다. 글자를 입력하고 Enter를 누르면 다음 반복 사이에 user 메시지로 현재 작업에 주입되며, agent는 계속 실행하면서 이 보충 정보를 반영합니다.

새 작업을 시작하려면 현재 작업이 끝날 때까지 기다리거나 ESC를 두 번 눌러 중단하세요. (승인/질문이 대기 중이면 입력은 우선 승인 응답 또는 질문 답변으로 사용됩니다.)

세션 관리 ​

  • /sessions는 저장된 세션을 나열하고 선택해 복원합니다. 전환 후 최근 메시지를 표시해 중단 지점부터 이어가기 쉽습니다.
  • /clear는 현재 세션을 비우고, reset은 세션 상태를 초기화합니다.
  • /history는 현재 세션의 사용자 지시를 나열해 문맥을 빠르게 되돌아볼 수 있습니다.

다중 공급자 관리 ​

여러 LLM 연결(다른 벤더 또는 다른 Key)을 저장하고 언제든 전환할 수 있습니다:

/providers           # 모든 공급자 나열, ▶가 현재 활성
/use 2               # 번호로 전환(/use <id>도 가능)
/rm 3                # 공급자 삭제

새 공급자는 /connect로 추가합니다. 전환은 즉시 적용되며 재시작이 필요 없습니다.

명령줄 하위 명령 ​

zqagent로 대화형 세션에 들어가는 것 외에 4개의 하위 명령이 있습니다:

bash
zqagent serve [--port <n>] [--host <addr>] [--data-dir <dir>]   # 헤드리스 상주 서비스
zqagent link --hub <url> --username <이메일/휴대폰> --password '<비밀번호>'  # 계정 연결(재시작 불필요)
zqagent link --hub <url> --code <연결 코드>                         # 일회용 연결 코드로 연결(재시작 불필요)
zqagent rename <이름>                                            # Hub에 표시되는 노드 이름 변경
zqagent update [--status|--check|--now|--rollback]               # 노드 자동 업데이트 확인/실행, 롤백

zqagent는 --resume <세션ID>로 이전 세션을 복원하고 --debug로 시작 진단 로그를 출력합니다.

serve는 시작 시 바로 연결할 수도 있습니다: --hub <url> --enroll-code <코드> --label <이름>, 또는 계정 방식 --hub <url> --username <이메일/휴대폰> --password <비밀번호>.

Windows 단일 파일에서는 zqagent를 zqagent.exe로 바꿉니다(PATH에 없으면 .\zqagent.exe):

bat
zqagent.exe serve --port 8787 --data-dir "%APPDATA%\zqagent"
zqagent.exe link --hub https://hub.cd-zq.com --username you@example.com --password <비밀번호>
zqagent.exe link --hub https://hub.cd-zq.com --code <연결 코드>

zqagent link를 인증 정보 없이 실행하면 대화형 마법사로 들어갑니다. 비밀번호는 ZQAGENT_HUB_PASSWORD로도 제공할 수 있습니다.

Windows의 link도 데스크톱 버전이 설치한 노드 서비스를 자동으로 찾으므로 보통 --data-dir이 필요 없습니다. 수동으로 작업 스케줄러를 설정했고 데이터 디렉터리가 기본 위치가 아닐 때만 명시합니다.

자세히는 노드 시작을 참고하세요.

시작 진단(--debug) ​

"시작하자마자 종료되고 콘솔에 아무것도 나오지 않는다" 같은 문제에서는 --debug로 진단을 켭니다:

bash
zqagent --debug              # 단일 실행 파일(macOS / Linux)
node bin/zqagent --debug     # npm 설치 진입점
bat
zqagent.exe --debug          :: Windows 단일 파일
set ZQAGENT_DEBUG=1          :: Windows cmd, 동일한 표기
bash
export ZQAGENT_DEBUG=1       # bash/zsh

진단 로그는 동기적으로 디스크에 기록되며(stdout 버퍼를 거치지 않아 프로세스가 크래시하거나 즉시 종료해도 유실되지 않음), 동시에 stderr로도 출력됩니다. 로그 경로는 다음 순서로 결정됩니다:

환경 변수의미
ZQAGENT_DEBUG_LOG로그 파일 전체 경로(우선)
ZQAGENT_DEBUG_DIR로그 디렉터리. 파일 이름은 고정으로 zqagent-debug.log
모두 미설정시스템 임시 디렉터리(os.tmpdir()) 아래 zqagent-debug.log

로그에는 환경 스냅샷, 시작 각 단계, 크래시 스택이 포함됩니다(OPENAI_API_KEY 같은 인증 정보는 "설정 여부 + 길이"만 기록하고 평문은 출력하지 않음). 로그가 멈춘 줄이 실패 위치입니다. --debug를 끄면 완전히 비활성화되어 파일도 쓰지 않고 핸들러도 등록하지 않습니다.

대조 프로브: 어느 계층의 문제인지 판단 ​

단일 파일 산출물 = 공식 node 기반 + 주입된 SEA blob + 그 안의 비즈니스 코드. 시작 직후 종료되면 최소 샘플로 세 계층을 분리하는 것이 비즈니스 코드를 추측하는 것보다 훨씬 빠릅니다:

샘플생성 방법실행되지 않을 때의 의미
_node-base-<ver>-<platform>-<arch>공식 node, 무수정시스템/보안 소프트웨어/로더 계층에서 막힘. 패키징과 무관
_sea-minimal-probe-<platform>-<arch>최소 SEA 프로브, useCodeCache: falseSEA 주입 또는 로드 실패(종료 코드 확인. 예 0xC0000005)
_sea-cc-probe-<platform>-<arch>위와 같지만 useCodeCache: true크로스 빌드가 빌드 머신의 V8 code cache를 포함
zqagent-windows-x64.exe실제 산출물앞의 세 가지가 정상이면 비즈니스 코드 초기화 문제. --debug로 계속
bash
pnpm run probes:sea                                   # win32-x64(기본)
pnpm run probes:sea -- --arch arm64                   # win32-arm64
pnpm run probes:sea -- --platform linux --arch x64    # Linux에서 linux 프로브 생성(이 기기에서 실행 가능)
pnpm run probes:sea -- --platform darwin --arch arm64 # macOS에서 macos 프로브 생성(이 기기에서 실행 가능)

프로브는 stdout 출력 외에 임시 디렉터리에 zqagent-probe.log를 기록합니다. "콘솔에 출력이 보이지 않는" 경우에도 디스크 로그로 JS가 실제 실행되었는지 증명할 수 있습니다.

주입 후 산출물의 sha256은 빌드마다 바뀝니다(blob에 빌드 머신의 main 스크립트 절대 경로가 기록됨). 따라서 기반 _node-base-*의 해시만 "파일이 완전/일치하는지"의 근거로 사용하세요.

macOS에서 생성/사용 시 주의: SEA에는 Node ≥ 20이 필요합니다. darwin 산출물은 주입 전에 codesign --remove-signature, 주입 후 codesign --sign - --force로 임시 서명이 필요합니다(이 기기에서 macos 프로브를 생성하는 스크립트가 자동 처리). arm64 커널은 서명되지 않은 바이너리 실행을 거부합니다. Windows 산출물 생성은 순수 크로스 어셈블리(postject는 파일만 쓰고 실행하지 않음)이므로 macOS/Linux에서도 .exe를 바로 만들 수 있습니다.

Windows에서는 한 세트를 같은 디렉터리에 두고 release/cli/diagnose.cmd를 실행합니다. node -e, 두 프로브, zqagent --debug를 차례로 실행하고 각 샘플의 종료 코드, 진단 로그, 프로브 디스크 로그를 출력합니다. 화면 텍스트를 그대로 복사해 보내면 원인을 찾을 수 있습니다.

다음 단계 ​