# Goose

出典: https://docs.aicentos.com/ja/clients/goose

Language: ja

> Goose で aicentos を使う —— カスタム OpenAI 互換 provider の宣言

Goose は Block がオープンソース化したコーディングエージェントで、OpenAI 互換エンドポイントを指す方法を 2 つサポートしています。内蔵の `openai` provider を流用して host を書き換えるか、独立したカスタム provider を宣言するかです。後者をおすすめします。エンドポイント情報がまとまり、複数の設定を併存させやすくなります。

## 準備

まずコンソールの「API キー」ページで、Goose 専用のキーを作成してください（名前は `goose` のようにすると使用量の追跡に便利です）：

* コンソール：[https://aicentos.com](https://aicentos.com)
* キーの作成：[https://aicentos.com/keys](https://aicentos.com/keys)
* 残高不足のときのチャージ：[https://aicentos.com/wallet](https://aicentos.com/wallet)

## 設定値

| 項目                 | 値                                                |
| ------------------ | ------------------------------------------------ |
| カスタム provider ファイル | `~/.config/goose/custom_providers/aicentos.json` |
| engine             | `openai`                                         |
| base\_url          | `https://aicentos.com/v1/chat/completions`       |
| api\_key\_env      | `AICENTOS_API_KEY`                               |
| モデル                | コンソール「モデル広場」のモデル名                                |

## 設定手順

### 1. API Key 環境変数の設定

```bash
export AICENTOS_API_KEY="sk-あなたの-API-Key"
```

`~/.zshrc` または `~/.bashrc` に書き込めば永続化できます。**キーを config.yaml に書かないでください**。公式は環境変数またはシステムのキーチェーンを使うことを明確に推奨しています。

### 2. カスタム provider の宣言

`~/.config/goose/custom_providers/aicentos.json` を新規作成します（Windows は `%APPDATA%\Block\goose\config\custom_providers\`）：

```json
{
  "name": "aicentos",
  "engine": "openai",
  "display_name": "aicentos",
  "description": "aicentos が接続するモデル",
  "api_key_env": "AICENTOS_API_KEY",
  "base_url": "https://aicentos.com/v1/chat/completions",
  "models": [
    {
      "name": "gpt-4o",
      "context_limit": 128000
    }
  ],
  "supports_streaming": true,
  "dynamic_models": true
}
```

必須フィールドは `name`、`engine`、`display_name`、`base_url`、`models` です。`engine` には `openai` / `anthropic` / `ollama` を指定できます。

モデル名はコンソール「モデル広場」を基準に、[対応モデル](https://docs.aicentos.com/ja/billing/models-list) を参考にできます。

### 3. config.yaml でデフォルトに設定

`~/.config/goose/config.yaml` を編集します：

```yaml
GOOSE_PROVIDER: aicentos
GOOSE_MODEL: gpt-4o
```

Goose は起動時に `custom_providers/` ディレクトリを走査して自動登録するため、その後は GUI 内で切り替えることもできます。

## テスト

まず非対話セッションで検証します：

```bash
goose run -t "1+1 はいくつですか？一文で答えてください"
```

正常に返れば接続成功です。

## 注意事項

* **`base_url` は完全なパスまで書いてください**（ここでは `/v1/chat/completions` 付き）。多くのクライアントの書き方とは異なります。パスを明示的に指定したい場合、新しいバージョンでは `base_path` フィールドにも対応しており、こちらの優先度は URL の解析より高くなります。
* **環境変数は config.yaml より優先されます**。shell で `OPENAI_HOST` を export していると、ファイル内の設定が黙って上書きされます。切り分けるときは先に `env | grep -i openai` を実行してください。
* provider を選択しない限り、Goose は正常に起動しません。`config.yaml` に設定を書いただけで `goose configure` を一度も実行していないと、`No provider configured` と出ることがあります —— よくある誤解です。設定項目自体は YAML 形式であり、`.env` ではありません。
* `dynamic_models: true` のとき、Goose はエンドポイントの `/v1/models` を呼び出してモデル一覧を取得します。特定のモデルだけを公開したい場合は、このフィールドを削除するか `false` にしてください。
* もう 1 つの簡易な方法は内蔵 provider の流用です：config.yaml で `GOOSE_PROVIDER: openai` を設定し、`OPENAI_HOST` と `OPENAI_BASE_PATH` でエンドポイントを組み立てます。手間は少ないですが、環境変数との結合が強く、上記の上書き問題に引っかかりやすい点に注意してください。
* 切り分けの順序：provider 名と JSON ファイル名が完全一致しているか → `base_url` に完全なパスが含まれているか → 環境変数が見えているか → 残高は十分か。

## 関連リンク

* カスタム Provider ドキュメント：[https://block.github.io/goose/docs/api/providers/custom](https://block.github.io/goose/docs/api/providers/custom)