Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
bit-pm
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
燕伟桐
bit-pm
Commits
09fc028f
Unverified
提交
09fc028f
authored
5月 15, 2025
作者:
Will Chen
提交者:
GitHub
5月 15, 2025
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Mark which models are eligible for turbo edits (#172)
上级
16e1dd7f
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
38 行增加
和
22 行删除
+38
-22
ipc_types.ts
src/ipc/ipc_types.ts
+1
-0
language_model_helpers.ts
src/ipc/shared/language_model_helpers.ts
+4
-0
findLanguageModel.ts
src/ipc/utils/findLanguageModel.ts
+22
-0
get_model_client.ts
src/ipc/utils/get_model_client.ts
+10
-4
token_utils.ts
src/ipc/utils/token_utils.ts
+1
-18
没有找到文件。
src/ipc/ipc_types.ts
浏览文件 @
09fc028f
...
...
@@ -162,6 +162,7 @@ export type LanguageModel =
tag
?:
string
;
maxOutputTokens
?:
number
;
contextWindow
?:
number
;
supportsTurboEdits
?:
boolean
;
type
:
"local"
|
"cloud"
;
};
...
...
src/ipc/shared/language_model_helpers.ts
浏览文件 @
09fc028f
...
...
@@ -13,6 +13,7 @@ export interface ModelOption {
tag
?:
string
;
maxOutputTokens
?:
number
;
contextWindow
?:
number
;
supportsTurboEdits
?:
boolean
;
}
export
const
MODEL_OPTIONS
:
Record
<
string
,
ModelOption
[]
>
=
{
...
...
@@ -24,6 +25,7 @@ export const MODEL_OPTIONS: Record<string, ModelOption[]> = {
description
:
"OpenAI's flagship model"
,
maxOutputTokens
:
32
_768
,
contextWindow
:
1
_047_576
,
supportsTurboEdits
:
true
,
},
// https://platform.openai.com/docs/models/gpt-4.1-mini
{
...
...
@@ -50,6 +52,7 @@ export const MODEL_OPTIONS: Record<string, ModelOption[]> = {
description
:
"Excellent coder"
,
maxOutputTokens
:
64
_000
,
contextWindow
:
200
_000
,
supportsTurboEdits
:
true
,
},
{
name
:
"claude-3-5-haiku-20241022"
,
...
...
@@ -69,6 +72,7 @@ export const MODEL_OPTIONS: Record<string, ModelOption[]> = {
maxOutputTokens
:
65
_536
-
1
,
// Gemini context window = input token + output token
contextWindow
:
1
_048_576
,
supportsTurboEdits
:
true
,
},
// https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview
{
...
...
src/ipc/utils/findLanguageModel.ts
0 → 100644
浏览文件 @
09fc028f
import
{
LargeLanguageModel
}
from
"@/lib/schemas"
;
import
{
LanguageModel
}
from
"../ipc_types"
;
import
{
getLanguageModels
}
from
"../shared/language_model_helpers"
;
export
async
function
findLanguageModel
(
model
:
LargeLanguageModel
,
):
Promise
<
LanguageModel
|
undefined
>
{
const
models
=
await
getLanguageModels
({
providerId
:
model
.
provider
,
});
if
(
model
.
customModelId
)
{
const
customModel
=
models
.
find
(
(
m
)
=>
m
.
type
===
"custom"
&&
m
.
id
===
model
.
customModelId
,
);
if
(
customModel
)
{
return
customModel
;
}
}
return
models
.
find
((
m
)
=>
m
.
apiName
===
model
.
name
);
}
src/ipc/utils/get_model_client.ts
浏览文件 @
09fc028f
...
...
@@ -12,6 +12,7 @@ import { getLanguageModelProviders } from "../shared/language_model_helpers";
import
{
LanguageModelProvider
}
from
"../ipc_types"
;
import
{
llmErrorStore
}
from
"@/main/llm_error_store"
;
import
{
createDyadEngine
}
from
"./llm_engine_provider"
;
import
{
findLanguageModel
}
from
"./findLanguageModel"
;
const
dyadLocalEngine
=
process
.
env
.
DYAD_LOCAL_ENGINE
;
const
dyadGatewayUrl
=
process
.
env
.
DYAD_GATEWAY_URL
;
...
...
@@ -99,7 +100,14 @@ export async function getModelClient(
// Check if the selected provider supports Dyad Pro (has a gateway prefix) OR
// we're using local engine.
if
(
providerConfig
.
gatewayPrefix
||
dyadLocalEngine
)
{
const
provider
=
settings
.
enableProLazyEditsMode
const
languageModel
=
await
findLanguageModel
(
model
);
// Currently engine is only used for turbo edits.
const
isEngineEnabled
=
Boolean
(
settings
.
enableProLazyEditsMode
&&
languageModel
?.
type
===
"cloud"
&&
languageModel
?.
supportsTurboEdits
,
);
const
provider
=
isEngineEnabled
?
createDyadEngine
({
apiKey
:
dyadApiKey
,
baseURL
:
dyadLocalEngine
??
"https://engine.dyad.sh/v1"
,
...
...
@@ -109,9 +117,7 @@ export async function getModelClient(
baseURL
:
dyadGatewayUrl
??
"https://llm-gateway.dyad.sh/v1"
,
});
logger
.
info
(
`Using Dyad Pro API key. engine_enabled=
${
settings
.
enableProLazyEditsMode
}
`
,
);
logger
.
info
(
`Using Dyad Pro API key. engine_enabled=
${
isEngineEnabled
}
`
);
// Do not use free variant (for openrouter).
const
modelName
=
model
.
name
.
split
(
":free"
)[
0
];
const
autoModelClient
=
{
...
...
src/ipc/utils/token_utils.ts
浏览文件 @
09fc028f
...
...
@@ -2,7 +2,7 @@ import { LargeLanguageModel } from "@/lib/schemas";
import
{
readSettings
}
from
"../../main/settings"
;
import
{
Message
}
from
"../ipc_types"
;
import
{
getLanguageModels
}
from
"../shared/language_model_helpers
"
;
import
{
findLanguageModel
}
from
"./findLanguageModel
"
;
// Estimate tokens (4 characters per token)
export
const
estimateTokens
=
(
text
:
string
):
number
=>
{
...
...
@@ -31,20 +31,3 @@ export async function getMaxTokens(model: LargeLanguageModel) {
const
modelOption
=
await
findLanguageModel
(
model
);
return
modelOption
?.
maxOutputTokens
||
DEFAULT_MAX_TOKENS
;
}
async
function
findLanguageModel
(
model
:
LargeLanguageModel
)
{
const
models
=
await
getLanguageModels
({
providerId
:
model
.
provider
,
});
if
(
model
.
customModelId
)
{
const
customModel
=
models
.
find
(
(
m
)
=>
m
.
type
===
"custom"
&&
m
.
id
===
model
.
customModelId
,
);
if
(
customModel
)
{
return
customModel
;
}
}
return
models
.
find
((
m
)
=>
m
.
apiName
===
model
.
name
);
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论