# Droid（Factory）接続

> **最終確認**：2026-09-18 · 📄 公式ドキュメント準拠（Droid CLI v0.222.0、2026-09-18 公開。リリース頻度が高いため `droid --version` 優先）

## 概要

| 項目 | 内容 |
|---|---|
| 利用できるモデル | Claude ✅（`provider: "anthropic"`）· GPT ✅ · 中国系モデル ✅（`provider: "generic-chat-completion-api"`）· Gemini ❌（対応 provider なし） |
| プロトコルと Base URL | Anthropic：`https://api.qcode.cc/api` · OpenAI Chat：`https://api.qcode.cc/openai/v1` |
| 設定場所 | `~/.factory/settings.json`（初回 `droid` 起動時に自動作成） |
| 公式ドキュメント | [BYOK](https://docs.factory.ai/model-independence/byok) · [settings](https://docs.factory.ai/droid-cli/settings)
[Droid](https://docs.factory.ai/droid-cli/overview) は Factory 製のターミナル AI コーディングエージェントです。**BYOK（自分のキーを使う）カスタムモデル**に対応しており、QCode.cc を上流にできます。

## どのプロトコルを使うか

Droid は `provider` フィールドでプロトコルを選びます。**Claude を使うなら `anthropic`** です —— QCode の OpenAI エンドポイントは Claude モデルを受け付けません（[エンドポイントと API パス](/docs/getting-started/endpoints-and-api-paths)）。

| 使いたいモデル | `provider` | `baseUrl` |
|---|---|---|
| Claude | `anthropic` | `https://api.qcode.cc/api` |
| GPT 系 / 中国系 4 ファミリー | `generic-chat-completion-api`（Chat Completions 互換） | `https://api.qcode.cc/openai/v1` |

> 🔴 `"provider": "openai"` は使えない——公式意味論では **OpenAI Responses API 専用**（公式原文：“Use provider: `"generic-chat-completion-api"` unless you are calling OpenAI's or Anthropic's official API”、[BYOK ドキュメント](https://docs.factory.ai/model-independence/byok)）。QCode の GPT／中国系は Chat Completions 側なので `generic-chat-completion-api` を使う。

## インストール

```bash
curl -fsSL https://app.factory.ai/cli | sh
```

`~/.local/bin/droid` にインストールされます。PATH 未設定と表示されたら、スクリプトが出力する行を `~/.zshrc` / `~/.bashrc` に追加してください。

確認（**実際の出力を信頼してください**）：

```bash
droid --version
```

## 設定

`~/.factory/settings.json` を編集します（**初回 `droid` 起動時に自動作成**される。プロジェクト側の `.factory/settings.local.json` でも上書き統合可能。こちらは `.gitignore` 推奨）：

```json
{
  "customModels": [
    {
      "model": "claude-sonnet-5",
      "displayName": "QCode Sonnet 5",
      "baseUrl": "https://api.qcode.cc/api",
      "apiKey": "${QCODE_KEY}",
      "provider": "anthropic",
      "maxOutputTokens": 8192
    },
    {
      "model": "claude-haiku-4-5",
      "displayName": "QCode Haiku 4.5",
      "baseUrl": "https://api.qcode.cc/api",
      "apiKey": "${QCODE_KEY}",
      "provider": "anthropic",
      "maxOutputTokens": 4096
    }
  ]
}
```

キーは環境変数で注入します：

```bash
export QCODE_KEY="cr_あなたのQCodeキー"
```

| フィールド | 説明 |
|------|------|
| `model` | API に渡すモデル id。[qcode.cc/models](https://qcode.cc/models) と一字一句一致させる |
| `displayName` | モデル選択に表示される名前。任意 |
| `baseUrl` | `/api` まで。Droid が `/v1/messages` を自分で連結します |
| `apiKey` | `${変数名}` 形式の環境変数参照に対応 |
| `provider` | Claude は `anthropic` |
| `maxOutputTokens` | 1 回の応答の出力上限 |

> Factory 公式によれば、**API キーはローカルに留まり Factory のサーバーにアップロードされません**。
> 中国本土からはホストを `https://asia.qcode.cc/api`（アジアノード、韓国 / 台湾 / 香港の近い方）に変更してください。

## 検証

```bash
droid exec --model "claude-sonnet-5" "reply with exactly: OK"
```

`OK` が返れば接続できています。

**陰性対照**（設定が本当に効いている証明）：`baseUrl` を一時的に存在しないパスに変えて再実行し、失敗することを確認してください。成功しただけでは、設定したレッグを通った証明にはなりません。

## よく使う操作

```bash
# 対話モード
droid

# 非対話実行
droid exec "テストを実行して失敗を直して"

# 作業ディレクトリ指定
droid --cwd /path/to/project

# git worktree 内で実行（変更を隔離）
droid -w feature-x

# 自律度
droid --auto medium
```

## よくある質問

### `model_not_available_on_endpoint`

`provider` が OpenAI 互換なのにモデルが Claude です。`"provider": "anthropic"` にし、`baseUrl` を `https://api.qcode.cc/api` にしてください。

### 401 / 認証失敗

${QCODE_KEY}$ が展開されていない（環境変数が export されていない）か、キーに空白が混入しています。`echo $QCODE_KEY` が `cr_` で始まるか確認してください。もう一つの落とし穴：**レガシー形式** `~/.factory/config.json`（snake_case）に書くと、公式明記により `apiKey` の環境変数展開が行われず、`${QCODE_KEY}` がそのまま鍵として送信される。`settings.json` を使うこと。

### モデル選択に出てこない

`customModels[]` に列挙したモデルのみ表示されます。エントリを追加して再起動してください。

## 関連ドキュメント

- [エンドポイントと API パス](/docs/getting-started/endpoints-and-api-paths) — プロトコル × モデルファミリー対応表
- [Crush 接続](/docs/ide/crush) — 別のターミナルエージェント
- [中国系モデル連携](/docs/usage/cn-models) — GLM / Kimi / DeepSeek / Qwen