chore(sponsor): 下线接口AI 赞助与 Provider 预设

- provider presets 移除 jiekouai 预设(预设数 11 → 10)
- README.md / README.en.md 赞助商表格移除接口AI 整行及推广链接
- 删除 docs/images/sponsors/jiekou-logo.svg
- docs 中英文模型页的中转服务商清单去掉接口AI
- provider-presets 测试同步移除 jiekouai 断言;依赖该预设 defaultEnv /
  authStrategy 的 conversation-service、conversations 测试 fixture 改用
  shengsuanyun 预设
This commit is contained in:
程序员阿江(Relakkes) 2026-07-28 11:30:57 +08:00
parent 05085b83bc
commit 5581249147
9 changed files with 8 additions and 72 deletions

View File

@ -119,17 +119,6 @@ This project is maintained in the author's spare time. Corporate or individual s
</tr>
</thead>
<tbody>
<tr>
<td align="center" valign="middle">
<a href="https://jiekou.ai/referral?invited_code=OBNU3K">
<img src="docs/images/sponsors/jiekou-logo.svg" width="72" alt="JieKou AI"><br>
<strong>接口AI</strong>
</a>
</td>
<td valign="middle">
Thanks to <a href="https://jiekou.ai/referral?invited_code=OBNU3K">JieKou AI</a> for sponsoring this project. JieKou AI provides official model resources with stable, high-performance API access. Subscription bundles are priced at 20% off the official rate; new users who register through <a href="https://jiekou.ai/referral?invited_code=OBNU3K">this link</a> and bind GitHub can claim a $3 coupon.
</td>
</tr>
<tr>
<td align="center" valign="middle">
<a href="https://www.shengsuanyun.com/?from=CH_LEJ88KWR">

View File

@ -119,17 +119,6 @@ cp .env.example .env
</tr>
</thead>
<tbody>
<tr>
<td align="center" valign="middle">
<a href="https://jiekou.ai/referral?invited_code=OBNU3K">
<img src="docs/images/sponsors/jiekou-logo.svg" width="72" alt="接口AI"><br>
<strong>接口AI</strong>
</a>
</td>
<td valign="middle">
感谢 <a href="https://jiekou.ai/referral?invited_code=OBNU3K">接口AI</a> 赞助本项目接口AI 提供官方资源直供与稳定高性能 API 体验,订阅包价格为官方 8 折;使用 <a href="https://jiekou.ai/referral?invited_code=OBNU3K">专属链接</a> 注册并绑定 GitHub可领取 3 美元优惠券。
</td>
</tr>
<tr>
<td align="center" valign="middle">
<a href="https://www.shengsuanyun.com/?from=CH_LEJ88KWR">

View File

@ -44,7 +44,7 @@ With an API key in hand, this is the fastest route. Click "Add Provider", pick s
The built-in presets, as they appear in the dialog:
- **DeepSeek** · **Zhipu GLM** · **Kimi** · **MiniMax** — major Chinese model vendors; the base URLs point at each one's Anthropic-compatible endpoint.
- **接口AI (JiekouAI)** · **胜算云 (Shengsuanyun)** · **TeamoRouter** — routing services that give you access to official Claude models through their own gateway.
- **胜算云 (Shengsuanyun)** · **TeamoRouter** — routing services that give you access to official Claude models through their own gateway.
- **LM Studio** · **Ollama** — local models; see the next section.
- **Custom** — anything not listed above.

View File

@ -1,4 +0,0 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M32 8H8V40H32C36.4183 40 40 36.4183 40 32V16H48V32C48 40.8366 40.8366 48 32 48H8C3.58172 48 3.22128e-08 44.4183 0 40V0H32V8Z" fill="black"/>
<path d="M40 8H48V0H40V8Z" fill="#0071E3"/>
</svg>

Before

Width:  |  Height:  |  Size: 297 B

View File

@ -44,7 +44,7 @@ Claude Code Haha 自己不带模型,它只是那个替你干活的壳。装完
内置预设(按弹窗里的排列):
- **DeepSeek** · **Zhipu GLM** · **Kimi** · **MiniMax** — 国内主流模型厂商,接口地址是各家的 Anthropic 兼容端点。
- **接口AI** · **胜算云** · **TeamoRouter** — 中转类服务商,用它们的通道调 Claude 官方模型。
- **胜算云** · **TeamoRouter** — 中转类服务商,用它们的通道调 Claude 官方模型。
- **LM Studio** · **Ollama** — 本地模型,见下一节。
- **Custom** — 上面都没有,自己填。

View File

