feat: improve direct model workspace tools

Direct models now use bundled ripgrep for workspace discovery, read files through resumable pages, and edit multiple files with apply_patch. Ask can search and read while Execute retains write access, and fixed total input limits no longer constrain these tools.

Release note: 直连模型现可使用随包 ripgrep 搜索项目、分页读取任意大小的文本,并通过多文件补丁修改代码;设置中的相关能力统一显示为工作区文件和开发工具。
This commit is contained in:
mesalogo
2026-09-10 00:45:03 +08:00
parent c1f8ba80ee
commit ec100f8176
28 changed files with 1542 additions and 171 deletions
+10 -2
View File
@@ -1,4 +1,5 @@
import { createHash, randomBytes } from 'node:crypto'
import { dirname } from 'node:path'
import type {
ApprovalDecision,
AgentRuntimeStatus,
@@ -269,6 +270,7 @@ export type ModelRuntimeOptions = {
maximumOutputTokens?: number
directModelSubagentScheduler?: SubagentScheduler
launchEnvironmentProvider?: LaunchEnvironmentProvider
ripgrepExecutablePath?: string
}
function getErrorMessage(value: unknown): string | undefined {
@@ -1654,8 +1656,14 @@ export class ModelAgentRuntime implements AgentRuntime {
options.knowledgeGateway,
options.webSearchEnabled,
{
processService: new LocalDirectModelProcessService(),
subagentService: directModelSubagentService
processService: new LocalDirectModelProcessService({
environment: options.launchEnvironmentProvider?.(),
...(options.ripgrepExecutablePath
? { toolBinDirectory: dirname(options.ripgrepExecutablePath) }
: {})
}),
subagentService: directModelSubagentService,
ripgrepExecutablePath: options.ripgrepExecutablePath
},
options.launchEnvironmentProvider
)