Files
metona-ai-desktop/electron/harness/tools/built-in/index.ts
T
thzxx 4554177db0 feat: 升级至 v0.3.3 — 新增 delete_file 工具 + 文件工具全面优化
## 主要变更

### 1. 新增 delete_file 工具(26 → 27 个)
- 支持:删除文件/空目录(默认)/递归删除非空目录(recursive: true)
- 5 层安全防护:
  * isPathWithinWorkspace — 路径遍历防护
  * isProtectedWorkspaceFile — MEMORY.md 拦截
  * 工作空间根目录保护 — 禁止删除 workspace 本身
  * 递归删除需显式开启 — 默认仅删空目录
  * riskLevel: HIGH + requiresPermission — 破坏性操作必须确认
- 友好错误处理:ENOTEMPTY 时提示设置 recursive: true

### 2. 文件工具全面优化(6 个工具)
- 抽取共享代码到 file-guard.ts:
  * safeResolvePath — 合并路径遍历 + MEMORY.md 校验
  * matchGlob — 简易通配符匹配
  * extractErrorMessage — 统一错误提取
  * MAX_FILE_SIZE_BYTES (10MB) / FILE_TOOL_TIMEOUT_MS (15s) / MAX_LINE_LENGTH (10000)
- read_file:stat 预检 + 超长行截断 + 二进制检测 + 大小上限
- write_file:原子写入(临时文件+rename)+ 内容大小上限 + append 返回 new_file_size
- list_directory:1000 结果上限 + modified time + include_hidden 参数 + 提前终止优化
- search_files:regex lastIndex 修复 + context_lines + include_hidden + 大文件跳过
- file_editor:dry_run 预览模式 + 文件大小上限

### 3. 审计修复(1 FAIL + 3 WARN)
- FAIL: isBinaryFile 用 bytesRead 限制循环,修复 < 8KB 文本误判为二进制
- WARN-1: file-editor dry_run preview 分模式计算,修复 insert 范围过大
- WARN-2: write_file 允许空字符串创建空文件
- WARN-3: list_directory listDir 提前终止,避免大目录全量遍历
2026-07-14 21:42:46 +08:00

62 lines
2.0 KiB
TypeScript

/**
* 内置工具导出
*
* v0.3.2: 从 26 个工具扩展到 27 个工具
* 新增:delete_file
*
* v0.3.1: 从 15 个工具扩展到 26 个工具
* 新增:git_status, git_diff, git_log, git_commit, lint_code, run_tests,
* project_info, http_request, todo_write, think, view_image
*
* v0.2.0: 从 11 个工具扩展到 15 个工具
* 新增:file_editor, code_search, task_manager, diff_viewer
*
* @see docs/MetonaAI-Desktop 架构与交互设计.html — 9 个基础工具
*/
// 文件系统工具(5 个)
export { ReadFileTool, WriteFileTool, ListDirectoryTool, SearchFilesTool, DeleteFileTool } from './filesystem';
// v0.2.0: 精准文件编辑工具
export { FileEditorTool } from './file-editor';
// v0.2.0: ripgrep 代码搜索工具
export { CodeSearchTool } from './code-search';
// v0.2.0: 文件差异对比工具
export { DiffViewerTool } from './diff-viewer';
// 网络工具(2 个)
export { WebSearchTool, WebFetchTool } from './network';
// 记忆工具(2 个)
export { MemoryStoreTool, MemorySearchTool } from './memory';
// 命令工具(1 个)
export { RunCommandTool } from './command';
// 浏览器工具(1 个)
export { WebBrowserTool, cleanupBrowser, getBrowserManager } from './browser';
// 委派工具(1 个)
export { DelegateTaskTool } from './delegate-task';
// v0.2.0: 任务管理工具(1 个)
export { TaskManagerTool } from './task-manager';
// v0.3.1: Git 工具集(4 个)
export { GitStatusTool, GitDiffTool, GitLogTool, GitCommitTool } from './git';
// v0.3.1: 开发工具集(3 个)
export { LintCodeTool, RunTestsTool, ProjectInfoTool } from './dev-tools';
// v0.3.1: HTTP 请求工具(1 个)
export { HttpRequestTool } from './http-request';
// v0.3.1: TODO 管理工具(1 个)
export { TodoWriteTool } from './todo';
// v0.3.1: 结构化思考工具(1 个)
export { ThinkTool } from './think';
// v0.3.1: 图片查看工具(1 个)
export { ViewImageTool } from './view-image';