feat(core): 更新文件操作工具描述为模板格式

- 更新 read_file 工具描述,支持模板变量
- 更新 edit_file 工具描述,支持模板变量
- 更新 write_file 工具描述
- 添加 read-file-tool 常量 (DEFAULT_READ_LINES, MAX_LINE_LENGTH)
- 在模板渲染器中注册新常量
This commit is contained in:
2025-12-17 01:13:27 +08:00
parent 8c46635dc7
commit 93f6890a04
5 changed files with 49 additions and 4 deletions
@@ -0,0 +1,9 @@
/**
* Read File 工具配置常量
*/
/** 默认读取行数 */
export const DEFAULT_READ_LINES = 2000;
/** 最大行长度(超过会被截断) */
export const MAX_LINE_LENGTH = 2000;
+11 -1
View File
@@ -26,6 +26,10 @@ import {
MAX_TIMEOUT_MS,
MAX_OUTPUT_CHARS,
} from '../constants/bash-tool.js';
import {
DEFAULT_READ_LINES,
MAX_LINE_LENGTH,
} from '../constants/read-file-tool.js';
/**
* 获取嵌套属性值
@@ -466,6 +470,12 @@ export function createToolDescriptionContext(
EXPLORE_SUBAGENT_TYPE: 'explore',
};
// 添加 read_file 工具相关常量
const readFileVars: Record<string, number> = {
DEFAULT_READ_LINES,
MAX_LINE_LENGTH,
};
// 注册模板函数
const functions: TemplateFunctionRegistry = {
CUSTOM_TIMEOUT_MS: () => CUSTOM_TIMEOUT_MS,
@@ -475,7 +485,7 @@ export function createToolDescriptionContext(
return {
...base,
custom: { ...base.custom, ...toolVars, ...subagentVars },
custom: { ...base.custom, ...toolVars, ...subagentVars, ...readFileVars },
__functions__: functions,
};
}
@@ -1 +1,9 @@
通过字符串替换编辑文件的部分内容。比 write_file 更高效,适合修改文件的一小部分。
Performs exact string replacements in files.
Usage:
- You must use your `${READ_TOOL_NAME}` tool at least once in the conversation before editing. This tool will error if you attempt an edit without reading the file.
- When editing text from Read tool output, ensure you preserve the exact indentation (tabs/spaces) as it appears AFTER the line number prefix. The line number prefix format is: spaces + line number + tab. Everything after that tab is the actual file content to match. Never include any part of the line number prefix in the old_string or new_string.
- ALWAYS prefer editing existing files in the codebase. NEVER write new files unless explicitly required.
- Only use emojis if the user explicitly requests it. Avoid adding emojis to files unless asked.
- The edit will FAIL if `old_string` is not unique in the file. Either provide a larger string with more surrounding context to make it unique or use `replace_all` to change every instance of `old_string`.
- Use `replace_all` for replacing and renaming strings across the file. This parameter is useful if you want to rename a variable for instance.
@@ -1 +1,12 @@
读取指定文件的内容
Reads a file from the local filesystem. You can access any file directly by using this tool.
Assume this tool is able to read all files on the machine. If the User provides a path to a file assume that path is valid. It is okay to read a file that does not exist; an error will be returned.
Usage:
- The file_path parameter must be an absolute path, not a relative path
- By default, it reads up to ${DEFAULT_READ_LINES} lines starting from the beginning of the file
- You can optionally specify a line offset and limit (especially handy for long files), but it's recommended to read the whole file by not providing these parameters
- Any lines longer than ${MAX_LINE_LENGTH} characters will be truncated
- Results are returned using cat -n format, with line numbers starting at 1
- This tool can only read files, not directories. To read a directory, use an ls command via the ${BASH_TOOL_NAME} tool.
- You can call multiple tools in a single response. It is always better to speculatively read multiple potentially useful files in parallel.
- If you read a file that exists but has empty contents you will receive a system reminder warning in place of file contents.
@@ -1 +1,8 @@
创建新文件或完全覆盖现有文件。如果只需修改文件的一部分,请使用 edit_file。
Writes a file to the local filesystem.
Usage:
- This tool will overwrite the existing file if there is one at the provided path.
- If this is an existing file, you MUST use the ${READ_TOOL_NAME} tool first to read the file's contents. This tool will fail if you did not read the file first.
- ALWAYS prefer editing existing files in the codebase. NEVER write new files unless explicitly required.
- NEVER proactively create documentation files (*.md) or README files. Only create documentation files if explicitly requested by the User.
- Only use emojis if the user explicitly requests it. Avoid writing emojis to files unless asked.