# Claude Code CLI

> Claude Code CLI를 LMU AI API에 연결하기: settings.json 설정, 모델 선택, 중국어 LLM, 1M 컨텍스트 활성화, 자주 발생하는 오류 해결법.

URL: https://docs.lmuai.com/ko/docs/tools/claude-code



Claude Code는 Anthropic의 공식 AI 코딩 에이전트로, 터미널에서 실행되며 자연어로 코드를 작성하고 디버깅하고 리팩터링할 수 있게 해줍니다.

<Callout type="info" title="더 빠른 방법: CC Switch로 원클릭 임포트">
  `settings.json`을 직접 편집하고 싶지 않다면 [**CC Switch 원클릭 임포트**](/ko/docs/tools/cc-switch)를 사용하세요: LMU AI 콘솔의 키 목록에서 "Import to CCS" 버튼을 클릭하면 Base URL과 키가 자동으로 설정됩니다.
</Callout>

***

## 1단계 — Node.js 설치 [#1단계--nodejs-설치]

> 이미 설치되어 있다면 건너뛰세요. `node -v`로 확인할 수 있습니다.

\*\*Node.js 18+\*\*가 필요합니다 — 다운로드: [https://nodejs.org/en/download](https://nodejs.org/en/download)

<Tabs items="['Mac/Linux', 'Windows']">
  <Tab value="Mac/Linux">
    ```bash
    # Verify after installing
    node -v
    # A version number (e.g. v24.4.1) means it installed correctly
    ```
  </Tab>

  <Tab value="Windows">
    ```powershell
    # During install, check "Automatically install the necessary tools"
    # Reopen PowerShell after installing and verify
    node -v
    ```
  </Tab>
</Tabs>

<Callout type="info">
  이전에 설치했지만 버전이 너무 오래되었거나 PATH가 깨졌다면, 다시 설치하고 터미널을 새로 여세요.
</Callout>

***

## 2단계 — Claude Code 설치 [#2단계--claude-code-설치]

<Tabs items="['Mac/Linux', 'Windows']">
  <Tab value="Mac/Linux">
    ```bash
    npm install -g @anthropic-ai/claude-code
    ```
  </Tab>

  <Tab value="Windows">
    ```powershell
    npm install -g @anthropic-ai/claude-code
    ```
  </Tab>
</Tabs>

설치 확인:

```bash
claude --version
```

<Callout type="info" title="네트워크 문제? 중국 미러로 전환하세요">
  ```bash
  npm config set registry https://registry.npmmirror.com
  npm install -g @anthropic-ai/claude-code
  ```
</Callout>

***

## 3단계 — LMU AI API 설정 [#3단계--lmu-ai-api-설정]

Claude Code는 `settings.json`을 통해 커스텀 API 엔드포인트를 설정합니다.

### 설정 파일 위치 [#설정-파일-위치]

<Tabs items="['Mac/Linux', 'Windows']">
  <Tab value="Mac/Linux">
    ```bash
    ~/.claude/settings.json
    ```
  </Tab>

  <Tab value="Windows">
    ```powershell
    C:\Users\YourUsername\.claude\settings.json
    ```
  </Tab>
</Tabs>

### 설정 파일 생성 [#설정-파일-생성]

<Tabs items="['Mac/Linux', 'Windows']">
  <Tab value="Mac/Linux">
    ```bash
    mkdir -p ~/.claude && touch ~/.claude/settings.json
    ```
  </Tab>

  <Tab value="Windows">
    ```powershell
    mkdir "$env:USERPROFILE\.claude" -Force
    New-Item "$env:USERPROFILE\.claude\settings.json" -Force
    ```
  </Tab>
</Tabs>

### 설정 작성 [#설정-작성]

텍스트 편집기에서 `settings.json`을 열고 다음을 추가하세요 (키는 본인 것으로 교체):

```json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.lmuai.com",
    "ANTHROPIC_AUTH_TOKEN": "sk-your-lmu-ai-api-key",
    "API_TIMEOUT_MS": "3000000",
    "CLAUDE_CODE_ATTRIBUTION_HEADER": "0"
  }
}
```

<Callout type="warn" title="참고">
  * `ANTHROPIC_AUTH_TOKEN`을 LMU AI 콘솔에서 생성한 API 키(`sk-`로 시작)로 설정하세요
  * Anthropic 공식 API 키를 사용하지 마세요
  * 이전에 공식 키를 설정했다면, 먼저 이전 설정을 지운 다음 이것을 작성하세요
  * `CLAUDE_CODE_ATTRIBUTION_HEADER`를 `"0"`으로 설정하면 요청의 출처 표시 헤더가 꺼져 캐시 적중과 토큰 효율에 도움이 됩니다
</Callout>

***

## Claude Code에서 1M 컨텍스트 활성화하기 (선택) [#claude-code에서-1m-컨텍스트-활성화하기-선택]

Claude Opus 4.8 / Sonnet 5는 **1M 토큰 긴 컨텍스트 창**(기본 200K)을 지원하며, 거대한 저장소, 긴 로그, 파일 간 리팩터링에 유용합니다. 모델 ID에 `[1M]` 접미사를 추가하면 활성화됩니다.

### 방법 A — 수동 /model 전환 (가끔 사용할 때 권장) [#방법-a--수동-model-전환-가끔-사용할-때-권장]

**최소한의 settings.json을 유지**하고(`ANTHROPIC_BASE_URL` + `ANTHROPIC_AUTH_TOKEN`만), Claude Code를 시작한 뒤 프롬프트에 입력하세요:

```
/model claude-opus-5[1M]
```

또는:

```
/model claude-sonnet-5[1M]
```

이렇게 하면 설정 변경 없이 1M 버전으로 전환됩니다. 현재 세션에 적용되며 종료 시 되돌아갑니다.

### 방법 B — settings.json에 상시 기본값 설정 (일상적인 긴 컨텍스트 사용 시 권장) [#방법-b--settingsjson에-상시-기본값-설정-일상적인-긴-컨텍스트-사용-시-권장]

`settings.json`의 `env` 섹션에 두 줄을 추가하면 `/model opus` / `/model sonnet`이 기본으로 1M 버전을 사용합니다:

```json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.lmuai.com",
    "ANTHROPIC_AUTH_TOKEN": "sk-your-lmu-ai-api-key",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-5[1M]",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-5[1M]",
    "API_TIMEOUT_MS": "3000000",
    "CLAUDE_CODE_ATTRIBUTION_HEADER": "0"
  }
}
```

저장하고 Claude Code를 재시작하세요. 이제 `/model` 명령에서 opus / sonnet을 선택하면 자동으로 1M 버전을 사용합니다.

**필드 참고**

| 필드                               | 용도                                           |
| -------------------------------- | -------------------------------------------- |
| `ANTHROPIC_DEFAULT_OPUS_MODEL`   | Claude Code에서 `opus`를 선택할 때 실제로 전송되는 모델 ID   |
| `ANTHROPIC_DEFAULT_SONNET_MODEL` | 위와 동일, `sonnet`용                             |
| `[1M]` 접미사                       | 모델의 1M 토큰 긴 컨텍스트 모드를 활성화; 없으면 기본 200K가 적용됩니다 |

<Callout type="warn" title="사용 시 주의사항">
  * **다른 요금 체계**: 1M 컨텍스트 모드는 Anthropic 가격 정책에 따라 등급이 나뉘며, 토큰당 가격이 보통 **기본 200K 모드보다 높으므로** 긴 텍스트 작업의 비용이 크게 증가합니다 — 필요하지 않으면 켜두지 마세요
  * **일부 모델만 지원**: Opus / Sonnet 메인라인 모델 `claude-opus-5`, `claude-fable-5`, `claude-opus-4-8`, `claude-opus-4-7`, `claude-sonnet-5`가 `[1M]` 접미사를 지원하며, Haiku 시리즈와 구형 모델은 지원하지 않습니다. [Model Gallery](/ko/docs/guide/models) 목록이 기준입니다
  * **가끔 사용은 방법 A, 정기적 사용은 방법 B** — 하나를 선택하세요
</Callout>

***

## 중국어 모델 사용하기 (선택) [#중국어-모델-사용하기-선택]

LMU AI는 중국어 LLM(예: Qwen 시리즈)을 지원합니다. `settings.json`에서 `model`을 설정하면 **실행할 때마다 수동으로 `/model` 전환할 필요가 없어지고** 지정한 모델을 바로 사용할 수 있습니다.

```json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.lmuai.com",
    "ANTHROPIC_AUTH_TOKEN": "sk-your-lmu-ai-api-key",
    "CLAUDE_CODE_ATTRIBUTION_HEADER": "0"
  },
  "model": "qwen3.8-max-preview",
  "effortLevel": "medium"
}
```

**필드 참고:**

| 필드                               | 설명                                                     |
| -------------------------------- | ------------------------------------------------------ |
| `model`                          | 기본 모델, 시작 시 로드됨 — 매번 수동 전환 불필요                         |
| `effortLevel`                    | 추론 강도: `low` / `medium` / `high`; 중국어 모델에는 `medium` 권장 |
| `CLAUDE_CODE_ATTRIBUTION_HEADER` | `"0"`으로 설정하면 출처 표시 헤더가 꺼져 캐시 적중, 토큰 효율, 호환성에 도움이 됩니다   |

<Callout type="info" title="지원되는 중국어 모델 (예시)">
  * `qwen3.8-max-preview` — Qwen 3.8 Max Preview (최신)
  * `qwen3.7-max` — Qwen 3.7 Max
  * `glm-5.2` — Zhipu GLM-5.2
  * `deepseek-v4-pro` — DeepSeek V4 Pro
  * `kimi-k3` — Kimi K3

  LMU AI 콘솔의 **Available Models** 목록이 기준입니다.
</Callout>

<Callout type="info" title="중국어 모델 vs. 공식 Claude 모델">
  |          | 중국어 모델 | 공식 Claude 모델 |
  | -------- | ------ | ------------ |
  | 비용       | 낮음     | 높음           |
  | 중국어 이해력  | 우수     | 양호           |
  | 코딩 능력    | 우수     | 우수           |
  | 기본 모델 설정 | ✅ 지원   | ✅ 지원         |
</Callout>

***

## 4단계 — Claude Code 실행 [#4단계--claude-code-실행]

프로젝트 디렉터리에서 터미널을 열고 실행하세요:

```bash
claude
```

### 승인 없음 모드 (권장) [#승인-없음-모드-권장]

```bash
claude --dangerously-skip-permissions
```

> 이 모드에서 Claude Code는 각 단계를 확인받지 않고 명령을 자동으로 실행합니다 — 프로젝트 디렉터리 안에서 편리합니다.

***

## 설정 확인 [#설정-확인]

실행 후 Claude Code 인터페이스에서 입력하세요:

```
/status
```

다음 현재 정보를 표시합니다:

* 모델 이름
* API Base URL (`https://api.lmuai.com`이 표시되어야 함)
* API 키 상태

Base URL이 올바르면 설정이 정상 작동하는 것입니다.

***

## 자주 발생하는 문제 [#자주-발생하는-문제]

### 401 Unauthorized [#401-unauthorized]

**원인:** API 키가 잘못되었거나, 요청이 여전히 Anthropic 공식 엔드포인트로 전송되었습니다.

**해결:**

1. `settings.json`의 `ANTHROPIC_AUTH_TOKEN`이 본인의 LMU AI 키인지 확인하세요
2. 셸 환경 변수가 설정을 덮어쓰고 있는지 확인하세요

<Tabs items="['Mac/Linux', 'Windows']">
  <Tab value="Mac/Linux">
    ```bash
    echo $ANTHROPIC_BASE_URL
    ```
  </Tab>

  <Tab value="Windows">
    ```powershell
    echo $env:ANTHROPIC_BASE_URL
    ```
  </Tab>
</Tabs>

3. 터미널을 다시 연 다음, Claude Code를 다시 실행하세요

### stream disconnected [#stream-disconnected]

**원인:** 불안정한 로컬 네트워크, 또는 VPN / 프록시 / 시스템 프록시가 켜져 있음 — IP를 로테이션하는 프록시가 연결을 끊습니다.

**해결:** VPN / 프록시 / 시스템 프록시를 끄고 다시 시도하세요. LMU AI는 국내 직접 연결이며 VPN이 필요 없습니다. 직접 연결이 가장 빠르고 안정적입니다.

### 503 No available accounts [#503-no-available-accounts]

**원인:** 대개 `~/.zshrc` 또는 `~/.bashrc`가 `ANTHROPIC_AUTH_TOKEN` / `ANTHROPIC_BASE_URL` 같은 전역 환경 변수를 설정하여 `settings.json`을 덮어씁니다.

**해결:** 셸 설정에서 해당 줄을 제거하거나, Claude Code 실행 시에만 `source`하는 별도 파일로 옮기세요. [FAQ · Issue 6](/ko/docs/guide/faq#issue-6)을 참고하세요.

### 응답 타임아웃 [#응답-타임아웃]

**원인:** 기본 타임아웃이 짧습니다.

**해결:** `API_TIMEOUT_MS`가 `3000000`(50분)으로 설정되어 있는지 확인하여 긴 작업이 중단되지 않게 하세요.

***

## 팁 [#팁]

* Claude Code를 프로젝트 루트에서 실행하면 프로젝트 구조를 자동으로 인식합니다
* 지시를 직접 전달하세요, 예: `claude "refactor this function for me"`
* `Ctrl+C`는 현재 작업을 중단하고, `/exit`는 종료합니다
* `?` 또는 `/help`를 입력하면 모든 명령을 볼 수 있습니다

***

## /goal로 Claude Code가 목표 달성까지 작업하게 하기 (선택) [#goal로-claude-code가-목표-달성까지-작업하게-하기-선택]

`/goal`은 현재 세션에 **완료 조건**을 설정하는 Claude Code 내장 슬래시 명령입니다(**v2.1.139**, 2026년 5월부터 제공). 설정되면 Claude는 "다 된 것 같아서" 멈추는 것이 아니라, 조건이 충족되었다고 판단될 때까지 **스스로 여러 턴에 걸쳐 계속 진행합니다**. LMU AI에서 길게 끝까지 실행해야 하는 작업(대규모 저장소 리팩터링, 인수 사양 구현, 이슈 백로그 소진 등)에 특히 유용합니다.

> 구버전에는 이 명령이 없습니다. 알 수 없는 명령이라고 나오면 먼저 Claude Code를 최신 버전으로 업그레이드하세요.

### 기본 사용법 [#기본-사용법]

| 명령              | 용도                                                              |
| --------------- | --------------------------------------------------------------- |
| `/goal <완료 조건>` | 목표를 설정; Claude가 즉시 한 턴을 시작하고 조건이 충족될 때까지 자동으로 계속 진행             |
| `/goal`         | 현재(또는 가장 최근) 목표의 상태와 진행 상황을 표시                                  |
| `/goal clear`   | 현재 목표를 미리 지움 (`stop` / `off` / `reset` / `cancel` / `none`도 동일) |

한 세션에는 **동시에 하나의 목표만** 있을 수 있습니다. 새 목표를 설정하면 기존 목표를 대체하고 즉시 새 턴을 시작합니다.

### "충족" 판단 방식 [#충족-판단-방식]

각 턴의 끝에서 Claude Code는 **당신의 완료 조건 + 이 턴의 대화**를 작고 빠른 모델(**기본값 Haiku**)에 넘겨 판단하게 합니다. 판단 모델은 **대화에 이미 있는 증거**만 봅니다 — 테스트 출력, 빌드 로그, 파일 diff — 그리고 **뒤에서 전체 CI를 다시 실행하지 않습니다**. 따라서 조건은 Claude가 대화 안에서 "증거를 생성"할 수 있는 형태로 작성하세요.

목표는 다음 중 어느 경우든 **자동으로 지워집니다**:

* 조건이 **충족되었다**고 판단됨;
* 모델이 조건을 **충족 불가능하다**고 판단함;
* 한 턴이 **당신의 개입이 필요한 오류에 부딪힘**.

### 좋은 목표 조건 작성법 [#좋은-목표-조건-작성법]

* **검증 가능한 최종 상태를 사용하세요**: 예: "`npm test`가 0으로 종료", "`tsc --noEmit`가 오류 없음 보고" — "코드를 더 예쁘게" 같은 주관적 설명이 아니라;
* **증거가 대화에 남게 하세요**: 매 턴 테스트 / 빌드 결과를 출력하여 판단 모델이 볼 수 있게 하세요;
* **범위를 좁히고 + 턴 수를 제한하세요**: 예: "`src/auth/` 아래 파일만 변경, 최대 20턴 후 중지"로 무한 반복을 피하세요;
* \*\*신뢰할 수 있는 워크스페이스(hooks 활성화)\*\*가 있어야 작동합니다.

<Callout type="info" title="LMU AI와 함께 쓸 때의 팁">
  추가되는 `/goal` 턴마다 또 한 라운드의 토큰을 소비합니다(턴별 판단을 위한 약간의 Haiku 오버헤드 포함). LMU AI에서 긴 목표를 실행할 때는 명확한 **최종 상태**와 **최대 턴 수**를 조건에 작성하여, 검증 불가능한 목표에 매달려 할당량을 낭비하지 않도록 하세요. "검사를 통과할 때까지 반복적으로 자가 수정"하는 루프를 위해서는 `/goal`을 `/loop`과 함께 사용하세요.
</Callout>