@ -839,10 +839,10 @@ describe('ConversationService', () => {
test('buildChildEnv clears stale api key for bearer-token providers', async () => {
const providerService = new ProviderService()
const provider = await providerService.addProvider({
presetId: 'jiekouai',
name: 'Jiekou',
presetId: 'shengsuanyun',
name: 'ShengSuanYun',
apiKey: 'provider-key',
baseUrl: 'https://api.jiekou.ai/anthropic',
baseUrl: 'https://router.shengsuanyun.com/api',
apiFormat: 'anthropic',
models: {
main: 'claude-sonnet-4-6',
@ -858,7 +858,7 @@ describe('ConversationService', () => {
model: 'claude-sonnet-4-6',
})) as Record<string, string>
expect(env.ANTHROPIC_BASE_URL).toBe('https://api.jiekou.ai/anthropic')
expect(env.ANTHROPIC_BASE_URL).toBe('https://router.shengsuanyun.com/api')
expect(env.ANTHROPIC_AUTH_TOKEN).toBe('provider-key')
expect(env.ANTHROPIC_API_KEY).toBe('')
expect(env.ANTHROPIC_MODEL).toBe('claude-sonnet-4-6')

View File

@ -3154,10 +3154,10 @@ describe('WebSocket Chat Integration', () => {
it('should pass the active provider id into default desktop sessions', async () => {
const providerService = new ProviderService()
const provider = await providerService.addProvider({
presetId: 'jiekouai',
presetId: 'shengsuanyun',
name: 'Active Default Provider',
apiKey: 'key-active-default',
baseUrl: 'https://api.jiekou.ai/anthropic',
baseUrl: 'https://router.shengsuanyun.com/api',
apiFormat: 'anthropic',
models: {
main: 'active-main',

View File

@ -67,7 +67,6 @@ describe('provider presets API', () => {
const zhipu = PROVIDER_PRESETS.find((preset) => preset.id === 'zhipuglm')
const kimi = PROVIDER_PRESETS.find((preset) => preset.id === 'kimi')
const minimax = PROVIDER_PRESETS.find((preset) => preset.id === 'minimax')
const jiekouai = PROVIDER_PRESETS.find((preset) => preset.id === 'jiekouai')
const shengsuanyun = PROVIDER_PRESETS.find((preset) => preset.id === 'shengsuanyun')
const teamorouter = PROVIDER_PRESETS.find((preset) => preset.id === 'teamorouter')
@ -106,12 +105,6 @@ describe('provider presets API', () => {
expect(minimax?.defaultEnv?.CLAUDE_CODE_AUTO_COMPACT_WINDOW).toBe('1000000')
expect(minimax?.defaultEnv?.ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES).toBe('thinking,adaptive_thinking')
expect(minimax?.modelContextWindows?.['MiniMax-M3']).toBe(1000000)
expect(jiekouai?.baseUrl).toBe('https://api.jiekou.ai/anthropic')
expect(jiekouai?.authStrategy).toBe('auth_token')
expect(jiekouai?.defaultModels.main).toBe('claude-sonnet-4-6')
expect(jiekouai?.defaultModels.opus).toBe('claude-opus-4-7')
expect(jiekouai?.defaultEnv?.ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES).toBe('none')
expect(jiekouai?.modelContextWindows?.['claude-sonnet-4-6']).toBe(1000000)
expect(shengsuanyun?.baseUrl).toBe('https://router.shengsuanyun.com/api')
expect(shengsuanyun?.authStrategy).toBe('auth_token')
expect(shengsuanyun?.defaultModels.main).toBe('anthropic/claude-sonnet-4.6')
@ -134,7 +127,6 @@ describe('provider presets API', () => {
const zhipu = PROVIDER_PRESETS.find((preset) => preset.id === 'zhipuglm')
const kimi = PROVIDER_PRESETS.find((preset) => preset.id === 'kimi')
const minimax = PROVIDER_PRESETS.find((preset) => preset.id === 'minimax')
const jiekouai = PROVIDER_PRESETS.find((preset) => preset.id === 'jiekouai')
const shengsuanyun = PROVIDER_PRESETS.find((preset) => preset.id === 'shengsuanyun')
const teamorouter = PROVIDER_PRESETS.find((preset) => preset.id === 'teamorouter')
const custom = PROVIDER_PRESETS.find((preset) => preset.id === 'custom')
@ -166,9 +158,6 @@ describe('provider presets API', () => {
expect(kimi?.modelContextWindows?.['kimi-for-coding']).toBe(262144)
expect(kimi?.modelContextWindows?.['kimi-for-coding-highspeed']).toBe(262144)
expect(minimax?.apiKeyUrl).toBe('https://platform.minimaxi.com/subscribe/token-plan?code=1TG2Cseab2&source=link')
expect(jiekouai?.apiKeyUrl).toBe('https://jiekou.ai/referral?invited_code=OBNU3K')
expect(jiekouai?.promoText).toContain('官方 8 折')
expect(jiekouai?.featured).toBe(true)
expect(shengsuanyun?.apiKeyUrl).toBe('https://www.shengsuanyun.com/?from=CH_LEJ88KWR')
expect(shengsuanyun?.promoText).toContain('首充 10%')
expect(shengsuanyun?.featured).toBe(true)

View File

@ -128,33 +128,6 @@
"MiniMax-M2.7-highspeed": 204800
}
},
{
"id": "jiekouai",
"name": "接口AI",
"baseUrl": "https://api.jiekou.ai/anthropic",
"apiFormat": "anthropic",
"defaultModels": {
"main": "claude-sonnet-4-6",
"haiku": "claude-haiku-4-5-20251001",
"sonnet": "claude-sonnet-4-6",
"opus": "claude-opus-4-7"
},
"needsApiKey": true,
"websiteUrl": "https://jiekou.ai",
"apiKeyUrl": "https://jiekou.ai/referral?invited_code=OBNU3K",
"promoText": "接口AI为 cc-haha 的用户提供官方资源与稳定高性能体验,订阅包价格为官方 8 折;绑定 GitHub 后还可领取 3 美元优惠券。",
"featured": true,
"authStrategy": "auth_token",
"defaultEnv": {
"ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES": "none"
},
"modelContextWindows": {
"claude-sonnet-4-6": 1000000,
"claude-haiku-4-5-20251001": 200000,
"claude-haiku-4-5": 200000,
"claude-opus-4-7": 1000000
}
},
{
"id": "shengsuanyun",
"name": "胜算云",