2025-08-30 22:08:41 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* Codex 预设供应商配置模板
|
|
|
|
|
|
*/
|
2025-09-11 22:33:55 +08:00
|
|
|
|
import { ProviderCategory } from "../types";
|
|
|
|
|
|
|
2025-08-30 22:08:41 +08:00
|
|
|
|
export interface CodexProviderPreset {
|
|
|
|
|
|
name: string;
|
|
|
|
|
|
websiteUrl: string;
|
|
|
|
|
|
auth: Record<string, any>; // 将写入 ~/.codex/auth.json
|
|
|
|
|
|
config: string; // 将写入 ~/.codex/config.toml(TOML 字符串)
|
|
|
|
|
|
isOfficial?: boolean; // 标识是否为官方预设
|
2025-09-11 22:33:55 +08:00
|
|
|
|
category?: ProviderCategory; // 新增:分类
|
2025-09-21 19:04:56 +08:00
|
|
|
|
isCustomTemplate?: boolean; // 标识是否为自定义模板
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 生成第三方供应商的 auth.json
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function generateThirdPartyAuth(apiKey: string): Record<string, any> {
|
|
|
|
|
|
return {
|
|
|
|
|
|
OPENAI_API_KEY: apiKey || "sk-your-api-key-here"
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 生成第三方供应商的 config.toml
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function generateThirdPartyConfig(
|
|
|
|
|
|
providerName: string,
|
|
|
|
|
|
baseUrl: string,
|
|
|
|
|
|
modelName = "gpt-5-codex"
|
|
|
|
|
|
): string {
|
|
|
|
|
|
// 清理供应商名称,确保符合TOML键名规范
|
|
|
|
|
|
const cleanProviderName = providerName
|
|
|
|
|
|
.toLowerCase()
|
|
|
|
|
|
.replace(/[^a-z0-9_]/g, '_')
|
|
|
|
|
|
.replace(/^_+|_+$/g, '') || 'custom';
|
|
|
|
|
|
|
|
|
|
|
|
return `model_provider = "${cleanProviderName}"
|
|
|
|
|
|
model = "${modelName}"
|
|
|
|
|
|
model_reasoning_effort = "high"
|
|
|
|
|
|
disable_response_storage = true
|
|
|
|
|
|
|
|
|
|
|
|
[model_providers.${cleanProviderName}]
|
|
|
|
|
|
name = "${cleanProviderName}"
|
|
|
|
|
|
base_url = "${baseUrl}"
|
|
|
|
|
|
wire_api = "responses"
|
2025-09-22 16:25:58 +08:00
|
|
|
|
env_key = "${cleanProviderName}"
|
|
|
|
|
|
requires_openai_auth = true`;
|
2025-08-30 22:08:41 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export const codexProviderPresets: CodexProviderPreset[] = [
|
|
|
|
|
|
{
|
|
|
|
|
|
name: "Codex官方",
|
2025-08-30 23:02:49 +08:00
|
|
|
|
websiteUrl: "https://chatgpt.com/codex",
|
2025-08-30 22:08:41 +08:00
|
|
|
|
isOfficial: true,
|
2025-09-11 22:33:55 +08:00
|
|
|
|
category: "official",
|
2025-08-30 23:02:49 +08:00
|
|
|
|
auth: {
|
2025-08-31 18:14:31 +08:00
|
|
|
|
OPENAI_API_KEY: null,
|
2025-08-30 23:02:49 +08:00
|
|
|
|
},
|
|
|
|
|
|
config: ``,
|
2025-08-30 22:08:41 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
name: "PackyCode",
|
2025-08-30 23:02:49 +08:00
|
|
|
|
websiteUrl: "https://codex.packycode.com/",
|
2025-09-11 22:33:55 +08:00
|
|
|
|
category: "third_party",
|
2025-09-21 19:04:56 +08:00
|
|
|
|
auth: generateThirdPartyAuth("sk-your-api-key-here"),
|
|
|
|
|
|
config: generateThirdPartyConfig(
|
|
|
|
|
|
"packycode",
|
|
|
|
|
|
"https://codex-api.packycode.com/v1",
|
|
|
|
|
|
"gpt-5-codex"
|
|
|
|
|
|
),
|
2025-08-30 22:08:41 +08:00
|
|
|
|
},
|
|
|
|
|
|
];
|