AggRoot
文档目录

代码工具

AggRoot 的代码工具插件提供代码执行、验证、格式化、分析、重构等能力,集成了 CodeEngine 代码引擎和 ESLint 静态检查。


CodeExecute — 执行代码

在沙盒中执行 JavaScript 代码,用于运行测试、脚本或验证逻辑。

参数

参数 类型 必填 说明
code string 否* 要执行的 JavaScript 代码
file string 否* 要执行的文件路径(与 code 二选一)
timeout number 否 超时秒数(默认 30,最大 120)

*code 和 file 至少提供一个。

功能特性

  • 使用 Node.js 执行代码
  • 超时自动终止进程(含子进程树清理)
  • 输出限制 10000 字符,防止大量输出占用上下文

示例

// 执行代码片段
CodeExecute({"code": "const result = [1,2,3].map(x => x * 2); console.log(result);"})

// 执行文件
CodeExecute({"file": "test/unit.test.js", "timeout": 60})

// 验证逻辑
CodeExecute({"code": "function fib(n) { return n <= 1 ? n : fib(n-1) + fib(n-2); } console.log(fib(10));"})

注意事项

  • 风险等级为 dangerous,执行前需确认
  • 代码在独立进程中运行,可访问本地文件系统
  • 不适合长时间运行的任务(最大 120 秒超时)

CodeValidate — 验证代码

使用 TypeScript 编译器(tsc --noEmit)进行类型检查,报告真实的类型错误。

参数

参数 类型 必填 说明
path string 否* 要验证的文件路径
code string 否* 要验证的代码字符串(与 path 二选一)

*path 和 code 至少提供一个。

功能特性

  • 使用项目中的 tsconfig.json 配置
  • 自动向上查找最近的 tsconfig.json
  • 支持代码字符串验证(临时写入文件后检查)
  • 30 秒超时保护
  • 输出过滤:优先显示目标文件相关的错误

示例

// 验证项目文件
CodeValidate({"path": "src/app.ts"})

// 验证代码片段
CodeValidate({"code": "const x: string = 123;"})

输出说明

  • 验证通过:返回 "TypeScript validation passed — no type errors found"
  • 验证失败:显示错误数量、警告数量及详细错误信息

CodeFormat — 格式化代码

格式化 TypeScript、JavaScript、JSON 等文件,内置缩进修复。

参数

参数 类型 必填 默认值 说明
path string 否* — 要格式化的文件路径
code string 否* — 要格式化的代码字符串(与 path 二选一)
write boolean 否 false 是否将格式化结果写回文件
indent number 否 2 缩进空格数

*path 和 code 至少提供一个。

示例

// 预览格式化结果(不写回)
CodeFormat({"path": "src/messy.ts"})

// 格式化并写回文件
CodeFormat({"path": "src/messy.ts", "write": true})

// 自定义缩进
CodeFormat({"path": "src/style.ts", "write": true, "indent": 4})

// 格式化代码字符串
CodeFormat({"code": "function test(){return 1;}"})

CodeAnalyze — 分析代码

深度分析代码文件,提取符号信息、依赖关系、ESLint 问题。

参数

参数 类型 必填 默认值 说明
path string 是 — 要分析的文件路径
includeComplexity boolean 否 true 是否包含复杂度指标

分析结果

类别 说明
文件信息 行数、字符数
导入(Imports) 导入的模块路径列表
导出(Exports) 导出的符号列表
函数(Functions) 函数名列表(使用 CodeEngine 提取)
类(Classes) 类名列表
问题(Issues) ESLint 检测到的错误和警告

示例

// 分析文件
CodeAnalyze({"path": "src/domain/agent/aggregate.ts"})

// 不含复杂度分析
CodeAnalyze({"path": "src/utils.ts", "includeComplexity": false})

技巧

  • 优先使用 CodeEngine 提取符号(更准确),不可用时回退到正则匹配
  • ESLint 超时 30 秒后自动回退到简单检查(console.log、TODO/FIXME 等)
  • 分析结果包含问题严重等级和规则名,便于定位修复

CodeRefactor — 重构代码

支持多种重构操作,集成 CodeEngine 语义感知重构。

参数

参数 类型 必填 说明
operation string 是 重构操作类型
path string 是 目标文件路径

操作特定参数见下方各操作说明。

支持的操作

1. extract_function — 提取函数

附加参数 类型 必填 说明
startLine number 是 起始行号(0-based)
endLine number 是 结束行号(exclusive)
functionName string 是 新函数名
CodeRefactor({
  "operation": "extract_function",
  "path": "src/handler.ts",
  "startLine": 10,
  "endLine": 20,
  "functionName": "processData"
})

2. rename — 重命名

附加参数 类型 必填 说明
oldName string 是 当前名称
newName string 是 新名称
symbolKind string 否 符号类型过滤:function/class/variable/interface/type/all
CodeRefactor({
  "operation": "rename",
  "path": "src/app.ts",
  "oldName": "oldVar",
  "newName": "newVar",
  "symbolKind": "variable"
})

重命名逻辑:

  1. 优先使用 CodeEngine 语义重命名(跨文件安全)
  2. 回退到安全 Token 重命名(跳过注释和字符串中的匹配)

3. organize_imports — 整理导入

无需额外参数。自动排序 import 语句:第三方模块在前,相对路径在后,同组内按路径排序。

CodeRefactor({
  "operation": "organize_imports",
  "path": "src/app.ts"
})

4. add_import — 添加导入

附加参数 类型 必填 说明
importPath string 是 导入路径
importName string 否 导入的符号名
// 具名导入
CodeRefactor({
  "operation": "add_import",
  "path": "src/app.ts",
  "importPath": "lodash",
  "importName": "debounce"
})

// 副作用导入
CodeRefactor({
  "operation": "add_import",
  "path": "src/app.ts",
  "importPath": "./polyfills"
})

5. remove_unused — 移除未使用的导入

无需额外参数。自动检测并移除文件中未被使用的 import 语句。

CodeRefactor({
  "operation": "remove_unused",
  "path": "src/app.ts"
})

辅助工具

CodeIndex — 索引项目

为项目目录建立代码索引,启用符号搜索和依赖分析。

参数 类型 必填 说明
path string 是 项目根目录
pattern string 否 文件 glob 模式(默认 **/*.{ts,tsx,js,jsx})
CodeIndex({"path": "/projects/my-app"})
CodeIndex({"path": "/projects/my-app", "pattern": "**/*.py"})

CodeStats — 代码统计

查看当前代码索引的统计信息。无需参数。

CodeStats({})

返回:文件数、符号数、引用数、导入/导出数、索引大小。

CodeDependencies — 依赖分析

分析指定文件的依赖关系和修改影响范围。

参数 类型 必填 说明
path string 是 目标文件路径
CodeDependencies({"path": "src/core/engine.ts"})

返回:直接影响文件数、间接影响文件数、风险等级及因素。


工作流集成

代码工具与 WorkflowController 深度集成:

  • 事务管理:写操作(Write/Edit/CodeRefactor/CodeFormat)自动纳入事务,失败自动回滚
  • 检查点:关键操作后自动创建检查点,支持恢复
  • 脏文件追踪:修改后自动标记文件为脏,CodeEngine 下次搜索时增量同步
  • 模式检测:根据操作自动切换工作模式(Analysis → Refactor)