Files
proxycast/docs/content/04.api-reference/5.amp-cli-api.md
T
coso 7851c34bed release: v0.68.0
## Features
- 版本升级至 0.68.0

## Fixes
- 修复 EmptyState 组件标题排版问题
- 修复"开始生成"按钮文字换行问题
- 修复加载历史对话失败问题
  - 修复 parse_message_content 保留 ContentPart 结构
  - 修复 convert_agent_message 添加 reasoning_content 处理
  - 修复 WorkspaceType::from_str 命名冲突,重命名为 parse

## Code Quality
- 修复所有 clippy 警告
  - 修复 manual_flatten 警告
  - 修复 ptr_arg 警告(使用 &Path 替代 &PathBuf)
  - 修复 manual_clamp 警告
  - 修复 match_single_binding 警告
- 所有测试通过 (174 passed)
2026-02-16 20:58:55 +08:00

249 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Amp CLI API
description: Amp CLI 集成路由端点
navigation:
icon: i-heroicons-command-line
---
# Amp CLI API
::alert{type="info"}
本页是开发者进阶文档。若你不涉及 Amp CLI 集成,可跳过。
::
ProxyCast 提供 Amp CLI 兼容的路由端点,支持将 Amp CLI 请求路由到本地 OAuth 凭证。
## 概述
Amp CLI 集成允许你:
- 使用本地 OAuth 凭证处理 Amp CLI 请求
- 将不可用的模型映射到可用的替代模型
- 代理 Amp 的认证和账户管理功能
## Provider 路由
### /api/provider/{provider}/v1/chat/completions
处理 Amp CLI 的 OpenAI 格式聊天请求。
```bash
POST /api/provider/{provider}/v1/chat/completions
Content-Type: application/json
Authorization: Bearer your-api-key
```
#### 支持的 Provider
| Provider | 说明 |
|----------|------|
| `anthropic` | Claude 模型 |
| `openai` | GPT 模型 |
| `google` | Gemini 模型 |
#### 请求示例
```bash
curl http://127.0.0.1:8999/api/provider/anthropic/v1/chat/completions \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4",
"messages": [{"role": "user", "content": "Hello!"}],
"stream": true
}'
```
### /api/provider/{provider}/v1/messages
处理 Amp CLI 的 Anthropic Messages 格式请求。
```bash
POST /api/provider/{provider}/v1/messages
Content-Type: application/json
x-api-key: your-api-key
anthropic-version: 2023-06-01
```
#### 请求示例
```bash
curl http://127.0.0.1:8999/api/provider/anthropic/v1/messages \
-H "x-api-key: your-api-key" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello!"}]
}'
```
## 模型映射
当 Amp CLI 请求的模型不可用时,ProxyCast 可以自动映射到可用的替代模型。
### 配置
```yaml
ampcode:
model_mappings:
- from: "claude-opus-4.5"
to: "claude-sonnet-4"
- from: "gpt-5"
to: "gemini-2.5-pro"
- from: "claude-3-opus-20240229"
to: "claude-3-5-sonnet-20241022"
```
### 映射行为
1. 收到请求时检查模型名称
2. 如果模型在映射列表中,替换为目标模型
3. 使用替换后的模型名称路由请求
4. 响应中保留原始请求的模型名称
## 管理端点代理
ProxyCast 可以代理 Amp 的认证和账户管理端点到上游服务器。
### /api/auth/*
代理认证相关请求。
```bash
# 登录
POST /api/auth/login
# 刷新 Token
POST /api/auth/refresh
# 登出
POST /api/auth/logout
```
### /api/user/*
代理用户账户相关请求。
```bash
# 获取用户信息
GET /api/user/profile
# 获取使用统计
GET /api/user/usage
```
### 配置
```yaml
ampcode:
upstream_url: "https://ampcode.com"
restrict_management_to_localhost: false
```
| 配置项 | 说明 |
|--------|------|
| `upstream_url` | Amp 上游服务器 URL |
| `restrict_management_to_localhost` | 是否限制管理端点只能从 localhost 访问 |
## 使用场景
### 场景 1:使用本地 OAuth 凭证
你有 Kiro 的 Claude 订阅,想用 Amp CLI 但不想额外付费:
1. 配置 ProxyCast 加载 Kiro OAuth 凭证
2. 在 Amp CLI 中配置 ProxyCast 作为 API 端点
3. Amp CLI 请求通过 ProxyCast 路由到 Kiro 凭证
### 场景 2:模型替换
Amp CLI 请求 Claude Opus 4.5,但你只有 Sonnet 4 的访问权限:
```yaml
ampcode:
model_mappings:
- from: "claude-opus-4.5"
to: "claude-sonnet-4"
```
### 场景 3:多 Provider 负载均衡
配置多个凭证,ProxyCast 自动在它们之间负载均衡:
```yaml
credential_pool:
kiro:
- id: "kiro-1"
token_file: "kiro/token-1.json"
- id: "kiro-2"
token_file: "kiro/token-2.json"
```
## Amp CLI 配置
在 Amp CLI 中配置 ProxyCast:
```bash
# 设置 API 端点
amp config set api.base_url http://127.0.0.1:8999/api/provider
# 设置 API Key
amp config set api.key your-proxycast-api-key
```
或在配置文件中:
```yaml
# ~/.amp/config.yaml
api:
base_url: http://127.0.0.1:8999/api/provider
key: your-proxycast-api-key
```
## 错误处理
### 模型不可用
当请求的模型不可用且没有配置映射时:
```json
{
"error": {
"message": "Model 'claude-opus-4.5' is not available",
"type": "invalid_request_error",
"code": "model_not_found"
}
}
```
### 上游连接失败
当无法连接到 Amp 上游服务器时:
```json
{
"error": {
"message": "Failed to connect to upstream server",
"type": "upstream_error",
"code": "connection_failed"
}
}
```
### 凭证耗尽
当所有凭证都不可用时:
```json
{
"error": {
"message": "All credentials exhausted",
"type": "service_unavailable",
"code": "no_credentials_available"
}
}
```
响应头会包含 `Retry-After` 指示何时可以重试。