# script

> 脚本操作。读写: read_script, write_script。编辑: edit_script（行号/search_and_replace）。执行: execute_gdscript（⚠️ 沙箱仅防误操作，不可用于不可信输入。高安全场景请用 ALLOW_EXECUTE_GDSCRIPT=false 或容器隔离）。⚠️ write_script/edit_script 写入 .gd 前也走沙箱扫描（防 @tool 脚本加载即执行等已知危险 API 模式（清单不列举，防沙箱边界被侦察）;与 execute_gdscript 同威胁面）。测试: generate_test, create_test_scene。批量替换: project_replace。💡 execute_gdscript 最佳实践:分步执行、每步验证（把复杂逻辑拆成小块逐一跑,每步用 read_script/edit_script 迭代,避免一次性大脚本出错难定位）。

| 属性 | 值 |
|------|-----|
| 所属层 | headless |
| 安全级别 | danger-api |
| 需要 Godot | 否 |
| 需要编辑器 | 否 |
| 只读 | 否 |
| 长耗时 | 否 |

## Actions

- `read_script`
- `write_script`
- `edit_script`
- `generate_test`
- `create_test_scene`
- `execute_gdscript`
- `project_replace`

## Parameters

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `action` | enum (7 项) | ✓ | 操作类型 |
| `project_path` | string |  | Godot 项目目录路径（可选，默认使用 GODOT_PROJECT_PATH 环境变量或当前目录） |
| `script_path` | string |  | read_script 用绝对路径；write_script/edit_script/generate_test 用绝对或相对项目路径 |
| `content` | string |  | write_script: GDScript 内容 |
| `overwrite` | boolean |  | write_script: 覆盖已有文件（默认 false） |
| `start_line` | number |  | edit_script: 替换起始行（1-based） |
| `end_line` | number |  | edit_script: 替换结束行（1-based，含） |
| `new_content` | string |  | edit_script: 替换内容 |
| `indent_mode` | enum: raw | smart |  | edit_script: 缩进模式（默认 raw） |
| `verify_content` | string |  | edit_script: 期望内容守卫（不匹配则中止） |
| `auto_validate` | boolean |  | edit_script: 自动验证语法并在失败时回滚（默认 true） |
| `search_and_replace` | object |  | edit_script: 内容搜索替换模式（提供时忽略 start_line/end_line） |
| `code` | string |  | execute_gdscript: 要执行的 GDScript 代码 |
| `timeout` | number |  | execute_gdscript: 超时秒数（默认 30） |
| `load_autoloads` | boolean |  | execute_gdscript: 省略时自动检测 autoload 引用；显式 true/false 覆盖自动检测 |
| `search` | string |  | project_replace: 搜索文本 |
| `replace` | string |  | project_replace: 替换文本 |
| `extensions` | array |  | project_replace: 文件扩展名（默认 [".gd"]） |
| `exclude_dirs` | array |  | project_replace: 排除目录（默认 [".godot", ".import"]） |
| `dry_run` | boolean |  | project_replace: 仅预览不写入（默认 false） |
| `godot_path` | string |  | 覆盖 Godot 二进制路径（可选，优先于项目配置和环境变量） |

## 风险分布

读 1 / 写 4 / 破坏性 1 / 进程 1

---
<!-- AUTO-GENERATED by scripts/gen-tool-docs.mjs from capability-matrix.json v0.32.21. DO NOT edit manually; re-run npm run gen:tool-docs after tool changes. -->
