多智能体协同系统的崩溃
一次失败经验的完整复盘
第一部分:报告背景——我到底遇到了什么问题 第 1 / 共 11 节
1.1 现象1:Solo Agent 的 thought 变成了 10-20 轮,每次只推进一点点
这是最让我困惑的问题。
刚开始用 Trae 的时候,Solo Agent 的 thought 很快速——通常 2-3 轮思考就能做出决策,然后执行。但到了 2026 年 5 月下旬,情况变了:每次我发消息,Solo Agent 要思考 10-20 轮才动一下,而且每轮 thought 只往前推一点点,像是"走一步喘三口气"。
举个例子:我让它"读一下这个文件",正常流程应该是:thought → 调用 Read → 返回结果。但现在变成了:thought(要不要读?)→ thought(检查规则A)→ thought(检查规则B)→ thought(检查规则C)→ thought(确认可以读)→ 终于调用 Read。一次简单的读文件操作,前面多了 5-6 轮不必要的思考。
我当时的感觉是:Agent 变"笨"了,或者说被什么东西"拖住"了。
以下截图记录了 Agent 在修改 opc_failure_report_2026-06-06.html 时的真实行为模式:
- 每次 Edit 只改 1 行(显示为
+1 -1),而不是一次性完成多个修改 - 每 1 行修改之间都插入一轮 Thought,形成"Edit → Thought → Edit → Thought..."的锯齿状链路
- 截图中可见连续 7 次 +1 -1 操作,中间穿插多轮 Thought
- 底部持续显示"思考中..."——说明这个模式还在继续
对比正常状态:健康状态下,Agent 应该一次 Thought 后连续执行多个 Edit(比如 5-10 行修改),而不是每行都停下来"喘气"。
根因定位:这是上下文窗口过载的直接症状。~2660 行规则 + 系统提示词占用了 50-60% 的上下文窗口,Agent 没有足够空间做"批量规划",只能看到眼前这一步。加上 114 行防循环规则的约束,每一步都要 Thought 确认是否合规。
1.2 现象2:屏幕闪烁,感觉电脑要坏
这是最让我害怕的问题。
在使用 Trae 的过程中,屏幕开始出现明显的闪烁——不是整个屏幕全黑,而是聊天窗口区域间歇性地重绘,伴随着卡顿。我新买的 Mac 怎么会这样?我一度怀疑是硬件问题。
后来发现,闪烁只在 Trae 的聊天窗口出现,其他应用完全正常。而且闪烁的频率和 Agent 思考的密集程度正相关——Agent 越"纠结",闪烁越频繁。
结论:闪烁不是硬件问题,也不是 Trae 本身的 bug,而是规则过载的可见症状。减少 Agent 的思考轮次(即精简规则、消除冲突)是降低闪烁频率的根本途径。具体操作见第九部分 §9.1 紧急止血方案。
1.3 现象3:循环在"新的不同形式中"不断发生
这是最让我无奈的问题。
我一开始以为"循环"就是一个固定的 bug——Agent 反复调用同一个工具,或者反复说同样的话。于是我一次次地打补丁:加规则禁止这个行为,加规则禁止那个行为。
但每次打完补丁,循环确实停止了——以那种形式。然后很快,循环以一种全新的形式再次出现。比如:
- 第一次:Agent 反复执行同一个 terminal 命令 → 我加了"禁止重复执行相同命令"
- 第二次:Agent 反复搜索同样的内容,但每次用不同的关键词 → 绕过"相同命令"检测
- 第三次:Agent 反复调用 Task 工具,每次授权不同的子 Agent → 绕过工具调用检测
感觉像是和一个自适应系统打游击战,我堵一个口,它钻另一个口。
结论:"针对每种循环形式分别封堵"的策略本身就有缺陷——每加一条规则就占用更多上下文空间,反而让 Agent 更容易失忆和犯错。正确的思路不是继续加规则,而是回到系统层面减少触发循环的根本条件(详见第五部分冲突分析和第九部分解决方案)。
1.4 现象4:指令格式内容变了
这是最让我困惑的细节问题。
有些我之前用过的命令,Agent 再次执行时格式和参数变得不一样了。比如之前 rm 命令直接删除文件,后来变成了 trash(移入回收站)。虽然这个变化实际上是好的(安全保护),但当时我并不知道是 Trae 的沙箱机制在起作用,只觉得"Agent 怎么不按我说的做"。
当 Agent 执行的命令格式与你指定的不一致时,首先排查以下三种可能,不要默认认为是 Agent "不听话":
- 沙箱拦截/改写(如 rm → trash)——Trae 安全机制在起作用
- 白名单限制导致降级——命令被白名单规则改写
- Trae 版本更新改变了内置行为——升级后默认行为可能变化
1.5 现象5:最开始没有这些问题
这是最关键的线索。
我清楚地记得,刚开始用 Trae 做 OPC 的时候,一切都很流畅。Agent 响应快,thought 简洁,没有循环,没有闪烁。问题是在我不断往规则里加东西之后才逐渐出现的。
这让我意识到:问题不是 Trae 本身坏了,而是我加进去的东西,把系统拖垮了。 但具体是哪些东西?怎么拖垮的?这就是我决定做这次深度复盘的原因。
1.6 现象6:提前终止——对话历史过长导致熔断
这是后续发现的补充现象。
在某个对话框讨论过多轮后,出现了新的问题:Agent 刚开始思考就显示"任务完成"(进度仅 55%)。这不是真正完成,而是上下文过载触发了熔断规则。
- Trae 的防循环规则规定:当上下文窗口接近上限时,系统会触发熔断,停止所有工具调用,直接输出文本
- 对话历史过长 → 上下文窗口占用过高 → Agent 决策能力下降 → 可能反复尝试同一操作 → 触发熔断
- 重启 Trae 或开启新对话后问题消失,证实是上下文过载问题
关键发现:单对话轮次建议不超过 50-100 轮,否则容易触发熔断。
1.7 现象7:OpenPreview 循环——生成页面后预览时反复报错 ERR_ABORTED
这是最新的、也是最隐蔽的一种循环形式。
当 Agent 完成网页生成后,会调用 OpenPreview 工具让浏览器预览结果。但很多时候,浏览器返回 net::ERR_ABORTED 错误。Agent 的 thought 会判断"浏览器出了问题",于是尝试重试——换端口、重启服务器、换 URL 格式……但每次都得到同样的错误。
我在一次对话中亲眼看到 Agent 对同一个 HTML 文件调用了 十几次 OpenPreview,每次都返回 ERR_ABORTED,而 Agent 每次都认为是"需要再试一次"。
ERR_ABORTED 到底是什么?
这不是"浏览器坏了"。net::ERR_ABORTED 在 Chromium 中的含义是:导航请求在完成前被主动取消。最可能的原因:
- Agent 刚写完 HTML 文件(Write/Edit),紧接着调用 OpenPreview
- 但 Trae 的文件系统 watcher 还在处理变更事件,或 HTTP 服务器尚未完全就绪
- 浏览器收到不完整的响应或被取消的请求 → ERR_ABORTED
- Trae 的内置浏览器在频繁切换预览 URL 时也会取消前一个未完成的导航请求
为什么这会导致循环:
Agent 完成页面生成
↓
调用 OpenPreview(url) ← 第1次
↓
浏览器返回:net::ERR_ABORTED
↓
Agent 的 thought:"浏览器出问题了,再试一次"
↓
调用 OpenPreview(url) ← 第2次 → ERR_ABORTED
↓
Agent:"换个方式?换个端口?"
↓
启动新服务器 → 调用 OpenPreview ← 第3次、第4次...
↓
系统警告:"工具被重复调用超过3次"
↓
Agent 更加困惑 → 尝试更多变体...
↓
🔄 循环形成
OpenPreview 对同一 URL 最多允许 2 次尝试;若两次均返回 ERR_ABORTED,则停止重试并告知用户"预览服务暂不可用,请手动在浏览器中打开文件"。此规则应写入全局规则 §7 或项目规则中,而非依赖通用的"禁止重复调用"规则。
1.8 从现象到复盘:我的决策过程
面对这些现象,我做过多次尝试:
- 修规则:每次看到新循环就加一条禁止规则 → 循环换形式继续
- 修 Agent:修改 Agent 定义想让它更"听话" → 效果不稳定
- 修白名单:扩充命令白名单想让它"能干更多事" → 白名单从 10 条膨胀到 28 条
- 怀疑电脑:看屏幕闪烁,以为硬件有问题 → 找朋友确认电脑正常
每次尝试都是"头痛医头",没有一次触及根本原因。直到我意识到:这不是一个 bug,而是一个系统性崩溃。 需要从最底层——Trae 的进程架构、系统提示词生成机制、Agent 定义文件、规则加载逻辑、沙箱权限配置——全链路排查。
这就是这份报告的来由。
第二部分:Trae 内部运作机制深度解析 第 2 / 共 11 节
2.1 进程架构
Trae CN 是基于 Electron 的 AI 编程 IDE,运行时总共启动 26 个进程,合计占用约 4.5 GB 内存。其进程架构如下:
关键发现:主渲染进程(PID 45560)的累计 CPU 时间高达 99 分 48 秒,V8 JavaScript 引擎堆上限设置为 12 GB。这意味着渲染进程在处理聊天界面时承受了显著的计算负载(详见第六部分)。
此数值是累计值,会在重启 Trae 后清零,不代表硬件故障。若需了解详情及长期优化建议,见第七部分数据分析。
2.2 规则加载机制
Trae 在每轮对话开始时,按以下优先级加载规则文本:
| 层级 | 路径 | 内容 | 行数 |
|---|---|---|---|
| 系统提示词 | Trae 内置 | 工具定义、子智能体描述、行为约束 | ~3000行(估算) |
| 用户全局规则 | ~/.trae/rules/opc-global-rules.md |
全局防循环规则、对话行为约束 | 31行 |
| 用户全局扩展 | ~/.trae/rules/opc-l7-l13-extension.md |
L7-L13 后链路开发到盈利全流程 | 1169行 |
| 项目规则 | AI/.trae/rules/project-rules.md |
项目专属规则、防循环规则 | 210行 |
| 合计 | ~2660行 |
这些规则文本在对话开始前即被加载到上下文窗口。它们是不可协商的——Agent 必须逐条阅读并遵守。
"不可协商"指的是 Agent 对已加载规则的遵守义务,而非用户对规则文件的控制权。用户可以通过精简规则文件内容、移除不必要的规则文件、或将非规则性质的文档移出 rules 目录,来直接减少每轮对话加载的规则文本总量。具体操作见第九部分 §9.1 紧急止血方案。
2.3 上下文窗口管理
Trae 使用的 AI 模型有一个固定的上下文窗口(token 上限)。当规则文本 + 对话历史超过窗口容量时,系统会自动压缩或截断较早的对话内容。这意味着:
- 规则文本越长,留给实际对话的空间越少
- 对话越长,Agent 越容易"忘记"早期上下文
- 当 Agent 忘记之前做了什么,就会重复操作 → 循环
以当前 AI 项目为例,~2660 行规则文本 + 系统提示词,对话开始前上下文窗口已被占用约 40-50%。每次对话轮次增加,可用空间继续缩小。
规则文本(不含 Trae 内置系统提示词)占上下文窗口的比例宜控制在 15-20% 以内,对应约 300-500 行用户自定义规则。超过此阈值时,Agent 的决策质量开始明显下降。当前 2660 行(40-50%)已严重超标约 5-7 倍。第九部分 §9.4 重构后目标为 ≤780 行(含所有方向),全局规则精简后单项目可降至 ~200 行。
2.4 沙箱与命令执行机制
Trae 的所有终端命令都通过沙箱(sandbox)执行:
沙箱配置有多个历史版本(May 29 到 Jun 2 共 7 个版本),当前活跃版本为 6a19a2f73c32e7134985a065。沙箱版本的频繁更新意味着命令的执行方式可能随时变化,这解释了用户观察到的"指令格式内容变了"。
2.5 白名单机制
当前白名单配置包含 27 个命令,文件操作覆盖整个用户主目录,MCP 工具设置为 alwaysRun:
| 配置项 | 值 |
|---|---|
| 命令白名单 | mkdir, ssh-keygen, rm, echo, cd, npx, ssh, expect, chmod, source, tail, cat, python3, wc, bash, printf, git, sed, grep, pnpm, kill, curl, npm, n, export, head, sleep, which, lsof, xargs |
| 文件路径 | /Users/yolanda(整个用户主目录), /tmp |
| MCP 自动运行 | alwaysRun(不等待确认) |
白名单审批应遵循"最小必要"原则——只有当 Agent 明确需要且该命令无法被 Trae 内置工具替代时,才加入白名单。默认态度应为"不加入"而非"加入"。详细逐条审计及具体优化清单见第九部分 §9.2。
2.6 Task 子智能体机制
Trae 的 Task 工具允许 Agent 调用子智能体。Trae 自动扫描 ~/.trae/agents/ 和 <project>/.trae/agents/ 目录下的所有 Agent 定义文件,为每个 Agent 生成摘要描述,注入到系统提示词的 Task 工具参数中。这意味着你的 40+ 个 OPC 智能体定义全部被注入到了系统提示词中。
关键机制:
- Trae 读取每个 Agent 文件的 frontmatter(id/zh/en/group/layers)和正文
- 自动生成一个 2-3 行的摘要描述
- 将这些摘要注入到 Task 工具的
subagent_type参数枚举中 - 但 Trae 的摘要来自启动时的缓存,不是实时读取文件——文件修改后不重启就不会生效
- 简化定义措辞:在 Agent 定义中使用短句、避免复杂条件语句,减少 Trae 摘要引擎的"理解空间"
- 用强约束覆盖:在 project-rules.md 中用明确的否定约束(如"OPC 绝不自动触发,仅响应显式指令")覆盖可能的摘要偏差
- 定期验证:通过让 Agent 输出其理解的自身触发条件来检查系统提示词中的实际摘要是否与原文一致
关于 Agent 数量是否需要缩减(当前 40+ 个全部注入系统提示词),这是一个独立的架构决策话题,需要单独展开讨论(见第十部分经验教训)。
第三部分:Trae 系统提示词详解 第 3 / 共 11 节
3.1 什么是系统提示词
系统提示词(System Prompt)是 Trae 在每轮对话开始前,发送给 AI 模型的一组指令文本。它定义了 AI 的"角色设定"、"可用工具"、"行为规范"和"特殊约束"。用户看不到完整的系统提示词,但它的内容直接影响 AI 的每一个决策。
3.2 系统提示词的结构
3.3 子智能体注册表的生成机制
这是理解整个冲突的关键。Trae 读取你的 Agent 定义文件后,为每个 Agent 生成一个摘要描述,注入到 Task 工具的参数中。但生成过程存在以下问题:
| Agent 定义文件 | 当前文件内容 | Trae 系统提示词中的摘要 | 是否一致? |
|---|---|---|---|
| OPC-Master-Orchestrator.md | "当创始人说'用OPC'/'@OPC'/'启动OPC'等触发词时,由 SOLO Agent 调用你。" | "每次用户发送新消息时自动触发。你是唯一的语义路由入口。" | 不一致(缓存未更新) |
| AI-Strategy-Director.md | "自动触发:对话话题明显涉及产业分析… → 自动激活"(第26行) | 可能包含"自动触发"语义 | 部分一致(原文有残留) |
| 其他方向战略总监 | "当OPC总调度识别到…关键词时激活" | 基本一致 | 一致 |
3.4 行为约束中的防循环建议
Trae 系统提示词自带的防循环规则包括:
- "同一事实/数据/状态,不得用任何工具验证超过 1 次"
- "同一工具连续调用 ≥3 次 → 强制停止"
- "避免重复验证已经成功的结果"
这些是 Trae 自带的约束,与你的项目规则中的防循环规则(§-1、§4)内容重叠但表述不同。Agent 需要同时遵守两套规则,增加了认知负担。
第四部分:OPC 智能体团队架构解析 第 4 / 共 11 节
4.1 设计初衷
OPC(Orchestrated Product Creation)是一个多智能体协同系统,旨在让不懂技术的创始人(Yolanda)能够通过 AI 智能体团队完成从产业研究到产品交付的全链路工作。
用户的使用方式:
- "请OPC判断" → OPC 总调度醒来,判断方向,分派合适的智能体
- "请OPC总调度调用xxx智能体" → OPC 直接调用用户指定的智能体
- 不提及 OPC 的普通对话 → OPC 不激活,solo agent 自行处理
这是一个干净、合理的设计——用户只需要说"请OPC判断",OPC 就会接管调度工作。
4.2 层级架构
4.3 规则体系概览
| 文件 | 位置 | 角色 |
|---|---|---|
| project-rules.md | AI/.trae/rules/ |
项目专属:§-1防循环元规则、§0.5防自动触发、§1注册表、§4执行安全规则 |
| opc-global-rules.md | ~/.trae/rules/ |
全局:§7防循环规则、§7.1熔断规则、§7.2日常约束 |
| opc-l7-l13-extension.md | ~/.trae/rules/ |
全局:L7-L13后链路完整架构(1169行) |
| AI-Strategy-Director.md | AI/.trae/agents/ |
Agent定义:角色、调度决策、触发条件 |
| 其他5个Agent定义 | AI/.trae/agents/ |
各层级专属Agent的角色和触发条件 |
第五部分:系统冲突的完整分析 第 5 / 共 11 节
5.1 冲突1(根本性):系统提示词缓存 vs 文件实时状态
这是最底层、最难控制的冲突。你的 OPC-Master-Orchestrator 当前定义是"当用户说触发词时才调用",但 Trae 系统提示词中缓存的 Agent 摘要仍是旧版本的"每次自动触发"。
为什么会这样:经过对文件修改历史和缓存机制的调查,这不是 Trae 在"擅自改写",而是缓存失效问题。你历史上多次修改 OPC 总调度的定义——早期版本确实包含"自动触发"语言(你本人确认),之后修改为"显式触发"。但 Trae 在 IDE 启动时读取 Agent 文件并生成摘要缓存,之后的文件修改不会自动触发缓存刷新。
| 来源 | 内容 | 原因 |
|---|---|---|
| Trae 系统提示词(缓存) | "每次用户发送新消息时自动触发。你是唯一的语义路由入口。" | 缓存了旧版本的 Agent 定义 |
| 你的 Agent 定义(当前文件) | "当创始人说'用OPC'/'@OPC'/'启动OPC'等触发词时,由 SOLO Agent 调用你。" | 已修改为显式触发,但缓存未同步 |
| 项目规则 §0.5(project-rules.md) | "OPC 仅由用户显式指令触发,无自动触发。这是唯一规则,无例外。" | 规则文件也是每次重启才重新加载 |
缓存失效的三个可能原因:
- 启动时加载,不是实时读取:Trae 在 IDE 启动时一次性生成所有 Agent 的摘要描述,整个会话期间使用缓存,不监听文件变更。
- 跨目录修改历史:你曾在项目级 rules 和全局 agents 之间反复修改 OPC 的定义,不同时期不同位置的文件内容不一致,缓存可能来自某个中间状态。
- 多来源拼合:系统提示词中 Agent 的描述可能不只来自
agents/*.md,还融合了 rules 文件中的 Agent 注册表描述,多个来源不一致时缓存结果不可预测。
Agent 同时收到互相矛盾的指令——系统提示词说"自动触发",项目规则说"禁止自动触发"。在 AI 推理层面,这意味着:
- 每次决策时,Agent 需要在"自动触发"和"禁止自动触发"之间做出判断
- 这个判断本身消耗 token 和推理时间
- 当上下文窗口不足时,Agent 可能做出不一致的决策
- 不一致的决策导致意外行为 → 用户觉得"不稳定" → 添加更多规则 → 更不稳定
虽然 Trae 的摘要生成机制本身不可控,但可以采取以下措施减轻其影响:
- 用项目规则强覆盖:在 project-rules.md 中用最高优先级的否定规则(如"无论系统提示词如何描述,OPC 仅由用户显式指令触发")强制覆盖可能的摘要偏差
- 减少 Agent 定义文件数量:每个 agents 目录下的文件都可能被 Trae 改写摘要——只保留核心必需的 Agent 定义
- 向 Trae 官方反馈:将此问题作为产品改进建议提交,推动提高摘要生成准确性
5.2 冲突2(执行层面):Agent 定义文件内部不一致
这是之前修改中遗漏的同步问题:
| 位置 | 内容 | 状态 |
|---|---|---|
| project-rules.md §0.5 | "OPC 仅由用户显式指令触发" | 正确 |
| project-rules.md §0.6 | "任何文件中出现'自动触发'等旧模式 → 必须修正" | 写了但从未执行 |
| AI-Strategy-Director.md 第26行 | "自动触发:对话话题明显涉及产业分析… → 自动激活" | 残留未清除 |
§0.6 明确要求清除的内容,在 Agent 定义中完好无损地保留着。规则说"必须修正",但实际从未执行。这是之前修改时的遗漏。
5.3 冲突3(结构层面):规则量的正反馈恶性循环
这是整个问题的核心动力学——防循环规则越多,循环越严重:
每次循环发生后,我们(用户 + AI)的应对模式是:①分析这次循环的"触发条件" → ②写一条新规则来阻止这个特定形式的循环 → ③修改 project-rules.md。
结果:从最初的简单规则,膨胀到现在的 114 行防循环规则(§-1: 19行 + §4: 64行 + opc-global §7: 31行)。讽刺的是,这些规则本身成了循环的催化剂。
即主动削减防循环规则的行数(从 114 行降到个位数),从而释放上下文窗口空间,减少 Agent 失忆概率,进而从根本上降低循环发生的频率。这是一个反直觉的操作:要解决循环,首先要删掉防循环规则。具体操作见第九部分 §9.1 操作2。
5.4 冲突4(资源层面):上下文窗口的零和博弈
规则文本、系统提示词、对话历史三者竞争同一个固定资源池。当前状态:规则文本 + 系统提示词已经消耗了约 50-60% 的上下文窗口。对话进行几轮后,窗口满,Agent 开始"遗忘"早期内容,导致重复操作。
5.5 冲突5(行为层面):白名单放宽与渲染压力的正相关
27 个命令白名单 + 全目录文件操作权限 + MCP alwaysRun,使 Agent 可以在短时间内密集执行大量工具调用。每个工具调用触发一次 DOM 更新 → 渲染进程重绘 → CPU 消耗。当工具调用密集时,渲染进程 CPU 峰值可达 91.8%。
因此,降低渲染压力的直接手段是收窄白名单(减少 Agent 可自主执行的命令种类)和限制文件路径范围(减少 Agent 可操作的目标数),从而间接降低单位时间内的工具调用密度。具体操作见第九部分 §9.1 操作4 和 §9.2 白名单专项优化。
5.6 冲突6(维护层面):各方向项目规则不同步
| 项目 | §4 内容 | 有防循环规则? |
|---|---|---|
| AI | 执行安全规则(防循环) | 是 |
| DOOH | 专业术语词典 | 否 |
| 灵活用工 | 小程序开发环境与预览规则 | 否 |
| 线上 | 无 §4 | 否 |
| 跨境电商 | 无 §4 | 否 |
防循环补丁只打在 AI 项目上,其他 4 个项目完全没有。但全局规则中的防循环规则(opc-global-rules.md §7)跨越所有项目生效,造成不一致。
5.7 冲突7(新增发现):跨项目规则碎片化——同一问题被拆成两份规则
这是排查过程中 Yolanda 自己发现的关键问题。在两天密集讨论防循环策略的过程中,由于频繁在项目间切换,防循环规则被分散写入两个不同位置:
| 位置 | 文件 | 防循环规则内容 | 行数 |
|---|---|---|---|
| 全局规则 | ~/.trae/rules/opc-global-rules.md |
§7 熔断规则 + 日常约束 | 31行 |
| AI 项目规则 | AI/.trae/rules/project-rules.md |
§-1 防循环元规则 + §4 执行安全规则 | 83行 |
| 合计 | 114行 |
关键问题:当在 AI 项目下工作时,Agent 同时加载两套规则(全局 §7 + 项目 §-1/§4),总共 114 行防循环规则。两套规则内容重叠但表述不同,且部分互相冲突:
- 全局 §7.1 说"熔断后停止所有工具调用,直接输出文本"
- 项目 §4.1 说"各工具有不同的硬限制,OpenPreview 不超过 1 次,RunCommand 不超过 2 次"
- 项目 §4.0 说"每次工具调用前必须自问 3 个问题"
Agent 需要同时遵守两套规则,决策路径被严重复杂化。
为什么这会发生:因为讨论防循环策略时,有时在 AI 项目下(修改了 project-rules.md),有时在全局目录下(修改了 opc-global-rules.md)。没有意识到同一个问题被拆成了两份规则,且在两个位置同时生效。
5.8 冲突8(新增发现):讨论文档被误放入 rules 目录,吞噬 44% 上下文窗口
这是排查过程中 Yolanda 发现的又一关键问题。opc-l7-l13-extension.md(1169 行)是一个 L7-L13 后链路(开发→测试→上线→获客→运营→盈利→迭代)的智能体架构设计文档,包含 20+ 个后链路智能体的角色定义、工作流程、依赖关系和路线图。
| 事实 | 说明 |
|---|---|
| 本意 | 一个单独的讨论页面,先琢磨方案,未敲定终版 |
| 实际 | 被放在了 ~/.trae/rules/ 目录下 |
| 后果 | 每轮对话都把这 1169 行全部加载到上下文窗口 |
| 占比 | 占规则文本总量(~2660 行)的 44% |
这是上下文窗口最大的单一消耗者。 更严重的是,因为它是"未敲定的讨论稿",内容本身可能有不完整、不一致的地方。Agent 读到一个不成熟的架构设计,反而增加了认知混乱。
为什么这会发生:当讨论后链路架构时,可能在某次操作中,这个讨论文档被写入了 ~/.trae/rules/ 目录。Trae 自动将 rules 目录下的所有 .md 文件作为 always-applied 规则加载,不管内容是否成熟、是否应该作为规则。
这个发现的重要性:在上下文窗口过载的 2660 行规则中,这 1169 行是最大的单一贡献者,且是完全不应该存在的。它对循环问题的贡献可能比防循环规则本身更大。
第六部分:级联故障链的完整还原 第 6 / 共 11 节
6.1 时间线
6.2 物理证据
| 指标 | 数值 | 解读 |
|---|---|---|
| 规则文本总量 | ~2660 行 | 占用上下文窗口 50-60% |
| Trae 进程总数 | 26 个 | 正常的 Electron 多进程架构 |
| Trae 总内存 | 4.5 GB | 正常范围(24GB 总内存的 18.75%) |
| 主渲染进程 CPU 累计 | 99 分 48 秒 | 严重过高,正常应在 10-20 分钟 |
| 主渲染进程 CPU 瞬时 | 12.6%~91.8% | 波动剧烈,峰值导致 UI 卡顿 |
| AI 推理进程 CPU | 11.2% | 持续高负载处理规则检查 |
| GPU 进程 CPU | 4.0% | 配合渲染进程工作 |
| 系统内存压力 | 64% 空闲 | 内存不是瓶颈 |
| 沙箱配置版本 | 7 个历史版本 | 配置频繁变更 |
| 白名单命令数 | 27 个 | 覆盖了大部分常用命令 |
6.3 用户观察到的症状及其技术解释
| 用户观察 | 技术原因 |
|---|---|
| "solo agent 的 thought 变成了很多轮(10-20次),每次只考虑一点点" | 114 行防循环规则要求 Agent 在每次工具调用前检查多个条件,每个 thought 只能处理一个检查点 |
| "屏幕闪烁,感觉电脑坏掉" | 主渲染进程累计 CPU 99 分钟,瞬时峰值 91.8%,UI 重绘跟不上,出现视觉闪烁 |
| "指令格式内容变了" | 沙箱 wrapper(trae-sandbox)+ trash_rm.zsh 拦截脚本改变了命令执行方式,沙箱版本多次更新 |
| "刚开始用 trae 时没有这个现象" | 当时规则极少,Agent 负担轻,thought 快速,上下文充足 |
| "循环在新的不同形式中不断发生" | 每次打补丁只堵住一种循环形式,但根本原因(上下文不足 + 规则冲突)未解决,循环换一种形式继续出现 |
第七部分:CPU/内存数据分析——你的电脑安全吗 第 7 / 共 11 节
7.1 直接回答:电脑不会坏
7.2 逐项解读
99 分 48 秒的累计 CPU 是什么意思?
这不是"CPU 一直在满负荷运行 99 分钟",而是"从进程启动到现在,所有 CPU 时间片的累计总和"。Trae 可能已经运行了 8-10 小时,在这段时间内,渲染进程断断续续使用了 99 分钟的 CPU 时间——平均下来约 10-20% 的 CPU 占用。
类比:你开车 8 小时,发动机断断续续工作了 99 分钟。这不是发动机要爆炸,而是正常的间歇性工作。
瞬时峰值 91.8% 危险吗?
不危险。瞬时峰值意味着 CPU 在某一秒用到了 91.8% 的资源,下一秒可能就降到了 12%。这是正常的 CPU 使用模式。你的 Mac 设计时就能承受 100% CPU 负载。
类比:你跑步时心率飙到 150,但不会一直 150,很快就会降下来。心脏不会因此爆炸。
4.5 GB 内存占用正常吗?
完全正常。你的 Mac 有 24 GB 内存,Trae 用了 4.5 GB(18.75%)。现代浏览器(Chrome)开 10 个标签页就可能占用 3-4 GB。Trae 是基于 Electron(Chromium)的,4.5 GB 在正常范围内。
V8 堆上限 12 GB 危险吗?
这是 V8 JavaScript 引擎设置的最大可用内存上限,不是实际使用量。实际使用量远低于这个值。就像你的信用卡额度是 10 万,但你只刷了 3000。
屏幕闪烁的真正原因
屏幕闪烁是因为渲染进程在某一刻 CPU 过载,无法及时完成 UI 重绘。这就像你同时打开 50 个应用,电脑会卡顿——但卡顿不会损坏硬件。
屏幕闪烁 = 软件卡顿,不是硬件故障。
7.3 需要处理吗?
| 时间范围 | 需要做什么 | 不处理的结果 |
|---|---|---|
| 短期 | 不需要处理。重启 Trae 可以清零累计 CPU。 | 屏幕偶尔闪烁,电池消耗稍快 |
| 长期 | 精简规则后,Agent 的 thought 次数减少,工具调用减少,渲染进程 CPU 自然会降低。 | 持续闪烁会降低使用体验,但硬件不会损坏 |
第八部分:根因总结 第 8 / 共 11 节
8.1 直接原因
上下文窗口过载:~2660 行规则 + 系统提示词占用了 50-60% 的上下文窗口,导致 Agent 在对话进行几轮后开始"失忆",重复操作。其中 opc-l7-l13-extension.md(1169 行)本身是讨论文档,完全不应该作为规则加载,但它占了规则文本的 44%,是上下文窗口最大的单一消耗者。
8.2 系统性原因
防循环规则的正反馈恶性循环:规则越多 → Agent 越不稳定 → 循环 → 加更多规则 → 更不稳定。114 行防循环规则恰恰是循环的催化剂。
8.3 架构性原因
- Trae 系统提示词生成机制不可靠:Trae 可能在生成 Agent 摘要时改写你的原文,将"有触发词才调用"改为"每次自动触发"
- Agent 定义文件未同步:AI-Strategy-Director.md 仍保留"自动触发"语言,与 §0.5 和 §0.6 的规则冲突
- 多项目规则不一致:防循环规则只打在 AI 项目,其他 4 个方向项目完全没有
- 跨项目规则碎片化:防循环规则被分散写入全局(31行)和 AI 项目(83行),两套规则同时加载,内容重叠且部分冲突,导致 Agent 决策路径被严重复杂化
- 讨论文档误放 rules 目录:未敲定的讨论稿被放入 rules 目录,被自动加载为 always-applied 规则,吞噬 44% 上下文窗口
8.4 人为因素
- 白名单过度宽松:27 个命令白名单 + 全目录文件操作权限,使 Agent 拥有极高的自主执行权限
- 修改不全面:每次修改 project-rules.md 时,没有同步修改 Agent 定义、Skill 定义、其他方向项目规则
- 缺乏版本控制:git 历史显示 project-rules.md 只有 1 次 commit,所有防循环修改都在 git 之外直接编辑文件,无法追溯和回滚
8.5 根因权重排序
| 优先级 | 根因 | 证据强度 | 可控性 |
|---|---|---|---|
| P0 | 规则文本量过大(~2660行),上下文窗口严重不足 | 直接测量 | 可控 |
| P0 | 讨论文档误放 rules 目录(1169行,占44%) | 直接分析 | 可控 |
| P0 | 防循环规则形成正反馈恶性循环 | 逻辑链条完整 | 可控 |
| P0 | Trae 系统提示词生成机制改写 Agent 定义 | 直接对比(Agent文件 vs 系统提示词) | 不可控(Trae 机制) |
| P1 | Agent 定义残留"自动触发"语言,与 §0.5 和 §0.6 冲突 | 直接对比 | 可控 |
| P1 | 各方向项目规则不同步 | 直接对比 | 可控 |
| P2 | 所有修改在 git 之外,无版本追踪和回滚能力 | git log 确认 | 可控 |
| — | OpenClaw | 已排除(无进程残留、无文件残留) | — |
| — | 电脑硬件/系统 | 已排除(内存充足、网络正常) | — |
第九部分:分层解决方案(v2.0 详尽版) 第 9 / 共 11 节
9.0 前置说明:当前架构状态总览(2026-06-06 实测)
在开始执行任何方案之前,先确认当前实际状态:
| 维度 | 当前值 | 问题 |
|---|---|---|
| 全局规则 | opc-global-rules.md(51行)+ opc-l7-l13-extension.md(1169行) | 后者是讨论稿误放,占规则总量 44% |
| AI 项目规则 | project-rules.md(214行),含 §-1 + §4 防循环规则(83行) | 防循环规则过度膨胀 |
| 其他4个项目规则 | DOOH(125行)、灵活用工(104行)、线上(73行)、跨境电商(76行) | 均无防循环规则,与 AI 项目不一致 |
| 白名单命令 | 28 条(含 kill、chmod、ssh-keygen 等危险命令) | 过度宽松,Agent 自主权过大 |
| 文件路径白名单 | ["/Users/yolanda", "/tmp"] | 整个用户目录暴露给 Agent |
| MCP 自动运行 | alwaysRun | 不等待确认,Agent 可密集执行 |
| 沙箱版本 | 7 个活跃沙箱配置(每个项目一个)+ settings.json 7 个历史版本 | 沙箱权限配置冗余,初始化频繁 |
| Agent 定义 | AI-Strategy-Director.md 第26行仍有"自动触发" | 与 §0.5 规则冲突 |
| OPC 总调度 | Trae 系统提示词将其改写为"每次自动触发" | 不可控(Trae 内部机制) |
| 总计 Agent 数 | 40+ 个(含其他方向项目) | 系统提示词中 Agent 描述占约 25% |
9.0.5 行动清单总览:你需要做什么?
以下表格列出第九部分中所有需要你手动执行的操作。每项标注了:何时做、在哪里做、预计耗时。
| # | 操作 | 所属章节 | 时机 | 地点 | 耗时 | 状态 |
|---|---|---|---|---|---|---|
| A1 | 重启 Trae(让所有规则修改生效) | §9.1 操作5 | 立即 | Trae 应用 | 1 分钟 | ✅ 已完成 |
| A2 | 删除 2 个废弃沙箱配置文件(4 个 JSON 文件) | §9.3.5 | 本周内 | 本地终端 (Terminal) | 2 分钟 | ✅ 已完成 |
| A3 | 编辑全局规则 opc-global-rules.md(加入 Solo Agent 身份边界 + §0.0 最高优先级覆盖规则) | §9.4.2 + §9.4.9 步骤1+2 | 本周内 | 在 Trae 中打开编辑,或用本地编辑器 | 10 分钟 | ✅ 已完成 |
| A4 | 编辑 AI 项目规则 project-rules.md(加入 §0.0 最高优先级覆盖规则) | §9.4.3 + §9.4.9 步骤2 | 本周内 | 在 Trae AI 项目中打开编辑 | 10 分钟 | ✅ 已完成 |
| A5 | 检查并修复 ~54 个 Agent 定义文件中的"自动触发"残留 | §9.4.4 | 本周内 | 在 Trae 中用 Grep 全局搜索关键词 | 30-60 分钟 | ✅ 已完成 |
| A6 | 精简 OPC-Master-Orchestrator.md 定义(简化为短句版) | §9.4.9 步骤3 + §9.5.4 | 本周内 | 在 Trae 或本地编辑器中打开编辑 | 15 分钟 | ✅ 已完成 |
| A7 | 将 L3-L4c 的 ~25 个 Agent 定义文件移至存档目录(40+ → 15 个) | §9.5.3 | 1-2 周内 | 本地终端执行 mv 命令 | 10 分钟 | ❌ 取消(不适用) |
| A8 | 验证方案 B 生效(发测试消息观察 Thought 链路) | §9.4.9 步骤4 | A3-A6 完成后 | Trae 对话界面 | 5 分钟 | ✅ 已完成 |
| A9 | 更新其他4个方向(DOOH/灵活用工/线上/跨境电商)project rules,添加§0.0 | §11.7.1 | 用户要求全面检查后 | 在各方向项目中编辑 | 10 分钟 | ✅ 已完成 |
| A10 | 检查所有53个Agent定义文件,确认无"自动触发"残留 | §11.7.2 | 用户要求全面检查后 | 在 Trae 中用 Grep 全局搜索关键词 | 30 分钟 | ✅ 已完成 |
| A11 | 检查并修复所有49个Skills文件,清除"自动触发"表述 | §11.7.3 | 用户要求全面检查后 | 在 Trae 中编辑 | 15 分钟 | ✅ 已完成 |
已完成的操作(本轮对话中已完成)
| # | 操作 | 方式 | 完成时间 |
|---|---|---|---|
| D1 | 移除 opc-l7-l13-extension.md(1169 行讨论文档移出 rules 目录) | 本地终端 mv 命令 | 2026-06-06 |
| D2 | 精简全局防循环规则(114 行 → 5 行) | 在 Trae 中编辑 opc-global-rules.md | 2026-06-06 |
| D3 | 精简 AI 项目防循环规则(§-1 + §4 删除,替换为 4 行引用) | 在 Trae 中编辑 project-rules.md | 2026-06-06 |
| D4 | 修复 AI-Strategy-Director.md 自动触发残留 | 在 Trae 中编辑 | 2026-06-06 |
| D5 | 清理白名单(移除 kill/chmod/ssh-keygen 3 条命令) | 编辑 settings.json | 2026-06-06 |
| D6 | 限制文件路径白名单(整个用户目录 → 仅 TraeProjects) | 编辑 settings.json | 2026-06-06 |
| D7 | 删除 my_opc_cores 备份目录 | 本地终端 rm -rf | 2026-06-06 |
| D8 | 删除 Trae_Server_Scripts 目录 | 本地终端 rm -rf | 2026-06-06 |
不需要你做的操作
| 内容 | 原因 |
|---|---|
| 沙箱权限配置优化 | 沙箱由 Trae 自动生成管理,手动修改会被覆盖 |
| MCP autoRun 配置 | 当前设置已合理(alwaysRun 用于只读操作) |
| 其他 4 个项目的 project-rules.md 新增防循环规则 | 它们本来就没有,且全局规则已覆盖 |
| §9.6 Skill 迁移、§9.7 长期原则 | 属于未来规划,当前不需要执行 |
| 规则修改检查清单(§9.4.6)、cp 备份策略(§9.4.7) | 这是行为习惯,不是一次性操作——每次改规则时自觉遵循即可 |
9.1 紧急止血(本轮对话立即执行,预计 10 分钟)
操作 1/5:移除讨论文档,释放 44% 上下文窗口
| 项目 | 内容 |
|---|---|
| 文件 | /Users/yolanda/.trae/rules/opc-l7-l13-extension.md |
| 当前状态 | 1169 行,L7-L13 后链路架构讨论稿,未敲定终版 |
| 问题 | 被放在 rules 目录下,Trae 自动将其作为 always-applied 规则加载 |
| 目标 | 从 rules 目录移除,移动到讨论/存档目录 |
操作步骤:
# 1. 创建存档目录(如果不存在)
mkdir -p "/Users/yolanda/.trae-cn/memory/archived_drafts"
# 2. 移动文件(不是删除,保留讨论稿内容)
mv "/Users/yolanda/.trae/rules/opc-l7-l13-extension.md" \
"/Users/yolanda/.trae-cn/memory/archived_drafts/opc-l7-l13-extension.md"
预期效果:规则文本从 ~2660 行降至 ~1491 行,上下文窗口立即释放约 44%。
操作 2/5:精简防循环规则——从 114 行到 5 行
涉及文件:
| 文件 | 当前内容 | 行数 |
|---|---|---|
AI/.trae/rules/project-rules.md | §-1(19行)+ §4(64行) | 83行 |
~/.trae/rules/opc-global-rules.md | §7(31行) | 31行 |
步骤 A:修改全局规则 — 将 opc-global-rules.md 的 §7 全部替换为:
## §7 对话行为约束(防循环 — 一条核心原则)
**核心原则**:任何验证只做一次。成功 → 停止,用文本报告。失败 ≤2次 → 停止,用文本报告。
**硬性上限**:同一工具连续调用 ≥3 次 → 立即停止所有工具调用,直接用文本告知用户当前状态。
步骤 B:修改 AI 项目规则 — 删除 project-rules.md 的整个 §-1 和 §4 章节,替换为:
## §4 防循环规则(已合并至全局规则 §7)
> 防循环规则统一由全局规则 `opc-global-rules.md` §7 管理,本项目不再重复定义。
> 核心原则:任何验证只做一次。同一工具连续调用 ≥3 次 → 立即停止。
预期效果:防循环规则从 114 行降至 5+4 行,消除两套规则重叠冲突。
操作 3/5:修复 Agent 定义的"自动触发"残留
文件:/Users/yolanda/TraeProjects/AI/.trae/agents/AI-Strategy-Director.md
当前内容(第25-26行):2. **自动触发**:对话话题明显涉及产业分析… → 自动激活
问题:与 project-rules.md §0.5 "OPC 仅由用户显式指令触发" 冲突
操作:将第21-28行替换为:
## §3 何时调用(→ Trae 触发条件)
**仅显式触发**:用户明确说"调度OPC"、"启动OPC"、"OPC"、"调用OPC总调度"等 → 由 OPC 总调度激活。
**不自动激活**:无论话题内容是否涉及产业分析、行业研究、商业模式等,均不自动激活。
操作 4/5:清理白名单和文件路径权限
文件:/Users/yolanda/Library/Application Support/Trae CN/User/settings.json
修改内容:移除 kill、chmod、ssh-keygen;将文件路径限制为 ["/Users/yolanda/TraeProjects", "/tmp"]
(详细方案见 §8.2)
操作 5/5:重启 Trae(关键步骤,不可跳过)
操作:关闭 Trae → 等待 5 秒 → 重新打开。
为什么必须重启(三个原因):
- 刷新 Agent 缓存(最重要):Trae 在启动时读取 Agent 定义文件并生成系统提示词中的 Agent 摘要。不重启,修改后的 Agent 定义不会生效,系统提示词仍使用旧版本的描述。见第五部分 §5.1 的详细分析。
- 重新加载规则文件:全局和项目规则文件在启动时加载,修改后需要重启才能生效。
- 清零渲染进程 CPU:长期运行后渲染进程累计 CPU 负担,重启可清零。
紧急止血后状态预估
| 指标 | 止血前 | 止血后 |
|---|---|---|
| 规则文本总行数 | ~2660 行 | ~470 行 |
| 上下文窗口占用(规则) | 50-60% | ~15% |
| 防循环规则行数 | 114 行 | 5 行 |
| 白名单命令数 | 28 条 | 25 条(移除 3 条高危) |
| 文件路径范围 | 整个用户目录 | 仅项目目录 |
| Agent 定义冲突 | 1 处 | 0 处 |
9.2 白名单专项优化(彻底方案)
settings.json 中,当前有 28 条命令和整个用户目录的文件权限。白名单不是越宽越好——每条命令都是 Agent 可以自主执行的武器。
9.2.1 白名单机制说明
白名单在哪里:
文件:/Users/yolanda/Library/Application Support/Trae CN/User/settings.json
配置项:AI.toolcall.v2.command.allowList(命令白名单)
AI.toolcall.v2.fileOp.allowPaths(文件路径白名单)
AI.toolcall.v2.ide.mcp.autoRun(MCP 自动运行)
修改原则:只保留 Agent 日常开发工作真正需要的命令;移除可能造成系统级破坏的命令;文件路径限制在项目目录。
9.2.2 当前 28 条命令逐条分析
| # | 命令 | 用途 | 风险评估 | 建议 |
|---|---|---|---|---|
| 1 | mkdir | 创建目录 | 低风险 | 保留 |
| 2 | rm | 删除文件 | 中风险(有 trash_rm 拦截) | 保留 |
| 3 | echo | 输出文本 | 低风险 | 保留 |
| 4 | cd | 切换目录 | 低风险 | 保留 |
| 5 | npx | 运行 npm 包 | 低风险 | 保留 |
| 6 | ssh | 远程连接 | 高风险 | 保留但警惕 |
| 7 | expect | 自动化交互 | 中风险 | 保留 |
| 8 | source | 执行 shell 脚本 | 低风险 | 保留 |
| 9 | tail | 查看文件尾部 | 低风险,只读 | 保留 |
| 10 | cat | 查看文件内容 | 低风险,只读 | 保留 |
| 11 | python3 | 运行 Python | 中风险 | 保留(开发必需) |
| 12 | wc | 统计行数 | 低风险,只读 | 保留 |
| 13 | bash | 执行 shell | 中风险 | 保留(开发必需) |
| 14 | printf | 格式化输出 | 低风险 | 保留 |
| 15 | git | 版本控制 | 低风险 | 保留 |
| 16 | sed | 文本替换 | 中风险 | 保留(优先用 Edit 工具) |
| 17 | grep | 文本搜索 | 低风险,只读 | 保留(优先用 Grep 工具) |
| 18 | pnpm | 包管理器 | 低风险 | 保留 |
| 19 | kill | 终止进程 | 高风险 | 移除 |
| 20 | curl | HTTP 请求 | 中风险 | 保留(开发必需) |
| 21 | npm | 包管理器 | 低风险 | 保留 |
| 22 | n | Node.js 版本管理 | 低风险 | 保留 |
| 23 | export | 设置环境变量 | 低风险 | 保留 |
| 24 | head | 查看文件头部 | 低风险,只读 | 保留 |
| 25 | sleep | 延时等待 | 低风险 | 保留 |
| 26 | which | 查找命令路径 | 低风险,只读 | 保留 |
| 27 | lsof | 列出打开的文件 | 低风险,只读 | 保留 |
| 28 | xargs | 参数传递 | 中风险 | 保留 |
| 29 | cp | 复制文件 | 低风险 | 保留 |
需要移除的 3 条命令:
| 命令 | 移除原因 |
|---|---|
kill | 可终止任意进程。Agent 没有理由需要终止进程。用 StopCommand 工具代替。 |
chmod | 可修改文件权限。Agent 不需要修改文件权限。 |
ssh-keygen | 生成 SSH 密钥对。Agent 不应自主生成密钥。 |
优化后白名单(25 条):mkdir, rm, echo, cd, npx, ssh, expect, source, tail, cat, python3, wc, bash, printf, git, sed, grep, pnpm, curl, npm, n, export, head, sleep, which, lsof, xargs, cp
9.2.3 文件路径白名单优化
当前:["/Users/yolanda", "/tmp"] → Agent 可读写整个用户目录
优化后:["/Users/yolanda/TraeProjects", "/tmp"] → Agent 只能读写项目目录
为什么限制到 TraeProjects:所有 OPC 项目都在此目录下,Agent 不需要访问桌面、文档、下载等个人目录。
Trae_Server_Scripts 加入白名单(用于存放全局脚本),经讨论后决定不设立专门的脚本目录。脚本由 Agent 自然生成在工作位置即可。因此白名单无需额外路径。
9.2.4 MCP autoRun 优化
当前:"alwaysRun" → 保持(MCP 工具是只读查询类操作,风险较低)。如未来有写操作,改为 "ask"。
9.2.5 白名单修改实操清单
| 步骤 | 操作 | 文件 |
|---|---|---|
| 1 | 打开 settings.json | /Users/yolanda/Library/Application Support/Trae CN/User/settings.json |
| 2 | 修改 command.allowList | 移除 kill, chmod, ssh-keygen |
| 3 | 修改 fileOp.allowPaths | 改为 ["/Users/yolanda/TraeProjects", "/tmp"] |
| 4 | 保存文件 | |
| 5 | 重启 Trae | 使配置生效 |
9.3 沙箱机制详解与优化
9.3.1 沙箱是什么
Trae 的沙箱(sandbox)是一个命令执行安全层。当 Agent 通过 RunCommand 执行终端命令时,实际执行路径是:
Agent 调用 RunCommand("ls -la")
↓
Trae 内部拦截
↓
trae-sandbox 'ls -la' ← 沙箱 CLI 二进制
↓
1. 加载 trash_rm.zsh(拦截 rm,改为移入回收站)
2. 检查命令是否在 allowList 中(settings.json)
3. 检查文件路径是否在沙箱权限配置中(sandbox/*.json)
4. 执行命令并返回结果
沙箱 CLI 路径:/Applications/Trae CN.app/Contents/Resources/app/modules/sandbox/trae-sandbox
沙箱配置目录:/Users/yolanda/Library/Application Support/Trae CN/ModularData/ai-agent/sandbox/
9.3.2 需要区分的两个概念
概念A:settings.json 编辑历史(v1.3 报告中误判的部分)
这是 settings.json 的 7 个编辑历史版本,存储在:
/Users/yolanda/Library/Application Support/Trae CN/User/History/7268f2f3/
这些是 VS Code 的本地历史功能自动记录的文本快照,每个文件几百字节,不影响性能。这个是真正的"不需要优化"的部分。
概念B:沙箱项目配置文件(这才是真正需要关注的)
在沙箱配置目录中,实际存在 7 对 JSON 配置文件(每对包含 .json + -hooks.json):
/Users/yolanda/Library/Application Support/Trae CN/ModularData/ai-agent/sandbox/
├── 6a19430...-bc78.json ← 项目 1(my_opc_projects)
├── 6a19430...-bc78-hooks.json
├── ...(共 7 对,14 个文件)
每个 JSON 文件是一个项目的沙箱权限配置,定义该项目的沙箱可以访问哪些文件路径。每个文件约 100 行,包含 60+ 条 file_inherit_user 权限条目。
这些不是"历史版本",而是 7 个不同项目各自的活跃沙箱配置。每个 hash ID 对应一个 Trae 项目(workspace),配置文件在项目首次打开时由 Trae 自动生成。
9.3.3 7 个沙箱配置会不会有问题?
会,但和你想的不一样。
问题 1:沙箱初始化开销 — 从 Trae 内部日志可以看到,每次 Agent 执行命令时沙箱都会初始化。同一会话内沙箱初始化可执行 6 次以上。
问题 2:沙箱权限配置冗余 — 每个沙箱配置文件包含约 60 条权限条目,几乎覆盖整个用户目录。7 个项目的配置几乎完全相同,但每个都被独立加载。
问题 3:沙箱配置与白名单是两套独立机制 — 沙箱配置由 Trae 自动生成,不可手动编辑(会自动覆盖)。即使你在 settings.json 中限制了文件路径,沙箱配置仍允许访问大量目录。
问题 4:沙箱行为变化 — 你之前观察到的"指令格式内容变了"可能与沙箱 CLI 二进制的版本更新有关。
9.3.4 沙箱配置 vs 项目对照表(实测数据)
| # | 沙箱 Hash ID | 沙箱中的项目路径 | 截图中的项目 | 匹配状态 |
|---|---|---|---|---|
| 1 | 6a19672c...bd87 | /Users/yolanda | yolanda (/Users/yolanda) | ✅ 一一对应 |
| 2 | 6a19a2f7...a065 | /Users/yolanda/TraeProjects/AI | AI (~/TraeProjects/AI) | ✅ 一一对应 |
| 3 | 6a19a2fe...a067 | /Users/yolanda/TraeProjects/DOOH | DOOH (~/TraeProjects/DOOH) | ✅ 一一对应 |
| 4 | 6a199f6b...6316e2 | /Users/yolanda/TraeProjects/灵活用工 | 灵活用工 (~/TraeProjects/灵活用工) | ✅ 一一对应 |
| 5 | 6a195d4d...bd4b | /Users/yolanda/TraeProjects/my_opc_core | my_opc_core (~/TraeProjects/my_opc_core) | ✅ 一一对应 |
| 6 | 6a19430b...bc78 | /Users/yolanda/TraeProjects/my_opc_projects | ❌ 截图中没有 | ⚠️ 多余的沙箱 |
| 7 | 6a195b90...bd09 | /Users/yolanda/TraeProjects(父目录本身) | ❌ 截图中没有 | ⚠️ 多余的沙箱 |
截图中存在但沙箱中没有的项目:
| 项目 | 路径 | 说明 |
|---|---|---|
| 线上 | ~/TraeProjects/线上 | 截图第6个,无对应沙箱配置——可能最近才创建,或从未在当前 Trae 实例中执行过命令 |
| 跨境电商 | ~/TraeProjects/跨境电商 | 截图第7个,同上 |
9.3.5 沙箱优化方案
| 问题 | 是否需要优化 | 如何优化 | 可行性 |
|---|---|---|---|
| 7 个沙箱项目配置 | 是 | 删除 2 个废弃沙箱(见下方具体操作) | 高 |
| 沙箱初始化频繁 | 是 | 无法直接控制(Trae 内部机制),但减少不必要的命令执行可间接降低 | 低(不可控) |
| 沙箱权限过于宽泛 | 是 | 沙箱配置由 Trae 自动生成,手动修改会被覆盖 | 低(不可控) |
| 沙箱配置与白名单不一致 | 是 | 已通过 §8.2 优化了 settings.json 白名单,但沙箱配置仍需 Trae 自动管理 | 部分可控 |
具体操作:删除 2 个废弃沙箱
废弃沙箱 #6:my_opc_projects
这是 my_opc_core 的旧名/前身。项目重命名后旧沙箱残留。
rm "/Users/yolanda/Library/Application Support/Trae CN/ModularData/ai-agent/sandbox/6a19430b78733841c814bc78.json"
rm "/Users/yolanda/Library/Application Support/Trae CN/ModularData/ai-agent/sandbox/6a19430b78733841c814bc78-hooks.json"
废弃沙箱 #7:TraeProjects 父目录
某次在 TraeProjects 根目录打开过工作区产生的,不是独立项目的沙箱。
rm "/Users/yolanda/Library/Application Support/Trae CN/ModularData/ai-agent/sandbox/6a195b9078733841c814bd09.json"
rm "/Users/yolanda/Library/Application Support/Trae CN/ModularData/ai-agent/sandbox/6a195b9078733841c814bd09-hooks.json"
删除后预期效果:
- 7 个沙箱 → 5 个活跃沙箱(yolanda + AI + DOOH + 灵活用工 + my_opc_core)
线上和跨境电商首次执行命令时会自动生成各自的沙箱- 总计最终稳定为 7 个沙箱 = 7 个截图项目,一一对应
- 删除不会影响任何功能,Trae 在下次需要时自动重新生成
不可控部分(接受即可):
- 沙箱的初始化频率和权限配置是 Trae 内部机制,用户无法直接控制
- 重点是优化你能控制的部分——白名单、文件路径、规则文件
9.3.6 沙箱优化结论(修正版)
| 问题 | 修正后答案 |
|---|---|
| 7 个沙箱配置需要优化吗? | 是的。实测发现其中 2 个是已废弃项目的残留,可以安全删除。删除后从 7 → 5 个活跃沙箱,与实际项目一致。 |
| 沙箱和截图项目是一一对应的吗? | 不是严格的一一对应。7 个沙箱中有 2 个多余、2 个缺失。清理后可实现一一对应。 |
| 沙箱是 settings.json 历史吗? | 不是。settings.json 历史是另一回事。沙箱配置是独立的运行时权限文件。 |
| 沙箱可以手动配置吗? | 不能。沙箱配置由 Trae 自动生成和管理,手动修改会被覆盖。但可以安全删除废弃的沙箱文件。 |
| 沙箱初始化开销大吗? | 有一定开销。日志显示同一会话内沙箱初始化可执行 6+ 次。 |
| 真正需要优化的是什么? | ① 白名单内容(见 §8.2);② 删除 2 个废弃沙箱;③ 减少不必要的命令执行。 |
10.3.7 目录架构讨论与决策(2026-06-06 对话补充)
背景:在讨论白名单路径优化时,引发了关于目录架构的深入讨论。
问题1:Trae_Server_Scripts 是否需要保留?
发现:该目录存在(内含 rebuild2.py),但"脚本统一存放规则"已从全局规则中丢失。最初建此目录的动机是担心分不清 Agent 生成的脚本和用户自己的文件。
讨论结论:不需要专门为脚本建目录。Agent 在哪工作,生成的脚本就自然放在哪。真正需要解决的只有一件事——别让 Agent 删用户的原始文件——而这已经由沙箱的 trash_rm.zsh 解决了(rm 变为移入回收站)。
决策:废除 Trae_Server_Scripts 概念。不需要迁移,不需要新规则。
问题2:my_opc_cores 备份目录是否需要保留?
发现:该目录包含 6 个方向的 agents/rules/skills 备份(全部过时)、AI 方向营销报告生成工具链、HTML→PDF 转换工具、node_modules/(几百 MB 的 Playwright 依赖)。
决策:已删除整个目录。所有有价值的文件要么已在生效位置(~/.trae/),要么已被用户手动移至 /Users/yolanda/ 下。
问题3:临时/一次性任务的文件放哪里?
建议:直接在全局工作区(/Users/yolanda/)下创建文件夹即可。不需要特殊的"沙箱"或"临时"目录约定。
最终目录架构
/Users/yolanda/TraeProjects/ ← 所有项目级工作
├── AI/
├── DOOH/
├── 灵活用工/
├── 线上/
└── 跨境电商/
/Users/yolanda/ ← 全局工作区(临时任务、个人文件)
# 不再需要:
# ~/Trae_Server_Scripts/ → 已废弃概念
# ~/TraeProjects/my_opc_cores/ → 已删除
白名单最终方案不变:["/Users/yolanda/TraeProjects", "/tmp"]
补充:node_modules 是什么?
my_opc_cores/node_modules/ 是运行 npm install playwright 时自动生成的 Node.js 依赖包目录(含 Playwright 浏览器自动化工具及其数百个依赖),占用几百 MB。随 my_opc_cores 一起删除。
9.4 短期稳定方案(1-2 周内完成)
9.4.1 规则体系重构:从"分散补丁"到"单一真相源"
规则层级 内容 行数上限
─────────────────────────────────────────────────
全局规则 防循环 + 报告归档 ≤ 30 行
↓
AI 项目规则 AI 方向 Agent 注册表 ≤ 150 行
DOOH 项目规则 DOOH 方向 Agent 注册表 ≤ 150 行
灵活用工项目规则 灵活用工方向 Agent 注册表 ≤ 150 行
线上项目规则 线上方向 Agent 注册表 ≤ 150 行
跨境电商项目规则 跨境电商方向 Agent 注册表 ≤ 150 行
─────────────────────────────────────────────────
总计 ≤ 780 行
与当前对比:当前 2660 行 → 重构后 ≤ 780 行,减少 70%。
9.4.2 全局规则文件最终版
文件:/Users/yolanda/.trae/rules/opc-global-rules.md(约 20 行,已在紧急止血中完成精简)
9.4.3 AI 项目规则文件最终版
文件:/Users/yolanda/TraeProjects/AI/.trae/rules/project-rules.md
目标内容:删除 §-1 和 §4 的全部防循环规则(83 行),替换为 4 行引用。保留 §0.5(显式触发)、§0.6(同步规则)、§1(Agent 注册表)、§2(技能矩阵)、§3(调度说明)。
操作:在紧急止血中已完成 §-1 和 §4 的替换。
9.4.4 同步所有 Agent 定义文件——清除"自动触发"残留
需要检查的文件清单:
- AI 方向 Agent(6个)— 检查 §3 是否包含"自动触发"
- 所有通用 Agent(21个)— 同上
- DOOH 方向 Agent(10个)— 检查"关键词识别"
- 灵活用工方向 Agent(5个)— 同上
- 线上方向 Agent(6个)— 同上
- 跨境电商方向 Agent(7个)— 同上
检查标准:搜索每个 Agent 定义文件中的以下关键词:
自动触发→ 必须改为"仅由 OPC 总调度显式调用,不自动激活"关键词识别→ 必须改为"仅由 OPC 总调度根据用户指令决定是否调用"每次用户发送新消息时自动触发→ 必须删除
9.4.5 多项目规则统一
当前问题:AI 项目有防循环规则,其他 4 个项目完全没有。但全局规则 §7 跨越所有项目生效。
解决方案:既然防循环规则已统一到全局规则 §7(5 行),所有项目都不需要再单独定义防循环规则。各项目的 project-rules.md 只需包含:
- §0 文档声明
- §1 方向专属 Agent 注册表
- §2 技能绑定矩阵
- §3 调度说明
- §4 项目专属规则(如 DOOH 的 MVP 售前约束、灵活用工的小程序开发规则)
操作:不需要修改其他 4 个项目的 project-rules.md(它们本来就没有防循环规则),但需要确认它们的 Agent 定义中没有"自动触发"残留。
9.4.6 建立规则修改检查清单
□ 1. 全局规则(opc-global-rules.md)是否需要同步修改?
□ 2. 当前项目规则是否与其他项目规则保持一致?
□ 3. 所有受影响的 Agent 定义文件是否已同步?
□ 4. 新增的规则行数是否可以通过删除旧规则来抵消?
□ 5. 是否有任何文件被误放入 rules 目录?
□ 6. 修改后是否已重启 Trae?
9.4.7 规则文件的版本管理策略:用 cp 备份代替 git
问题回顾(§8 根因总结):git 历史显示 project-rules.md 只有 1 次 commit,所有防循环修改都在 git 之外直接编辑文件,无法追溯和回滚。那么是否应该为规则文件建立 git 机制?
结论:不需要为规则文件单独建 git 仓库。理由如下:
| 对比维度 | 代码项目 | 规则文件 |
|---|---|---|
| 修改频率 | 高(每天多次) | 低(几天~几周一次) |
| 协作需求 | 多人并行 | 基本单人 |
| 回滚需求 | 精确到某次 commit | "恢复到昨天"就够 |
| diff 可读性 | 代码 diff 有意义 | 规则文本 diff 意义不大 |
git 的优势在于频繁修改 + 多人协作 + 需要精确回滚的场景,规则文件三个都不占。建 git repo 的维护成本(commit message 写什么?branch 怎么管理?)远超收益。
推荐方案:时间戳备份
操作流程:
1. 每次大改动前:cp opc-global-rules.md opc-global-rules.YYYY-MM-DD.bak
2. 改完后观察 2 轮对话确认无副作用
3. 如果出问题:cp .bak 覆盖回去(一行命令恢复)
4. 定期清理超过 30 天的 .bak 文件
真正该投入精力的不是版本控制工具,而是"修改前检查清单"(见上文 §9.4.6)——减少错误修改比事后能回滚更重要。
9.4.8 Solo Agent 身份边界与 OPC 调用关系详解
问题背景:在之前的讨论中多次提到"Solo Agent 本身是一个智能体,它可以调用 Sub-Agent,但它不能被 OPC 总调度调用"。这个限制的含义及其与循环的关系需要详细解释。
三层架构概念
┌─────────────────────────────────────────────────┐ │ 第1层:你(用户) │ │ ↓ 直接对话 │ │ 第2层:Solo Agent(Trae 主智能体) │ │ ↓ 用 Task 工具调用 │ │ 第3层:Sub-Agent(子智能体) │ │ ├── search / general_purpose_task(内置) │ │ └── OPC-Master-Orchestrator 等(自定义) │ └─────────────────────────────────────────────────┘
Solo Agent 本身就是一个智能体——它有完整的推理能力、能读文件、能编辑、能执行命令。它不是"空壳"。
Solo Agent 可以调用 Sub-Agent——通过 Task 工具,把任务委派给另一个智能体去做,然后拿回结果。
关键限制:OPC 总调度是 Sub-Agent 层级的,不能反向调用 Solo Agent。 这意味着:
- ✅ Solo Agent → Task 工具 → OPC 总调度(可以)
- ❌ OPC 总调度 → 调用 Solo Agent(不可能)
当前架构混乱导致的 3 种循环模式
你发了消息 ↓ Solo Agent 读到系统提示词:"你是唯一的语义路由入口"(Trae 改写的!) ↓ Solo Agent 自己判断该调哪个方向智能体(跳过了 OPC 总调度) ↓ 但 Solo Agent 的上下文窗口已经被规则占了 50%,判断力下降 ↓ 判断错误 → 调错了 Agent → 结果不对 ↓ Solo Agent 觉得"再试一次" → 又调一个不同的 Agent ↓ 🔄 每次都是 "+1 -1" 的锯齿链路(现象1的截图证据)
你 → Solo Agent(已占 50% 上下文)
↓ Task 工具调用
OPC 总调度(又占一份上下文)
↓ Task 工具调用
方向战略总监(又占一份)
↓ Task 工具调用
细分分析师(又占一份)
↓
每一层都要把上下文传下去,但空间不够
↓
底层的分析师不知道顶层说了什么
↓
产出结果和你的指令不一致
↓
Solo Agent 觉得不对,重新发起一轮
↓
🔄 循环
系统提示词说:"OPC 每次消息自动触发" 项目规则说:"OPC 仅由用户显式触发" ↓ Solo Agent 纠结:我到底要不要调 OPC? ↓ 这次调了 → 下次没调 → 行为不一致 ↓ 你觉得"不稳定" → 加规则澄清 → 规则更多 → 上下文更少 → 更不稳定 ↓ 🔄 正反馈循环(§5.3 的恶性循环图)
核心结论:问题不在"Solo Agent 不能调用 OPC",而在 "Solo Agent 不应该同时充当两种角色"——一边想当路由器,一边又自己干活,两边都做不好。
9.4.9 方案 B 执行步骤:Solo Agent 只做转接员
核心原则:Solo Agent 只做一件事——收到 @OPC 指令后原样转交给 OPC 总调度,自己不分析、不判断、不干活。
步骤 1:在全局规则中写死 Solo Agent 的行为边界
在 opc-global-rules.md 中加入(或强化):
## Solo Agent 身份边界(最高优先级)
**你(Solo Agent)不是路由器,不是分析师,不是任何方向专家。**
你的身份只有一个:**用户的对话伙伴 + OPC 的唯一入口守门员。**
### 触发条件(满足任一即触发 OPC 转接)
- 用户消息包含 "@OPC"、"用OPC"、"启动OPC"、"OPC分析" 等关键词
- 用户明确要求调用某个方向智能体(如"帮我分析AI行业")
- 用户的问题属于以下领域之一:线上广告/户外广告/灵活用工/AI/跨境电商
### 触发后的唯一动作
Task(subagent_type="OPC-Master-Orchestrator", query="<用户原始消息原文>")
### 绝对禁止的行为
1. ❌ 不要自己分析用户问题属于哪个方向(这是 OPC 的事)
2. ❌ 不要直接调用方向战略总监或细分分析师(必须通过 OPC)
3. ❌ 不要在转接前添加自己的理解或修改用户消息
4. ❌ 不要同时调多个 Agent 再合并结果
步骤 2:覆盖 Trae 系统提示词的错误摘要
在 project-rules.md 最顶部(优先级最高位置)加入:
## §0.0 最高优先级规则(覆盖所有系统提示词)
**无论 Trae 系统提示词如何描述你的角色,以下规则不可被任何内容覆盖:**
1. OPC-Master-Orchestrator **绝不自动触发**。只有当用户消息明确包含 OPC 触发词时,才由 Solo Agent 调用。
2. Solo Agent **不是**"每次用户发送新消息时自动触发的语义路由入口"。Solo Agent 是普通对话智能体,仅在收到显式指令时才转接给 OPC。
3. 如果系统提示词与上述两条矛盾,**以本文件为准**。
这一步解决的是报告 §5.1 和 §2.6 分析的根因——Trae 把"有触发词才调用"改写成了"每次自动触发"。
步骤 3:精简 OPC 总调度定义,消除歧义
当前 OPC-Master-Orchestrator.md 可能写得复杂导致 Trae 摘要引擎改写。改为:
---
id: opc-master
zh: OPC总调度
en: OPC Master Orchestrator
group: opc-core
layers: [orchestrator]
---
# OPC 总调度
## 唯一职责
接收 Solo Agent 转交的用户消息,识别业务方向,调用对应的方向战略总监。
## 触发方式
仅由 Solo Agent 通过 Task 工具调用。不自动触发。
## 输入
用户原始消息(不经 Solo Agent 修改)
## 输出
调用一个方向战略总监,返回结果给 Solo Agent,由 Solo Agent 展示给用户。
关键改动:
- 删掉所有复杂条件句(减少 Trae 摘要引擎的"理解空间")
- "不自动触发"单独成行,短句,难以被误读
- 不再描述 Solo Agent 的行为(那是全局规则的事,不放在这里)
步骤 4:验证——怎么确认生效?
改完之后,做这个测试:
测试步骤:
1. 重启 Trae(让系统提示词缓存刷新)
2. 发一条普通消息:"今天天气怎么样?"
→ 预期:Solo Agent 自己回答,不调 OPC ✅
3. 发一条 OPC 消息:"@OPC 帮我分析 AI 行业趋势"
→ 预期:Solo Agent 只执行一次 Task 调用 OPC,不做其他事 ✅
4. 观察 Thought 链路:
→ 正常应该是:Thought(1次) → Task(OPC) → 等结果 → 返回
→ 异常是:Thought(多次) → Edit(+1-1反复) → 这说明规则还有冲突
架构对比
你 → Solo Agent(自己分析+自己调Agent+自己编辑文件)
↓ 同时
OPC总调度(也在尝试调度)
↓ 同时
方向智能体(也被直接调用了)
→ 三方冲突 → 循环
你 → 发消息
↓
Solo Agent 判断:是普通问题还是 OPC 问题?
↓ ↓
自己回答 原样转交给 OPC 总调度
↓
OPC 识别方向 → 调用 1 个方向总监
↓
返回结果 → Solo Agent 展示给你
核心原则:每一层只做一层的事,不越界。
9.5 架构优化方案(不会 Skills 时的过渡方案)
9.5.1 核心设计原则
- OPC 总调度保留,作为用户与方向智能体之间的唯一入口
- 去自动触发:所有 Agent 只由用户显式指令激活
- 灵活调度:OPC 总调度支持两种模式——完整链路模式(战略总监可以级联调用下级)和直接调用模式(用户可以指定任意智能体)
- 保留所有 Agent:不做 Agent 精简,保持完整的 Agent 体系
9.5.2 优化后的架构图
用户(Yolanda)
│
│ 模式1:"请OPC研究AI智能体产业"
│ 模式2:"请OPC调用前端设计师"
▼
┌──────────────────────────────┐
│ SOLO Agent(Trae 默认) │
│ 收到用户指令,判断是否需要 OPC │
└──────────┬───────────────────┘
│ 用户说"OPC"时
▼
┌──────────────────────────────┐
│ OPC 总调度(保留) │
│ - 模式1:识别方向→调用战略总监→级联 │
│ - 模式2:直接调用用户指定的智能体 │
└──────────┬───────────────────┘
│
┌──────┼──────┬──────┬──────┐
▼ ▼ ▼ ▼ ▼
AI DOOH 灵活 线上 跨境
战略 战略 用工 广告 电商
总监 总监 战略 战略 战略
总监 总监 总监 总监
│
▼
L0.5知识导师
│
▼
L3细分赛道分析师
│
▼
L4a业务规划师
│
▼
L4c产品架构师
关键变化:
- 战略总监仍然可以级联调用下级 Agent(完整链路模式)
- 用户也可以直接指定调用任意智能体(直接调用模式)
- 保持完整的 Agent 体系,不做精简
9.5.3 OPC 总调度的优化
文件:/Users/yolanda/.trae/agents/OPC-Master-Orchestrator.md
在 §2 角色描述中添加工作模式:
### 工作模式(当前)
你支持两种工作模式:
1. **完整链路模式(默认)**:当用户没有明确指定要调用哪个智能体时使用,识别业务方向 → 调用对应的方向战略总监 → 战略总监继续级联调用下级。
2. **直接调用模式**:当用户明确指定要调用某个智能体时使用,识别用户指定的智能体 → 直接调用该智能体。
用户可以通过以下方式指定:"请调用 [智能体名称]"、"请OPC调用 [智能体名称]"、"直接调用 [智能体名称]"。
**显式触发**:只有当用户消息中包含"OPC"、"调度OPC"、"启动OPC"时激活。
**不自动判断**:即使话题涉及产业分析,也不自动激活。等用户说"OPC"。
9.6 中期重构方向(Skills 就绪后)
9.6.1 迁移路径
| 阶段 | 时间 | 内容 |
|---|---|---|
| 第一阶段 | 当前(过渡期) | 保留 OPC 总调度 + 战略总监,简化链路 |
| 第二阶段 | 学会 Skill 后 | 将每个方向的研究流程封装为 Skill,OPC 总调度调用 Skill 而非 Agent |
| 第三阶段 | 成熟后 | 逐步淘汰 Agent 定义,全部用 Skill 替代 |
9.6.2 Skill 封装示例(目标形态)
用户: "请OPC研究AI智能体产业"
→ OPC 总调度识别方向:AI
→ 调用 ai-industry-research Skill
→ Skill 内部:产业全景 → 细分赛道 → 海外对标 → 输出报告
→ 一步完成,不级联,不循环
9.7 长期原则(3 个月+)
- 不依赖 Trae 系统提示词:所有智能体协同逻辑通过 Skill 和规则文件实现
- 显式触发,无自动:所有智能体调度必须由用户显式指令触发
- 规则最小化:全局规则 ≤ 30 行,项目规则 ≤ 150 行
- 版本控制:所有规则修改通过 git 提交,可追溯和回滚
- 先诊断再治疗:遇到问题先问"为什么"而不是"怎么修"
9.8 执行顺序总结
第一步(现在,10分钟):紧急止血 §8.1
├── 操作1:移动 opc-l7-l13-extension.md
├── 操作2:精简防循环规则(全局 + AI 项目)
├── 操作3:修复 AI-Strategy-Director.md 自动触发
├── 操作4:清理白名单(移除 3 条高危命令 + 限制文件路径)
└── 操作5:重启 Trae
第二步(本周内,1-2小时):短期稳定 §8.4
├── 同步所有 Agent 定义(清除自动触发残留)
├── 确认多项目规则一致
└── 建立规则修改检查清单
第三步(1-2周内,2-3小时):架构优化 §8.5
├── 精简 Agent 数量(40+ → 15)
├── 优化 OPC 总调度定义
└── 去级联,单层调度
第四步(学会 Skills 后):中期重构 §8.6
├── 将研究流程封装为 Skill
└── 逐步淘汰 Agent 定义
第十部分:经验教训 第 10 / 共 12 节
10.1 对 AI Agent 使用者的启示
- 规则是双刃剑:每一条规则都在消耗上下文窗口。规则越多,Agent 越笨。好的规则体系是"少而精",不是"多而全"。
- 防循环规则会制造循环:试图用规则阻止 AI 的某种行为模式,往往适得其反——规则本身增加了 AI 的认知负担,让该行为模式更容易发生。
- 白名单不是越宽越好:给 Agent 更多自主权看似方便,但会让 Agent 在短时间内执行大量操作,超出系统承受能力。
- 修改规则必须全面同步:改了 A 文件,就要检查 B、C、D 文件是否也需要改。不一致的规则体系比没有规则更危险。
10.2 对多智能体编排的启示
- 在 Trae 当前架构下,多智能体层级调度与系统提示词生成机制存在根本矛盾。这不是"配置不对"的问题,而是两种设计理念的冲突——Trae 设计为"一个 Agent 完成所有任务",OPC 设计为"多个 Agent 分工协作"。Trae 的 Task 工具虽然支持子智能体调用,但它的摘要生成机制不可靠,可能改写你的 Agent 定义。
- Skill 机制可能是更合适的协同方式:Skill 是 Trae 原生支持的,不会与系统提示词冲突。将复杂的多步骤工作流封装为 Skill,比用规则和 Agent 定义来"模拟"多智能体协同更可靠。
- 级联调度是危险的设计:一个 Agent 调用另一个 Agent,后者再调用第三个……这种级联在理论上是优雅的,但在实践中,每一层都会消耗上下文、增加延迟、引入不确定性。
10.3 对 Trae 产品设计的启示
- 系统提示词中的子智能体摘要应该准确反映 Agent 定义文件。当用户写的是"有触发词才调用"时,Trae 不应该生成"每次自动触发"的摘要。
- 规则加载应该有优先级和冲突检测机制。当用户规则和系统规则冲突时,应该明确告知用户,而不是让 Agent 在矛盾中自行判断。
- 上下文窗口的使用情况应该对用户可见。用户应该能看到"规则用了 X%,对话用了 Y%,剩余 Z%",从而做出是否精简规则的决策。
10.4 核心洞察
规则越多 → 上下文越少 → Agent 越容易"失忆" → 越容易重复 → 我们加更多防循环规则 → 循环更严重
这是一个正反馈恶性循环,不是单个 bug,而是体系性的问题。解决的关键不是"修补某一处",而是打破循环链上的每一个环节:精简规则、同步定义、改变触发方式、建立版本控制。
第十一部分:方案执行记录与回检报告 第 11 / 共 12 节
编写目的:作为可复用的回检模板——下次遇到类似问题时,可将本部分发给 Trae 作为执行和验证的参考标准。
执行时间:2026年6月6日晚
执行者:Trae Solo Agent(在用户指令下自动执行)
11.1 执行范围定义
根据 §9.0.5 行动清单,以下 5 项被标记为"今晚可直接处理"(不需要用户手动操作):
| # | 操作 | 对应章节 | 执行方式 |
|---|---|---|---|
| A2 | 删除废弃沙箱配置(4个JSON文件) | §9.3.5 | Agent 自动执行终端命令 |
| A3 | 全局规则注入§7.3 Solo Agent身份边界 | §9.4.2 + §9.4.9 步骤1+2 | Agent 自动编辑文件 |
| A4 | 项目规则注入§0.0最高优先级覆盖规则 | §9.4.3 + §9.4.9 步骤2 | Agent 自动编辑文件 |
| A5 | 全部Agent定义文件清除"自动触发"残留 | §9.4.4 | Agent 自动扫描+编辑 |
| A6 | OPC总调度定义精简(145行→55行) | §9.4.9 步骤3 + §9.5.4 | Agent 自动重写文件 |
以下 2 项需要用户手动操作,不在本次自动执行范围内:
- A1: 重启 Trae(必须由用户手动关闭再打开应用)
- A8: 验证方案 B 生效(需在 A1 完成后在 Trae 对话界面观察 Thought 链路)
11.2 逐项执行记录
A2:删除废弃沙箱配置
目标:删除 §9.3.5 中识别的孤立沙箱配置文件。
执行动作:
# 1. 删除 Trae_Server_Scripts 目录(含 rebuild2.py)
rm -rf /Users/yolanda/Trae_Server_Scripts/
# 2. 删除 4 个孤立沙箱 JSON 配置对
rm /Users/yolanda/ModularData/ai-agent/sandbox/6a19430b78733841c814bc78.json
rm /Users/yolanda/ModularData/ai-agent/sandbox/6a19430b78733841c814bc78-hooks.json
rm /Users/yolanda/ModularData/ai-agent/sandbox/6a195b9078733841c814bd09.json
rm /Users/yolanda/ModularData/ai-agent/sandbox/6a195b9078733841c814bd09-hooks.json
回检确认:用 ls 验证路径不存在。✅ 通过
A3:全局规则注入 §7.3 Solo Agent 身份边界
目标文件:~/.trae/rules/opc-global-rules.md
写入内容(20行):包含触发条件(2条,纯显式)、唯一动作(Task调用OPC)、绝对禁止行为(4条)。
回检确认:读取文件,确认 §7.3 存在于 L33-L52,结构完整。✅ 通过
⚠ 注意:此处在后续 X1 交叉检查中被发现存在跨文件矛盾(见 11.4.1),已修复。
A4:项目规则注入 §0.0 最高优先级 + 修复内部矛盾
目标文件:~/TraeProjects/AI/.trae/rules/project-rules.md
本次实际执行了 3 个子操作(比原计划多出 2 个,均为回检中发现的问题):
A4.1 新增 §0.0(按原计划):在文件最顶部插入"最高优先级规则",声明 OPC 绝不自动触发、Solo Agent 不是路由入口。
A4.2 修复 §3 触发机制(回检中发现的问题):
修复后:改为"仅一级:显式触发",明确写明"不存在第二级自动触发"。
A4.3 修复 §0.5 标题冲突(回检中发现的问题):
修复:将 §0.5 改名为"OPC 内部调度规则(受 §0.0 约束)"。
回检确认:三处修改均生效且互不矛盾。✅ 通过
A5:全部 Agent 定义文件清除"自动触发"残留
扫描范围(6个目录,~54 个文件):
| 目录 | 文件数 | "自动触发"残留 |
|---|---|---|
~/.trae/agents/(通用Agent) | ~21 | 0 |
AI/.trae/agents/ | 6 | 1 (AI-Strategy-Director.md) |
DOOH/.trae/agents/ | 10 | 0 |
灵活用工/.trae/agents/ | 5 | 1 (Skilled-Trade-Segment-Analyst.md) |
线上/.trae/agents/ | 6 | 0 |
跨境电商/.trae/agents/ | 7 | 0 |
两个残留文件均已修复为"仅当 OPC 总调度显式调用时激活,不自动触发"。Grep 全量复核返回空。✅ 通过
A6:OPC 总调度定义精简
| 维度 | 精简前 | 精简后 |
|---|---|---|
| 总行数 | 145 行 | 55 行 |
| 缩减比例 | — | 62% |
| 核心变化 | 含大量条件句、嵌套列表 | 短句、扁平结构、单一职责 |
保留:方向映射表(5方向) + 输出格式模板 + Fallback 处理 + "绝不自动触发"声明。✅ 功能完整
11.3 第一轮回检:逐项执行确认
| # | 检查项 | 方法 | 结果 |
|---|---|---|---|
| 回检-A2 | 4个废弃沙箱 JSON 是否已删除 | ls 验证 | ✅ 已删除 |
| 回检-A3 | §7.3 是否完整写入全局规则 | Read 文件 | ✅ 20行完整 |
| 回检-A4 | §0.0 是否写入项目规则 | Read 文件 | ✅ 写入成功 |
| 回检-A5 | 全部 Agent 文件是否无残留 | Grep 全目录 | ✅ 返回空 |
| 回检-A6 | OPC 定义是否精简到 55 行 | Read 文件 | ✅ 55 行 |
第一轮结论:5/5 项全部通过。
11.4 第二轮回检:交叉检查(发现问题并修复)
第一轮通过后,进一步做了三个维度的交叉检查。本轮发现了之前未暴露的问题。
X1:三文件跨文件矛盾检查 ⚠️ 发现关键矛盾
检查方法:将三个核心规则文件的"OPC 触发条件"断言提取出来,逐一比对。
| 断言 | §7.3(全局) | §0.0(项目) | §3(项目) | 一致? |
|---|---|---|---|---|
| OPC 是否自动触发 | 见下方⚠️ | 绝不自动触发 | 不存在第二级 | ❌ 矛盾 |
| 触发方式 | 见下方 | 必须有 OPC 触发词 | 用户显式指令 | ❌ 矛盾 |
具体矛盾点 —— §7.3 触发条件第 3 条(原始版):
### 触发条件(满足任一即触发 OPC 转接)
- 条件1: 用户消息包含 "@OPC"... ← 显式 ✅
- 条件2: 用户明确要求调用方向智能体 ← 显式 ✅
- 条件3: 用户问题属于以下领域之一: ← ⚠️ 隐式自动判断!
AI / 户外广告 / 灵活用工 / 跨境电商 / 线上广告
按 §7.3 条件3 → 属于 AI → 应自动转接 OPC
按 §0.0 + §3 → 简单问答 → 不应触发 OPC
三条规则给出不同答案。这就是典型的"打补丁后遗症"。
根因分析:§7.3 在步骤1中新增时设计意图是让 Solo Agent 能识别领域关键词以便路由。但随后步骤2写入 §0.0 时决策变成了"Solo Agent 不做领域判断"。两步之间没有回头看 §7.3。
修复动作:将 §7.3 的触发条件从 3 条改为 2 条,删除领域关键词自动匹配,新增排除说明:
注意:Solo Agent 不根据对话内容所属领域自动判断是否转接 OPC。即使话题涉及 AI/广告/灵活用工/跨境电商等领域,只要用户未使用上述触发词,Solo Agent 直接以自身能力回答。领域识别完全由 OPC-Master-Orchestrator 在收到转交消息后完成。
修复后三文件完全一致:全部为纯显式触发。✅
X2:报告文档与实际执行一致性检查
| # | 报告描述 | 实际状态 | 偏差类型 | 严重性 |
|---|---|---|---|---|
| 1 | §9.4.2 目标代码块不含 §7.3 | 实际含 §7.3 | 文档过时 | 低 |
| 2 | §9.4.3 §4 替换为 4 行引用 | 实际保留简化版 14 行 | 合理增补 | 无 |
| 3 | §9.4.9 步骤3 模板 ~20 行 | 实际 55 行 | 功能需要 | 无 |
| 4 | A2-A6 状态列显示待做 | 实际已全部完成 | 状态未更新 | 低 |
| 5 | §0.5 标题冲突未记录 | 回检中发现并修复 | 遗漏记录 | 低 |
| 6 | §7.3 跨文件矛盾未预见 | 交叉检查发现并修复 | 遗漏(新发现) | 中 |
X2 结论:6 处偏差均为文档滞后或合理增补,无执行错误。
风险排查:改动是否引入新漏洞
| # | 改动点 | 潜在风险 | 结论 |
|---|---|---|---|
| 1 | §7.3 删除条件3 | AI 问题不再自动走 OPC? | 无风险 — 方案B设计意图如此 |
| 2 | §0.0 与 §7.3 互相引用 | 循环引用? | 无风险 — 内容一致 |
| 3 | §3 改为纯显式 | 与白名单边界模糊? | 已消除 — Solo Agent不做领域判断 |
| 4 | OPC 定义精简到55行 | 映射表完整? | 无风险 — 5方向全覆盖+fallback |
| 5 | 三文件同时修改 | 加载顺序覆盖? | 无风险 — 内容一致 |
| 6 | §0.5 标题降级 | 削弱权威性? | 无风险 — 内容未改 |
结论:未引入新的逻辑漏洞。 ✅
11.5 最终结论汇总
11.5.1 执行完成度
| 维度 | 结果 |
|---|---|
| A2-A6 计划执行 | 5/5 全部完成,无遗漏 |
| 第一轮回检 | 5/5 通过 |
| 第二轮交叉检查 | 发现 1 个跨文件矛盾并已修复 |
| 用户要求全面检查 | 发现 3 个额外问题(4个项目规则+2个Skill文件)并已全部修复 |
| 新漏洞引入 | 0 个 |
11.5.2 本次回检发现的所有问题及处理
| # | 问题 | 类型 | 发现阶段 | 处理方式 | 状态 |
|---|---|---|---|---|---|
| 1 | project-rules.md §3 含"第二级自动触发" | 内部自相矛盾 | 第一轮 | 改写为纯显式 | ✅ 已修复 |
| 2 | §0.0 与 §0.5 同声称"最高优先级" | 标题冲突 | 第一轮 | 重命名 §0.5 | ✅ 已修复 |
| 3 | §7.3 条件3 vs §0.0 纯显式触发 | 跨文件矛盾 | 第二轮 | 删除条件3 | ✅ 已修复 |
| 4 | 其他4个方向(DOOH/灵活用工/线上/跨境电商)无 §0.0最高优先级规则 | 多项目不一致 | 用户要求全面检查阶段 | 均添加 §0.0,与AI项目一致 | ✅ 已修复 |
| 5 | opc-orchestration Skill 含"自动触发"表述 | Skill定义不一致 | 用户要求全面检查阶段 | 改为"仅当 Solo Agent 通过显式指令调用你时激活" | ✅ 已修复 |
| 6 | skilled-trade-workforce-analysis Skill 含"自动触发"表述 | Skill定义不一致 | 用户要求全面检查后 | 改为"仅当 OPC 总调度在灵活用工方向L3细分赛道研究阶段显式调用时激活" | ✅ 已修复 |
| 7 | OPC总调度只能调用方向战略总监,灵活性不足 | 调度机制限制 | 用户要求灵活调度后 | 优化为支持两种模式:完整链路模式(调用战略总监)+ 直接调用模式(用户可指定任意智能体) | ✅ 已修复 |
11.5.3 关键经验沉淀
- 改完一个文件不是终点,必须检查关联文件。 本次最大的问题(§7.3 vs §0.0 矛盾)就是因为分别修改但没有交叉比对才遗漏的。
- "纯显式触发"必须在所有出现"触发"二字的规则中同时体现。 只要有一处写了"自动触发"或"领域识别",就会与其他地方的"显式触发"产生矛盾。
- 回检不能只看"有没有做",还要看"做了之后有没有跟别的地方打架"。 第一轮 5/5 通过,但第二轮交叉检查才发现真正的矛盾。
- 报告本身也需要更新。 执行过程中发现的额外问题和修复动作应该反向写回报告,否则下次读报告的人会以为一切都在计划之中。
11.5.4 所有待办完成情况
| # | 操作 | 状态 |
|---|---|---|
| A1 | 重启 Trae | ✅ 已完成(2026-06-06 晚) |
| A2 | 删除废弃沙箱配置(4个JSON) | ✅ 已完成 |
| A3 | 全局规则注入 §7.3 | ✅ 已完成 |
| A4 | 项目规则注入 §0.0 + 修复 §3/§0.5 | ✅ 已完成 |
| A5 | 清除 Agent 文件"自动触发"残留 | ✅ 已完成 |
| A6 | OPC 总调度精简(145行→55行) | ✅ 已完成 |
| A7 | L3-L4c Agent 归档 | ❌ 取消(不适用) |
| A8 | 验证方案 B 生效 | ✅ 已完成(见 11.6) |
| A9 | 更新其他4个方向(DOOH/灵活用工/线上/跨境电商)project rules,添加§0.0 | ✅ 已完成 |
| A10 | 检查所有53个Agent定义文件,确认无"自动触发"残留 | ✅ 已完成 |
| A11 | 检查并修复所有49个Skills文件,清除"自动触发"表述 | ✅ 已完成 |
| A12 | 优化OPC总调度,支持两种模式:完整链路模式 + 直接调用模式 | ✅ 已完成 |
11.6 重启后验证测试(A8 执行记录)
测试时间:2026年6月6日晚(A1 重启 Trae 后立即执行)
测试目的:验证方案 B 的三文件修改(全局规则 §7.3 + 项目规则 §0.0/§3 + OPC 定义精简)是否在重启后生效。
测试 1:普通消息(不应触发 OPC)
输入:今天天气怎么样?
预期行为:
- Solo Agent 直接回答,不调用任何 Task 子智能体
- 不触发 OPC 总调度
- Thought 链路简洁(1-2 轮)
- Solo Agent 直接回复"我无法获取实时天气数据,但这不是重点。"
- 未调用任何 Task 工具
- 未触发 OPC 转接
- Thought 链路干净,无 +1/-1 锯齿
验证结论:§7.3 的纯显式触发规则生效——Solo Agent 没有因为"天气"不属于任何业务方向而试图路由,也没有因为"不知道该不该调 OPC"而反复 Thought。
测试 2:OPC 消息(应触发 OPC,但不应该有多余操作)
输入:请OPC总调度帮我AI 行业趋势,很简要的总结一段
预期行为:
- Solo Agent 识别到 OPC 触发词("OPC总调度")
- 仅执行一次 Task 调用
- 不自行分析方向、不修改消息、不调用方向智能体
- Thought 链路:Single Thought → Single Task → 返回结果
| 检查项 | 预期 | 实际 |
|---|---|---|
| 是否识别触发词 | 是 | ✅ 识别到"OPC总调度" |
| Task 调用次数 | 1 次 | ✅ 1 次 |
| 是否自行分析方向 | 否 | ✅ 未分析,直接转发 |
| 是否修改消息 | 否 | ✅ 原文转发 |
| 返回结果展示 | 直接展示 | ✅ OPC 返回后直接展示 |
| Thought 链路 | 干净 | ✅ 单次干净调用,无 +1/-1 锯齿 |
OPC 返回内容(作为功能验证证据):
AI行业正从"模型军备竞赛"转向"应用落地深水区"。基础模型能力趋于收敛,OpenAI、Anthropic、Google、DeepSeek等头部玩家的差距在缩小,竞争焦点从参数规模转向推理成本、多模态融合和Agent能力。企业级AI adoption进入实质性阶段,AI Coding、AI客服、AI营销成为最先跑通的三大场景。具身智能和人形机器人融资火热但商业化仍在早期。算力方面,英伟达Blackwell量产爬坡,推理需求增速已超过训练需求。监管层面,欧盟AI Act全面执行,美国联邦AI立法仍在博弈,中国加速行业大模型备案和标准制定。
验证结论:方案 B 的"单线架构"生效——Solo Agent 作为守门员,识别触发词 → 转发给 OPC → 展示结果,没有越界行为。
用户确认
验证总结
| 测试 | 预期 | 结果 |
|---|---|---|
| 测试 1:普通消息不触发 OPC | Solo Agent 直接回答 | ✅ |
| 测试 2:OPC 消息单次干净调用 | Single Thought → Single Task → 返回 | ✅ |
| Thought 链路 | 无 +1/-1 锯齿 | ✅(用户确认) |
| 方案 B 整体生效 | 三文件修改在重启后生效 | ✅ |
11.7 用户要求全面检查执行记录
检查时间:2026年6月6日晚(A8 完成后,用户要求继续深入检查)
检查背景:用户对已完成的修复不满意,要求:
- 确认改动后没有引入新矛盾或漏洞
- 将新改动更新到报告待办和第11章
- 检查所有 53 个 Agent 定义是否还有需要修改的
- 确认 Skills 文件是否需要修改(特别是 Agent-Skill 绑定关系)
11.7.1 全面检查 1:多项目规则一致性
检查范围:所有 5 个方向项目的 project-rules.md
检查方法:逐一读取每个项目的规则文件,对比 §0.0 是否存在
| 项目 | 是否有 §0.0 | 状态 |
|---|---|---|
| AI | ✅ 有 | 已完成 |
| DOOH | ❌ 无 | 需添加 |
| 灵活用工 | ❌ 无 | 需添加 |
| 线上 | ❌ 无 | 需添加 |
| 跨境电商 | ❌ 无 | 需添加 |
修复动作:在 DOOH、灵活用工、线上、跨境电商四个项目的 project-rules.md 最顶部均添加 §0.0,内容与 AI 项目一致:
### §0.0 最高优先级规则(无条件覆盖其他规则)
- **OPC 绝不自动触发**:只有当用户消息显式包含 "@OPC"、"用OPC"、"启动OPC"、"OPC分析"等触发词时,才激活 OPC 总调度。
- **Solo Agent 不是路由入口**:Solo Agent 仅作为用户的对话伙伴和 OPC 的守门人,不自动判断对话所属领域,不自动调用方向智能体。
- **本规则优先于任何其他规则**:无论其他规则写了什么,本规则都必须首先遵守。
11.7.2 全面检查 2:所有 53 个 Agent 定义文件
检查范围:
- 通用 Agent:~21 个(
~/.trae/agents/) - AI 方向:6 个
- DOOH 方向:10 个
- 灵活用工方向:5 个
- 线上广告方向:6 个
- 跨境电商方向:7 个
检查方法:对所有 Agent 定义文件执行 Grep 搜索"自动触发",并逐一读取方向战略总监文件检查触发描述
- 所有 Agent 定义文件无"自动触发"正向表述残留 ✅
- 方向战略总监均明确"仅当 OPC 总调度识别到...关键词时激活" ✅
- 其他 Agent 均明确"仅由 OPC 总调度...显式调用时激活" ✅
11.7.3 全面检查 3:Skills 文件检查
检查范围:所有 49 个 Skills 文件
检查方法:对所有 Skills 文件执行 Grep 搜索"自动触发"和"触发"关键词
~/.trae/skills/opc-orchestration.md:含"每次用户发送新消息时自动触发"表述灵活用工/.trae/skills/skilled-trade-workforce-analysis.md:含"当用户提及关键词时激活"表述
修复动作:
- opc-orchestration.md:改为"仅当 Solo Agent 通过显式指令调用你时激活"
- skilled-trade-workforce-analysis.md:改为"仅当 OPC 总调度在灵活用工方向L3细分赛道研究阶段显式调用时激活"
11.7.4 全面检查 4:是否引入新漏洞
| # | 检查项 | 结果 |
|---|---|---|
| 1 | 新增 §0.0 是否与其他规则矛盾 | ✅ 无矛盾 |
| 2 | Skills 修改是否影响 Skill 绑定矩阵 | ✅ 不影响 |
| 3 | Agent 定义是否与规则一致 | ✅ 一致 |
| 4 | 是否有循环引用或逻辑死锁 | ✅ 无 |
11.7.5 OPC总调度优化
优化背景:用户希望OPC总调度更灵活,既能支持完整链路研究,也能支持直接调用特定智能体。
优化内容:
- 模式1:完整链路模式(默认):当用户没有明确指定要调用哪个智能体时使用,识别业务方向 → 调用对应的方向战略总监 → 战略总监继续级联调用下级
- 模式2:直接调用模式:当用户明确指定要调用某个智能体时使用,识别用户指定的智能体 → 直接调用该智能体
- 用户可以通过以下方式指定:"请调用 [智能体名称]"、"请OPC调用 [智能体名称]"、"直接调用 [智能体名称]"
修改文件:~/.trae/agents/OPC-Master-Orchestrator.md
附录:关键数据汇总 第 12 / 共 12 节
| 数据项 | 数值 |
|---|---|
| 规则文本总行数 | ~2660 行 |
| 防循环规则行数 | 114 行(§-1: 19行 + §4: 64行 + opc-global §7: 31行) |
| 防循环规则占规则文本比例 | 4.3% |
| opc-l7-l13-extension.md 行数 | 1169 行(占规则文本的 44%) |
| 主渲染进程累计 CPU | 99 分 48 秒 |
| 主渲染进程瞬时 CPU 峰值 | 91.8% |
| Trae 进程总数 | 26 个 |
| Trae 总内存占用 | 4.5 GB |
| 系统总内存 | 24 GB |
| 白名单命令数 | 28 个(优化后 25 个) |
| 沙箱配置历史版本 | 7 个 |
| 项目 rules 修改次数(git 追踪) | 1 次(所有防循环修改在 git 外) |
| Agent 定义中残留"自动触发" | 1 处(AI-Strategy-Director.md 第26行) |
| 方向项目规则不一致 | 4/5 个项目无防循环规则 |
| 防循环规则跨项目碎片化 | 全局 31行 + AI 项目 83行 = 114行,内容重叠且部分冲突 |
| 讨论文档误放 rules 目录 | opc-l7-l13-extension.md,1169行,本为讨论稿,误作 always-applied 规则 |
| Trae 系统提示词改写 Agent 定义 | 1 处(OPC-Master-Orchestrator 被改写为"自动触发") |
| OpenClaw | 已排除(无残留) |
报告完成于 2026年6月6日 · Yolanda × Trae AI · v1.9
这是一次失败经验的记录,也是一次系统性学习的起点。