# CodeBuddy

> models.json을 통해 CodeBuddy를 LMU AI API에 연결하세요 — 전체 /chat/completions 엔드포인트를 입력하여 Claude, GPT 및 중국 모델을 사용하세요.

URL: https://docs.lmuai.com/ko/docs/tools/codebuddy



CodeBuddy(Tencent Cloud의 코딩 어시스턴트)는 `models.json` 설정 파일을 통해 커스텀 모델 목록을 지원하는 AI 코드 에디터입니다. 이 페이지에서는 CodeBuddy를 LMU AI에 연결하는 방법을 다룹니다.

***

## 설치 및 로그인 [#설치-및-로그인]

1. 공식 사이트에서 사용하는 운영 체제에 맞는 빌드를 다운로드하여 설치하세요: [https://www.codebuddy.cn](https://www.codebuddy.cn/home/)
2. 안내가 나오면 CodeBuddy 계정으로 로그인하세요

***

## LMU AI 설정 [#lmu-ai-설정]

### 1단계: 설정 파일 위치 선택 [#1단계-설정-파일-위치-선택]

| 수준             | 경로                                      | 참고                   |
| -------------- | --------------------------------------- | -------------------- |
| **사용자 수준**(권장) | `~/.codebuddy/models.json`              | 전역 설정, 모든 프로젝트에 적용   |
| **프로젝트 수준**    | `<project-root>/.codebuddy/models.json` | 프로젝트 전용, 사용자 수준보다 우선 |

파일이 없으면 생성하세요. 병합 순서는 높은 것부터 낮은 것까지: 프로젝트 수준 → 사용자 수준 → 내장 기본값.

### 2단계: 설정 작성 [#2단계-설정-작성]

사용자 수준의 `~/.codebuddy/models.json`을 예로 들면:

```json
{
  "models": [
    {
      "id": "claude-opus-5",
      "name": "Claude Opus 5 (LMU AI)",
      "vendor": "LMU AI",
      "apiKey": "sk-your-lmu-ai-api-key",
      "url": "https://api.lmuai.com/v1/chat/completions",
      "maxInputTokens": 200000,
      "maxOutputTokens": 32000,
      "supportsToolCall": true,
      "supportsImages": true,
      "supportsReasoning": true
    },
    {
      "id": "gpt-5.6-sol",
      "name": "GPT-5.6 Sol (LMU AI)",
      "vendor": "LMU AI",
      "apiKey": "sk-your-lmu-ai-api-key",
      "url": "https://api.lmuai.com/v1/chat/completions",
      "maxInputTokens": 400000,
      "maxOutputTokens": 32000,
      "supportsToolCall": true
    }
  ]
}
```

<Callout type="warn" title="url은 기본 URL이 아니라 전체 경로여야 합니다">
  `url` 필드는 `/chat/completions`로 끝나는 **전체 엔드포인트 경로**를 받습니다:

  * ✅ 올바름: `https://api.lmuai.com/v1/chat/completions`
  * ❌ 잘못됨: `https://api.lmuai.com/v1`
  * ❌ 잘못됨: `https://api.lmuai.com`

  이것이 복사-붙여넣기한 최소 예시가 실패하는 가장 흔한 이유입니다 — 많은 튜토리얼이 이를 기본 URL로 취급하는데, 그러면 CodeBuddy가 엔드포인트에 도달하지 못합니다.
</Callout>

<Callout type="info" title="CodeBuddy는 OpenAI 형식만 지원합니다">
  공식 문서에 따르면 현재 **OpenAI 형식** API만 지원하므로, OpenAI 호환 프로토콜로 LMU AI에 연결하세요.

  Claude 모델도 문제없이 작동합니다: `claude-opus-5` 같은 모델 ID를 직접 입력하면 LMU AI 백엔드가 OpenAI ↔ Anthropic 변환을 처리합니다.
</Callout>

### 3단계: 모델 선택 후 채팅 시작 [#3단계-모델-선택-후-채팅-시작]

파일을 저장하기만 하면 됩니다 — models.json은 **핫 리로드**(1초 디바운스)를 지원하므로 CodeBuddy를 다시 시작할 필요가 없습니다. 채팅 상자의 모델 선택기에서 새로 설정한 모델을 선택하면 완료됩니다.

models.json을 통해 추가된 모델은 자동으로 `custom` 태그가 붙어 UI에서 쉽게 알아볼 수 있습니다.

***

## 필드 참조 [#필드-참조]

`models` 배열의 각 항목에서 사용할 수 있는 필드:

| 필드                  | 타입      | 필수 | 참고                                                                  |
| ------------------- | ------- | -- | ------------------------------------------------------------------- |
| `id`                | string  | ✓  | 고유 모델 식별자 — LMU AI 모델 ID를 사용                                        |
| `name`              | string  | -  | 드롭다운에 표시되는 이름                                                       |
| `vendor`            | string  | -  | 벤더 이름; 원하는 대로                                                       |
| `apiKey`            | string  | -  | LMU AI 콘솔에서 생성한 `sk-` 키(환경 변수 이름이 아닌 실제 키 값)                        |
| `url`               | string  | -  | 전체 엔드포인트 경로; LMU AI의 경우 `https://api.lmuai.com/v1/chat/completions` |
| `maxInputTokens`    | number  | -  | 최대 입력 토큰 수                                                          |
| `maxOutputTokens`   | number  | -  | 최대 출력 토큰 수                                                          |
| `supportsToolCall`  | boolean | -  | 도구 호출 지원 여부                                                         |
| `supportsImages`    | boolean | -  | 이미지 입력 지원 여부                                                        |
| `supportsReasoning` | boolean | -  | 추론 모드 지원 여부                                                         |

***

## 특정 모델만 표시하기 [#특정-모델만-표시하기]

최상위 `availableModels` 필드를 사용하여 드롭다운에 표시되는 모델을 제어하세요:

```json
{
  "models": [
    {
      "id": "claude-opus-5",
      "name": "Claude Opus 5 (LMU AI)",
      "apiKey": "sk-your-lmu-ai-api-key",
      "url": "https://api.lmuai.com/v1/chat/completions",
      "supportsToolCall": true
    }
  ],
  "availableModels": ["claude-opus-5"]
}
```

* 생략하거나 빈 배열 → 모든 모델이 표시됨
* 설정하면 → 나열된 모델 ID만 표시됨(내장 및 커스텀 모델 모두)
* 프로젝트 수준의 `availableModels`는 사용자 수준을 병합하지 않고 **완전히 덮어씀**

<Callout type="warn" title="availableModels 제거 시 콤마에 주의하세요">
  공식 문서에 따르면: `availableModels` 필드를 삭제한 후에는 그 위의 `models` 배열 뒤에 남은 후행 `,`를 제거하는 것을 잊지 마세요. 그렇지 않으면 JSON이 무효화되어 전체 설정이 작동을 멈춥니다.
</Callout>

***

## 일반적인 모델 ID [#일반적인-모델-id]

| 모델 ID                 | 참고                       |
| --------------------- | ------------------------ |
| `claude-opus-5`       | Claude Opus 5 (플래그십, 권장) |
| `claude-sonnet-5`     | Claude Sonnet 5 (균형형)    |
| `claude-haiku-4-5`    | Claude Haiku 4.5 (고속)    |
| `gpt-5.6-sol`         | GPT-5.6 Sol              |
| `glm-5.2`             | GLM-5.2                  |
| `qwen3.8-max-preview` | Qwen 3.8 Max Preview     |
| `deepseek-v4-pro`     | DeepSeek V4 Pro          |
| `kimi-k3`             | Kimi K3                  |

어떤 모델을 입력할지 모르겠나요? [모델 갤러리](/ko/docs/guide/models)로 이동하여 사용 가능한 모든 모델 ID를 확인하고 원클릭으로 복사하세요.

1M 컨텍스트 윈도우를 사용하려면 모델 ID에 `[1M]` 접미사를 붙여 작성하고(예: `claude-opus-5[1M]`) `maxInputTokens`를 그에 맞게 높이세요.

***

## 문제 해결 [#문제-해결]

### 설정이 적용되지 않나요? [#설정이-적용되지-않나요]

1. **JSON이 유효한지** 확인하세요(콤마 누락이나 후행 콤마가 흔한 원인입니다)
2. **파일 경로**가 올바른지 확인하세요(`~/.codebuddy/models.json`)
3. 모든 항목에 필수 `id` 필드가 있는지 확인하세요
4. 파일이 실제로 **디스크에 저장되었는지** 확인하세요(핫 리로드에는 1초 디바운스가 있습니다)

### 모델이 드롭다운에 없나요? [#모델이-드롭다운에-없나요]

* `availableModels`가 설정되어 있다면 해당 모델 ID가 거기에 나열되어 있는지 확인하세요
* `models` 배열의 항목이 완전한지 확인하세요

### 401 / 404가 나오나요? [#401--404가-나오나요]

* **401**: `apiKey`가 LMU AI 콘솔에서 생성한 `sk-` 키인가요?
* **404**: `url`에 `/chat/completions`가 빠졌을 가능성이 매우 높습니다 — 반드시 전체 경로여야 합니다

***

## 참고 사항 [#참고-사항]

* `url`은 반드시 **전체 엔드포인트 경로** `https://api.lmuai.com/v1/chat/completions`여야 하며, `/v1`만 쓰거나 도메인만 쓰면 안 됩니다
* CodeBuddy는 **OpenAI 형식만** 지원합니다; Claude 모델은 LMU AI의 프로토콜 변환을 거칩니다
* `apiKey`는 실제 키 값을 받습니다 — 환경 변수 이름은 지원되지 않습니다
* 설정은 **핫 리로드**되므로 저장만 하면 충분하며, 다시 시작할 필요가 없습니다
* 각 모델 항목에는 자체 `apiKey`와 `url`이 필요합니다
* 프로젝트 수준 설정은 `id` 기준으로 사용자 수준을 덮어쓰지만, `availableModels`는 병합되지 않고 통째로 대체됩니다
