# 开发工具接入

使用 VSEP 学生账号登录[中转站首页](https://175.27.137.234/)，查看并复制本人的访问密钥。账号开通后，在自己的开发工具中选择自定义服务，填入中转地址、模型名称和访问密钥即可。模型名称固定填写 `RANDOM_MODEL`，无需购买 OpenAI 或 Claude 订阅。

账号状态和余额以登录后的页面为准。首次登录不会赠送额度。可在 VSEP 金币商城兑换 AI 额度：20 / 100 / 300 金币分别对应 20 万 / 100 万 / 300 万额度，未来抽奖中的 AI 额度奖励直接到账。未用完的额度长期保留；老师可以暂停或恢复账号，余额保留。AI 额度不等于固定数量的模型 Token，实际消耗以页面记录为准。

| 工具 | Base URL |
| --- | --- |
| Codex | `https://175.27.137.234/v1` |
| Claude Code | `https://175.27.137.234` |
| OpenAI 兼容 Python API | `https://175.27.137.234/v1` |

## 其他 Agent / 开发工具

先找设置中的 `Provider`、`API Base URL`、`API Key` 和 `Model`。选择工具支持的接口：

| 接口选项 | Base URL | 实际请求地址 |
| --- | --- | --- |
| OpenAI / OpenAI Compatible / Chat Completions | `https://175.27.137.234/v1` | `/v1/chat/completions` |
| OpenAI Responses | `https://175.27.137.234/v1` | `/v1/responses` |
| Anthropic / Claude Messages | `https://175.27.137.234` | `/v1/messages` |

- `API Key`：本人首页显示或老师单独发放的访问密钥。
- `Model`：`RANDOM_MODEL`，大小写保持一致。
- 优先选择工具已有的自定义服务 / OpenAI 兼容选项。
- 若设置要求完整 `Endpoint`，填写 Base URL 加对应接口路径的完整地址，避免重复 `/v1`。
- 这里只切换模型服务，Agent 仍在自己的电脑上执行文件读写和命令。

以上三个接口均支持文本、流式返回和标准工具调用。工具必须允许修改服务地址、密钥和模型名称。只接受官方账号登录的工具无法直接接入；联网搜索、图片、音频、WebSocket 等额外能力未开放。不同 Agent 的专有参数仍需实际验证。 每次请求需带完整历史消息和工具结果；不支持仅用 `previous_response_id` 续接，也不支持供应商专有的缓存会话引用。

## Codex

### 1. 安装

先安装 Node.js，确认终端能运行 `npm`。已有 Codex 可跳过安装。本次实测版本为 `0.150.1`：

```bash
npm install -g @openai/codex@0.150.1
codex --version
```

### 2. 下载模型配置

macOS / Linux / WSL：

```bash
mkdir -p "$HOME/.codex"
curl -fsSL https://175.27.137.234/codex-models.json -o "$HOME/.codex/classroom-models.json"
echo "$HOME/.codex/classroom-models.json"
```

Windows PowerShell：

```powershell
New-Item -ItemType Directory -Force "$env:USERPROFILE\.codex" | Out-Null
Invoke-WebRequest -Uri "https://175.27.137.234/codex-models.json" -OutFile "$env:USERPROFILE\.codex\classroom-models.json"
Resolve-Path "$env:USERPROFILE\.codex\classroom-models.json"
```

记下最后显示的完整文件路径，下一步使用。

### 3. 配置服务

打开 `~/.codex/config.toml`。Windows 对应 `%USERPROFILE%\.codex\config.toml`。

文件不存在时新建。已有内容时合并下面的配置，同名字段只保留一份。把 `model_catalog_json` 改成上一步的完整文件路径。

```toml
model_catalog_json = "/Users/你的用户名/.codex/classroom-models.json"
model_provider = "classroom"
model = "RANDOM_MODEL"
web_search = "disabled"

[model_providers.classroom]
name = "AI 课堂"
base_url = "https://175.27.137.234/v1"
wire_api = "responses"
env_key = "CLASSROOM_API_KEY"
requires_openai_auth = false
supports_websockets = false
```

前四行放在文件顶部，第一个方括号配置段之前。路径必须是绝对路径，不能写 `~` 或 `$HOME`。

Windows 的路径使用单引号，例如：

```toml
model_catalog_json = 'C:\Users\你的用户名\.codex\classroom-models.json'
```

Linux / WSL 示例：

```toml
model_catalog_json = "/home/你的用户名/.codex/classroom-models.json"
```

课堂模型配置支持文本、文件和本地命令工具，上下文预算为 64,000 tokens；未启用联网搜索、WebSocket 和图片输入。 工具和连接器的定义也占用上下文。如果持续提示压缩上下文，先关闭不用的 Apps、MCP 或插件，再新建会话。

### 4. 填入密钥并启动

在同一个终端中设置密钥、进入项目目录、启动 Codex。

macOS / Linux / WSL：

```bash
export CLASSROOM_API_KEY="填写本人的访问密钥"
cd "你的项目目录"
codex
```

Windows PowerShell：

```powershell
$env:CLASSROOM_API_KEY = "填写本人的访问密钥"
cd "你的项目目录"
codex
```

进入后输入 `/status`，检查服务是 `AI 课堂`，模型是 `RANDOM_MODEL`。新开终端后需要重新设置 `CLASSROOM_API_KEY`。

## Claude Code

### 1. 安装

已有 Claude Code 可跳过。本次实测版本为 `2.1.287`：

```bash
npm install -g @anthropic-ai/claude-code@2.1.287
claude --version
```

也可使用 [Claude Code 官方安装方式](https://code.claude.com/docs/en/setup)。

### 2. 配置服务

打开 `~/.claude/settings.json`。Windows 对应 `%USERPROFILE%\.claude\settings.json`。

文件不存在时新建。已有内容时合并以下字段，保留其他设置。替换学员密钥：

```json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://175.27.137.234",
    "ANTHROPIC_API_KEY": "填写本人的访问密钥",
    "ANTHROPIC_MODEL": "RANDOM_MODEL",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "RANDOM_MODEL",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "RANDOM_MODEL",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "RANDOM_MODEL",
    "ANTHROPIC_DEFAULT_FABLE_MODEL": "RANDOM_MODEL",
    "CLAUDE_CODE_SUBAGENT_MODEL": "RANDOM_MODEL"
  },
  "model": "RANDOM_MODEL"
}
```

地址末尾不加 `/v1`。Claude Code 会自动追加 `/v1/messages`。

这些字段同时指定主会话、模型别名和子 Agent 的模型，全部填写 `RANDOM_MODEL`。

若原配置中有 `ANTHROPIC_AUTH_TOKEN`，移除该旧字段。终端中的旧值也需清除：

macOS / Linux / WSL：

```bash
unset ANTHROPIC_AUTH_TOKEN
```

Windows PowerShell：

```powershell
Remove-Item Env:ANTHROPIC_AUTH_TOKEN -ErrorAction SilentlyContinue
```

### 3. 启动

```bash
cd "你的项目目录"
claude
```

首次使用 API Key 时，按提示确认使用该密钥。进入后输入：

```text
/status
```

检查地址是 `https://175.27.137.234`，认证来源是 `ANTHROPIC_API_KEY`。再输入 `/model` 检查模型名称。

## Claude Code 的 VS Code 扩展

在 VS Code 中执行 `Preferences: Open User Settings (JSON)`，把以下内容合并到用户设置中：

```json
{
  "claudeCode.environmentVariables": [
    { "name": "ANTHROPIC_BASE_URL", "value": "https://175.27.137.234" },
    { "name": "ANTHROPIC_API_KEY", "value": "填写本人的访问密钥" },
    { "name": "ANTHROPIC_MODEL", "value": "RANDOM_MODEL" },
    { "name": "ANTHROPIC_DEFAULT_SONNET_MODEL", "value": "RANDOM_MODEL" },
    { "name": "ANTHROPIC_DEFAULT_OPUS_MODEL", "value": "RANDOM_MODEL" },
    { "name": "ANTHROPIC_DEFAULT_HAIKU_MODEL", "value": "RANDOM_MODEL" },
    { "name": "ANTHROPIC_DEFAULT_FABLE_MODEL", "value": "RANDOM_MODEL" },
    { "name": "CLAUDE_CODE_SUBAGENT_MODEL", "value": "RANDOM_MODEL" }
  ]
}
```

重启扩展，检查 `/status` 和 `/model`。模型名称统一为 `RANDOM_MODEL`。若已有同名配置，不要重复添加。

以上扩展配置依据官方文档提供，尚未实测。Codex 桌面端也尚未实测；终端里设置的环境变量不会自动传给已经运行的桌面应用。

## 验证工具调用

在自己的项目目录新建 `number.txt`，内容为：

```text
137
```

在 Codex 或 Claude Code 中发送：

```text
读取 number.txt，把里面的数字乘以 3，告诉我结果。
```

应看到读取文件的工具操作，最终结果为 `411`。出现文件或命令权限提示时，检查操作内容后确认。

## 常见问题

| 现象 | 处理 |
| --- | --- |
| 401 或密钥无效 | 检查密钥是否完整、是否在开放日期内；Codex 需在启动它的同一终端设置密钥。 |
| 403 或模型无权限 | 模型名称只填写 `RANDOM_MODEL`，大小写保持一致。 |
| 404 | 检查地址：Codex 末尾有 `/v1`，Claude Code 末尾没有。 |
| 429 | 请求过于频繁，等待约一分钟再试；持续失败时联系老师。 |
| Codex 提示找不到模型配置文件 | 检查文件已下载，`model_catalog_json` 使用实际绝对路径。 |
| Claude Code 提示不认识模型 | 自定义模型可能出现上下文估算提示；先检查是否仍能正常回复和调用工具。 |

不要把带密钥的配置文件加入 Git，也不要把密钥发到群聊中。

## 其他入口

- [网页聊天](https://175.27.137.234/chat)
- [Python API 使用说明](https://175.27.137.234/学员使用说明.md)

## 参考

- [Codex 网关连接](https://learn.chatgpt.com/docs/enterprise/connect-to-a-gateway)
- [Claude Code 网关连接](https://code.claude.com/docs/en/llm-gateway-connect)
- [Claude Code 模型配置](https://code.claude.com/docs/en/model-config)
