---
id: "mnrpjtlp-mnb9od"
name: "agent.js 代码质量问题清单"
type: "reference"
project: "foliko"
tags: [code-review, javascript, performance, best-practices, error-handling]
created: "2026-04-09"
---
在审查 foliko/src/core/agent.js 时发现以下典型代码问题模式：

1. **同步文件 I/O 阻塞风险**（第364,369行）
   - 位置：`_getSubAgentCapabilities()` 方法内
   - 问题：`fs.existsSync()` 和 `fs.readFileSync()` 阻塞事件循环
   - 建议：启动阶段调用的方法应改为 `fs.promises` 异步操作

2. **循环内字符串拼接**（多处：161-163, 183-186, 202-205, 225-238, 263-278行）
   - 模式：使用 `+=` 在循环中拼接字符串
   - 建议：改用数组收集 + `join('\n')` 模式
   - 注意：部分代码用 `map()` 当 `forEach()` 使用，忽略返回值

3. **硬编码魔法数字**（第73-114行）
   - 优先级配置使用裸数字 100, 200, 300...1000
   - 建议：提取为命名常量 `PROMPT_PRIORITY.xxx`

4. **静默错误吞噬**（多处：232-236, 366-371, 521-523, 532-534, 547-549行）
   - `try-catch` 捕获异常后直接忽略或返回 null
   - 问题：难以调试，无法区分"无文件"和"读取失败"
   - 建议：至少使用 `console.warn` 或日志框架记录

5. **误判问题**：EventEmitter 导入看似未使用，实际通过 `extends` 继承使用（第6,10行）

**How to apply**：
- 代码审查时检查同步 I/O、字符串拼接、魔法数字、静默错误
- 优先处理可能阻塞事件循环的同步操作
- 错误处理至少要记录日志，区分不同失败场景