多智能体协同系统的崩溃
一次失败经验的完整复盘

从 Trae 内部机制到 OPC 架构冲突的全链路分析
2026年6月6日 v1.8 Yolanda × Trae AI

第一部分:报告背景——我到底遇到了什么问题 第 1 / 共 11 节

这不是一份"为了写报告而写报告"的文档。
它诞生于一系列真实发生的问题,是我在 Trae 中构建多智能体协同系统(OPC)时,亲眼看到、反复经历的现象。在开始深度分析之前,先把这些现象讲清楚。

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 变"笨"了,或者说被什么东西"拖住"了。

📸 实物证据(2026-06-06 截图)

以下截图记录了 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 确认是否合规。

Agent thought chain evidence - showing +1 -1 edits interleaved with Thought blocks
图:Agent 在修改报告时的真实链路 —— 每次 Edit 仅改 1 行(+1 -1),中间穿插 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 "不听话":

  1. 沙箱拦截/改写(如 rm → trash)——Trae 安全机制在起作用
  2. 白名单限制导致降级——命令被白名单规则改写
  3. 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 中的含义是:导航请求在完成前被主动取消。最可能的原因:

  1. Agent 刚写完 HTML 文件(Write/Edit),紧接着调用 OpenPreview
  2. 但 Trae 的文件系统 watcher 还在处理变更事件,或 HTTP 服务器尚未完全就绪
  3. 浏览器收到不完整的响应或被取消的请求 → ERR_ABORTED
  4. Trae 的内置浏览器在频繁切换预览 URL 时也会取消前一个未完成的导航请求

为什么这会导致循环:

Agent 完成页面生成
    ↓
调用 OpenPreview(url)          ← 第1次
    ↓
浏览器返回:net::ERR_ABORTED
    ↓
Agent 的 thought:"浏览器出问题了,再试一次"
    ↓
调用 OpenPreview(url)          ← 第2次 → ERR_ABORTED
    ↓
Agent:"换个方式?换个端口?"
    ↓
启动新服务器 → 调用 OpenPreview ← 第3次、第4次...
    ↓
系统警告:"工具被重复调用超过3次"
    ↓
Agent 更加困惑 → 尝试更多变体...
    ↓
🔄 循环形成
关键发现
这个循环的特殊之处在于——Agent 不是在做错事,而是在尝试正确的事但遇到了无法通过重试解决的错误。这让防循环规则更难设计:不能简单禁止 OpenPreview 重试,因为有时候确实需要重试一次。
建议的折中方案

OpenPreview 对同一 URL 最多允许 2 次尝试;若两次均返回 ERR_ABORTED,则停止重试并告知用户"预览服务暂不可用,请手动在浏览器中打开文件"。此规则应写入全局规则 §7 或项目规则中,而非依赖通用的"禁止重复调用"规则。

1.8 从现象到复盘:我的决策过程

面对这些现象,我做过多次尝试:

  1. 修规则:每次看到新循环就加一条禁止规则 → 循环换形式继续
  2. 修 Agent:修改 Agent 定义想让它更"听话" → 效果不稳定
  3. 修白名单:扩充命令白名单想让它"能干更多事" → 白名单从 10 条膨胀到 28 条
  4. 怀疑电脑:看屏幕闪烁,以为硬件有问题 → 找朋友确认电脑正常

每次尝试都是"头痛医头",没有一次触及根本原因。直到我意识到:这不是一个 bug,而是一个系统性崩溃。 需要从最底层——Trae 的进程架构、系统提示词生成机制、Agent 定义文件、规则加载逻辑、沙箱权限配置——全链路排查。

这就是这份报告的来由。

第二部分:Trae 内部运作机制深度解析 第 2 / 共 11 节

2.1 进程架构

Trae CN 是基于 Electron 的 AI 编程 IDE,运行时总共启动 26 个进程,合计占用约 4.5 GB 内存。其进程架构如下:

Electron 主进程 (PID 45546) ├── GPU 进程 (PID 45549, CPU ~4.0%) — 图形渲染加速 ├── AI 推理进程 (PID 45554, CPU ~11.2%) — basil.mojom.NativeExtensionService │ └── 处理所有 AI 模型的推理请求 ├── AI 服务进程 (PID 45556) — ai-server,模型通信 ├── CKg 进程 (PID 45555) — 知识图谱服务 ├── 渲染进程 × 6 │ ├── 主渲染进程 (PID 45560, 累计 CPU 99分48秒) — 聊天界面渲染 │ └── 其他渲染进程 — WebView、预览等 ├── 扩展宿主进程 (PID 45561, 内存 3.9%) — VS Code 扩展运行环境 │ ├── TypeScript 语言服务 (PID 78456/78457) │ ├── HTML/CSS/JSON/Markdown 语言服务 │ └── BasedPyright 语言服务 (PID 91790) ├── 终端宿主进程 (PID 45608) — PTY 终端管理 ├── 网络服务进程 (PID 45550) — 网络请求处理 ├── 文件监视进程 (PID 45563) — 文件系统变更监听 └── 崩溃报告进程 (PID 45548) — Crashpad

关键发现:主渲染进程(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 行。

┌────────────────────────────────────────────┐ │ 上下文窗口(固定大小) │ │ ┌──────────────────┐ │ │ │ 系统提示词 (~3000行) │ ← Trae 内置,不可削减 │ │ ├──────────────────┤ │ │ │ 规则文本 (~2660行) │ ← 用户定义,理论上可削减 │ │ ├──────────────────┤ │ │ │ 对话历史 │ ← 用户和 Agent 的实际对话 │ │ └──────────────────┘ │ └────────────────────────────────────────────┘

2.4 沙箱与命令执行机制

Trae 的所有终端命令都通过沙箱(sandbox)执行:

实际执行: trae-sandbox '用户命令' ↓ 1. 加载 trash_rm.zsh(拦截 rm 命令,改为移入回收站) 2. 检查命令是否在 allowList 中 3. 检查文件路径是否在 allowPaths 中 4. 执行命令并返回结果

沙箱配置有多个历史版本(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 拥有极大的自主执行权限,可以在短时间内密集执行大量工具调用,加剧渲染进程的 CPU 压力。
纠正原则

白名单审批应遵循"最小必要"原则——只有当 Agent 明确需要且该命令无法被 Trae 内置工具替代时,才加入白名单。默认态度应为"不加入"而非"加入"。详细逐条审计及具体优化清单见第九部分 §9.2。

2.6 Task 子智能体机制

Trae 的 Task 工具允许 Agent 调用子智能体。Trae 自动扫描 ~/.trae/agents/<project>/.trae/agents/ 目录下的所有 Agent 定义文件,为每个 Agent 生成摘要描述,注入到系统提示词的 Task 工具参数中。这意味着你的 40+ 个 OPC 智能体定义全部被注入到了系统提示词中

关键机制:

  1. Trae 读取每个 Agent 文件的 frontmatter(id/zh/en/group/layers)和正文
  2. 自动生成一个 2-3 行的摘要描述
  3. 将这些摘要注入到 Task 工具的 subagent_type 参数枚举中
  4. 但 Trae 的摘要来自启动时的缓存,不是实时读取文件——文件修改后不重启就不会生效
关键发现
你的 OPC-Master-Orchestrator.md 当前文件写的是:"当创始人说'用OPC'/'@OPC'/'启动OPC'等触发词时,由 SOLO Agent 调用你。"但 Trae 在系统提示词中缓存的摘要仍是:"每次用户发送新消息时自动触发。你是唯一的语义路由入口。"——这不是 Trae 在杜撰,而是缓存了历史版本中的旧定义。你在修改 Agent 文件后未重启 Trae,导致缓存未同步刷新。详见第五部分 §5.1。
降低风险的可行措施
  1. 简化定义措辞:在 Agent 定义中使用短句、避免复杂条件语句,减少 Trae 摘要引擎的"理解空间"
  2. 用强约束覆盖:在 project-rules.md 中用明确的否定约束(如"OPC 绝不自动触发,仅响应显式指令")覆盖可能的摘要偏差
  3. 定期验证:通过让 Agent 输出其理解的自身触发条件来检查系统提示词中的实际摘要是否与原文一致

关于 Agent 数量是否需要缩减(当前 40+ 个全部注入系统提示词),这是一个独立的架构决策话题,需要单独展开讨论(见第十部分经验教训)。

第三部分:Trae 系统提示词详解 第 3 / 共 11 节

3.1 什么是系统提示词

系统提示词(System Prompt)是 Trae 在每轮对话开始前,发送给 AI 模型的一组指令文本。它定义了 AI 的"角色设定"、"可用工具"、"行为规范"和"特殊约束"。用户看不到完整的系统提示词,但它的内容直接影响 AI 的每一个决策。

3.2 系统提示词的结构

┌─────────────────────────────────────────────────────────┐ │ Trae 系统提示词(完整结构) │ │ │ │ A. 核心角色定义(~5%) │ │ "你是 Trae IDE 中的交互式智能体,帮助用户完成软件工程任务" │ │ │ │ B. 工具定义(~50%) │ │ ├── Read / Write / Edit / DeleteFile │ │ ├── Glob / Grep / SearchCodebase │ │ ├── RunCommand / CheckCommandStatus / StopCommand │ │ ├── Task(子智能体调用) │ │ ├── Skill(技能调用) │ │ ├── TodoWrite / AskUserQuestion / NotifyUser │ │ ├── WebSearch / WebFetch / OpenPreview │ │ └── GetDiagnostics / LS │ │ │ │ C. 子智能体注册表(~25%) ← 你的 OPC 智能体被注入到这里 │ │ 每个 Agent 定义文件 → 2-3行摘要 → Task 工具参数 │ │ 共 40+ 个智能体描述 │ │ │ │ D. 行为约束(~10%) │ │ ├── 防循环建议("避免重复验证") │ │ ├── 工具调用上限建议 │ │ ├── 代码引用格式规范 │ │ ├── 响应语言设置 │ │ └── 输出效率要求 │ │ │ │ E. 用户规则注入(~10%) │ │ ├── always_applied_workspace_rules 标签 │ │ │ └── project-rules.md(210行) │ │ └── rules 标签 │ │ ├── opc-global-rules.md(31行) │ │ └── opc-l7-l13-extension.md(1169行) │ └─────────────────────────────────────────────────────────┘

3.3 子智能体注册表的生成机制

这是理解整个冲突的关键。Trae 读取你的 Agent 定义文件后,为每个 Agent 生成一个摘要描述,注入到 Task 工具的参数中。但生成过程存在以下问题:

Agent 定义文件当前文件内容Trae 系统提示词中的摘要是否一致?
OPC-Master-Orchestrator.md "当创始人说'用OPC'/'@OPC'/'启动OPC'等触发词时,由 SOLO Agent 调用你。" "每次用户发送新消息时自动触发。你是唯一的语义路由入口。" 不一致(缓存未更新)
AI-Strategy-Director.md "自动触发:对话话题明显涉及产业分析… → 自动激活"(第26行) 可能包含"自动触发"语义 部分一致(原文有残留)
其他方向战略总监 "当OPC总调度识别到…关键词时激活" 基本一致 一致
核心发现
系统提示词中的 Agent 描述来自 Trae 的缓存,而非实时读取文件。OPC-Master-Orchestrator.md 的当前文件(2026-06-06)中已无"自动触发"语言,但系统提示词仍显示旧版本的描述。这说明 Trae 在 IDE 启动时生成 Agent 摘要并缓存,之后的文件修改不会自动刷新缓存。这不是 Trae 在"杜撰"或"篡改"——历史版本中确实存在过"自动触发"的定义,只是缓存没有随文件更新而失效。

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 层级架构

┌─────────────────────────────────────────────────┐ │ L0: OPC-Master-Orchestrator(总调度) │ │ ↓ 路由到方向战略总监 │ ├─────────────────────────────────────────────────┤ │ L0: AI-Strategy-Director(AI方向战略总监) │ │ ↓ 判断话题范畴,决定调度策略 │ ├─────────────────────────────────────────────────┤ │ L0.5: AI-Industry-Mentor(知识导师) │ │ + Industry-Panorama-Researcher(全景研究员) │ │ ↓ 可并行 │ ├─────────────────────────────────────────────────┤ │ L3: AI-Industry-Segment-Analyst(细分赛道) │ │ ∥ AI-Overseas-Benchmark-Analyst(海外对标) │ │ ↓ 可并行 │ ├─────────────────────────────────────────────────┤ │ L4a: AI-Business-Model-Planner(业务模式规划) │ │ ↓ │ ├─────────────────────────────────────────────────┤ │ L4c: AI-Agent-Product-Architect(产品架构) │ │ ↓ 输出 MVP 定义 │ ├─────────────────────────────────────────────────┤ │ L5-L13: 通用层(产品实现 → 开发 → 测试 → 上线 → 盈利)│ └─────────────────────────────────────────────────┘

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 仅由用户显式指令触发,无自动触发。这是唯一规则,无例外。" 规则文件也是每次重启才重新加载

缓存失效的三个可能原因

  1. 启动时加载,不是实时读取:Trae 在 IDE 启动时一次性生成所有 Agent 的摘要描述,整个会话期间使用缓存,不监听文件变更。
  2. 跨目录修改历史:你曾在项目级 rules 和全局 agents 之间反复修改 OPC 的定义,不同时期不同位置的文件内容不一致,缓存可能来自某个中间状态。
  3. 多来源拼合:系统提示词中 Agent 的描述可能不只来自 agents/*.md,还融合了 rules 文件中的 Agent 注册表描述,多个来源不一致时缓存结果不可预测。

Agent 同时收到互相矛盾的指令——系统提示词说"自动触发",项目规则说"禁止自动触发"。在 AI 推理层面,这意味着:

  • 每次决策时,Agent 需要在"自动触发"和"禁止自动触发"之间做出判断
  • 这个判断本身消耗 token 和推理时间
  • 当上下文窗口不足时,Agent 可能做出不一致的决策
  • 不一致的决策导致意外行为 → 用户觉得"不稳定" → 添加更多规则 → 更不稳定
不可控环境下的生存策略

虽然 Trae 的摘要生成机制本身不可控,但可以采取以下措施减轻其影响:

  1. 用项目规则强覆盖:在 project-rules.md 中用最高优先级的否定规则(如"无论系统提示词如何描述,OPC 仅由用户显式指令触发")强制覆盖可能的摘要偏差
  2. 减少 Agent 定义文件数量:每个 agents 目录下的文件都可能被 Trae 改写摘要——只保留核心必需的 Agent 定义
  3. 向 Trae 官方反馈:将此问题作为产品改进建议提交,推动提高摘要生成准确性
关键启示
重启 Trae 不只是清理渲染进程 CPU——它是唯一能强制刷新 Agent 缓存的操作。修改任何 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(结构层面):规则量的正反馈恶性循环

这是整个问题的核心动力学——防循环规则越多,循环越严重:

循环发生 → 加防循环规则 → 规则更多 → 上下文更少 ↑ ↓ └── Agent 更不稳定 ← Agent "失忆" ← 更易重复操作

每次循环发生后,我们(用户 + 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)。没有意识到同一个问题被拆成了两份规则,且在两个位置同时生效。

对比其他项目
DOOH、灵活用工、线上、跨境电商 4 个项目的 project-rules.md 中完全没有防循环规则。当切换到这些项目时,只有全局 §7 生效(31行),而 AI 项目下是 114 行——同一台电脑、同一个 Trae,不同项目下的 Agent 行为约束完全不同

5.8 冲突8(新增发现):讨论文档被误放入 rules 目录,吞噬 44% 上下文窗口

这是排查过程中 Yolanda 发现的又一关键问题。opc-l7-l13-extension.md1169 行)是一个 L7-L13 后链路(开发→测试→上线→获客→运营→盈利→迭代)的智能体架构设计文档,包含 20+ 个后链路智能体的角色定义、工作流程、依赖关系和路线图。

问题的本质
事实说明
本意一个单独的讨论页面,先琢磨方案,未敲定终版
实际被放在了 ~/.trae/rules/ 目录下
后果每轮对话都把这 1169 行全部加载到上下文窗口
占比占规则文本总量(~2660 行)的 44%

这是上下文窗口最大的单一消耗者。 更严重的是,因为它是"未敲定的讨论稿",内容本身可能有不完整、不一致的地方。Agent 读到一个不成熟的架构设计,反而增加了认知混乱。

为什么这会发生:当讨论后链路架构时,可能在某次操作中,这个讨论文档被写入了 ~/.trae/rules/ 目录。Trae 自动将 rules 目录下的所有 .md 文件作为 always-applied 规则加载,不管内容是否成熟、是否应该作为规则。

这个发现的重要性:在上下文窗口过载的 2660 行规则中,这 1169 行是最大的单一贡献者,且是完全不应该存在的。它对循环问题的贡献可能比防循环规则本身更大。

第六部分:级联故障链的完整还原 第 6 / 共 11 节

6.1 时间线

阶段1:初始安装
安装 Trae,开始使用。规则极简,响应快速,无 thought 碎片化现象。
阶段2:构建 OPC 架构
添加 agent 定义和规则。规则增长到 ~500 行。开始出现偶尔的循环。
阶段3:循环反复出现
每次循环后加新规则应对。规则增长到 ~800 行。thought 开始变慢,出现碎片化。
阶段4:安装 OpenClaw
OpenClaw 安装后继续大量修改。规则增长到 ~1500 行。循环更加频繁。
阶段5:两天密集打补丁
两天内大量讨论防循环策略,不断修改 project-rules.md。规则达到 2000+ 行。thought 碎片化严重(10-20 次/轮),屏幕闪烁开始出现。
阶段6:系统级联崩溃(当前)
规则达到 2660 行。渲染进程累计 CPU 99 分钟。thought 10-20 次/轮。屏幕闪烁。循环在多种新形式中不断出现。

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 推理进程 CPU11.2%持续高负载处理规则检查
GPU 进程 CPU4.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 直接回答:电脑不会坏

结论
你的新电脑非常安全。Trae 的 CPU 消耗在正常范围内,不会造成任何硬件损坏。屏幕闪烁是软件卡顿,不是硬件故障。

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 自然会降低。 持续闪烁会降低使用体验,但硬件不会损坏
关于"电脑会不会烧坏"
现代 Mac 有完善的温度保护机制。CPU 温度过高时,系统会自动降频(降低性能来降温)。如果温度继续升高,系统会强制关机保护硬件。你不可能通过正常使用来"烧坏"一台 Mac——除非物理破坏(如泼水、摔落)。所以请放心,你的新电脑绝对不会因为使用 Trae 而损坏。

第八部分:根因总结 第 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 条(含 killchmodssh-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.31-2 周内本地终端执行 mv 命令10 分钟❌ 取消(不适用)
A8验证方案 B 生效(发测试消息观察 Thought 链路)§9.4.9 步骤4A3-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.md2026-06-06
D3精简 AI 项目防循环规则(§-1 + §4 删除,替换为 4 行引用)在 Trae 中编辑 project-rules.md2026-06-06
D4修复 AI-Strategy-Director.md 自动触发残留在 Trae 中编辑2026-06-06
D5清理白名单(移除 kill/chmod/ssh-keygen 3 条命令)编辑 settings.json2026-06-06
D6限制文件路径白名单(整个用户目录 → 仅 TraeProjects)编辑 settings.json2026-06-06
D7删除 my_opc_cores 备份目录本地终端 rm -rf2026-06-06
D8删除 Trae_Server_Scripts 目录本地终端 rm -rf2026-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

修改内容:移除 killchmodssh-keygen;将文件路径限制为 ["/Users/yolanda/TraeProjects", "/tmp"]

(详细方案见 §8.2)

操作 5/5:重启 Trae(关键步骤,不可跳过)

操作:关闭 Trae → 等待 5 秒 → 重新打开。

为什么必须重启(三个原因)

  1. 刷新 Agent 缓存(最重要):Trae 在启动时读取 Agent 定义文件并生成系统提示词中的 Agent 摘要。不重启,修改后的 Agent 定义不会生效,系统提示词仍使用旧版本的描述。见第五部分 §5.1 的详细分析。
  2. 重新加载规则文件:全局和项目规则文件在启动时加载,修改后需要重启才能生效。
  3. 清零渲染进程 CPU:长期运行后渲染进程累计 CPU 负担,重启可清零。
警告
如果你修改了 Agent 定义或规则文件但不重启 Trae,系统提示词中的应用仍可能是旧版本,你做的修改在下一轮对话中可能完全不生效。这是之前多次修改后问题依然复现的根本原因之一。

紧急止血后状态预估

指标止血前止血后
规则文本总行数~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 条命令逐条分析

#命令用途风险评估建议
1mkdir创建目录低风险保留
2rm删除文件中风险(有 trash_rm 拦截)保留
3echo输出文本低风险保留
4cd切换目录低风险保留
5npx运行 npm 包低风险保留
6ssh远程连接高风险保留但警惕
7expect自动化交互中风险保留
8source执行 shell 脚本低风险保留
9tail查看文件尾部低风险,只读保留
10cat查看文件内容低风险,只读保留
11python3运行 Python中风险保留(开发必需)
12wc统计行数低风险,只读保留
13bash执行 shell中风险保留(开发必需)
14printf格式化输出低风险保留
15git版本控制低风险保留
16sed文本替换中风险保留(优先用 Edit 工具)
17grep文本搜索低风险,只读保留(优先用 Grep 工具)
18pnpm包管理器低风险保留
19kill终止进程高风险移除
20curlHTTP 请求中风险保留(开发必需)
21npm包管理器低风险保留
22nNode.js 版本管理低风险保留
23export设置环境变量低风险保留
24head查看文件头部低风险,只读保留
25sleep延时等待低风险保留
26which查找命令路径低风险,只读保留
27lsof列出打开的文件低风险,只读保留
28xargs参数传递中风险保留
29cp复制文件低风险保留

需要移除的 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 不需要访问桌面、文档、下载等个人目录。

2026-06-06 对话补充
原计划曾考虑将 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 沙箱机制详解与优化

背景
报告中提到"沙箱配置有 7 个历史版本",用户不清楚这意味着什么。经过对 Trae 内部文件的深入调研,发现这里需要区分两个不同的概念。本节彻底解释。

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 项目对照表(实测数据)

数据来源
以下数据来自 2026-06-06 对沙箱配置目录的实际文件调研。
#沙箱 Hash ID沙箱中的项目路径截图中的项目匹配状态
16a19672c...bd87/Users/yolandayolanda (/Users/yolanda)✅ 一一对应
26a19a2f7...a065/Users/yolanda/TraeProjects/AIAI (~/TraeProjects/AI)✅ 一一对应
36a19a2fe...a067/Users/yolanda/TraeProjects/DOOHDOOH (~/TraeProjects/DOOH)✅ 一一对应
46a199f6b...6316e2/Users/yolanda/TraeProjects/灵活用工灵活用工 (~/TraeProjects/灵活用工)✅ 一一对应
56a195d4d...bd4b/Users/yolanda/TraeProjects/my_opc_coremy_opc_core (~/TraeProjects/my_opc_core)✅ 一一对应
66a19430b...bc78/Users/yolanda/TraeProjects/my_opc_projects❌ 截图中没有⚠️ 多余的沙箱
76a195b90...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 种循环模式
循环 A:Solo Agent 自作主张当路由器
你发了消息
  ↓
Solo Agent 读到系统提示词:"你是唯一的语义路由入口"(Trae 改写的!)
  ↓
Solo Agent 自己判断该调哪个方向智能体(跳过了 OPC 总调度)
  ↓
但 Solo Agent 的上下文窗口已经被规则占了 50%,判断力下降
  ↓
判断错误 → 调错了 Agent → 结果不对
  ↓
Solo Agent 觉得"再试一次" → 又调一个不同的 Agent
  ↓
🔄 每次都是 "+1 -1" 的锯齿链路(现象1的截图证据)
  
循环 B:双层嵌套导致的失忆
你 → Solo Agent(已占 50% 上下文)
        ↓ Task 工具调用
     OPC 总调度(又占一份上下文)
        ↓ Task 工具调用
   方向战略总监(又占一份)
        ↓ Task 工具调用
   细分分析师(又占一份)
  ↓
每一层都要把上下文传下去,但空间不够
  ↓
底层的分析师不知道顶层说了什么
  ↓
产出结果和你的指令不一致
  ↓
Solo Agent 觉得不对,重新发起一轮
  ↓
🔄 循环
  
循环 C:OPC 总调度 vs 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总调度(也在尝试调度)
         ↓ 同时
     方向智能体(也被直接调用了)
  → 三方冲突 → 循环
  
✅ 方案 B 目标状态(清晰的单线)
  你 → 发消息
    ↓
  Solo Agent 判断:是普通问题还是 OPC 问题?
    ↓                    ↓
  自己回答          原样转交给 OPC 总调度
                         ↓
                   OPC 识别方向 → 调用 1 个方向总监
                         ↓
                      返回结果 → Solo Agent 展示给你
  

核心原则:每一层只做一层的事,不越界。

9.5 架构优化方案(不会 Skills 时的过渡方案)

背景
用户当前不会使用 Skill 机制,但希望优化 OPC 架构以维持稳定。本方案保留 OPC 总调度,优化触发机制和调度灵活性。

9.5.1 核心设计原则

  1. OPC 总调度保留,作为用户与方向智能体之间的唯一入口
  2. 去自动触发:所有 Agent 只由用户显式指令激活
  3. 灵活调度:OPC 总调度支持两种模式——完整链路模式(战略总监可以级联调用下级)和直接调用模式(用户可以指定任意智能体)
  4. 保留所有 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 就绪后)

目标
在用户学会 Skill 机制后,逐步将 OPC 功能迁移到 Skill 体系。

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 个月+)

  1. 不依赖 Trae 系统提示词:所有智能体协同逻辑通过 Skill 和规则文件实现
  2. 显式触发,无自动:所有智能体调度必须由用户显式指令触发
  3. 规则最小化:全局规则 ≤ 30 行,项目规则 ≤ 150 行
  4. 版本控制:所有规则修改通过 git 提交,可追溯和回滚
  5. 先诊断再治疗:遇到问题先问"为什么"而不是"怎么修"

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 使用者的启示

  1. 规则是双刃剑:每一条规则都在消耗上下文窗口。规则越多,Agent 越笨。好的规则体系是"少而精",不是"多而全"。
  2. 防循环规则会制造循环:试图用规则阻止 AI 的某种行为模式,往往适得其反——规则本身增加了 AI 的认知负担,让该行为模式更容易发生。
  3. 白名单不是越宽越好:给 Agent 更多自主权看似方便,但会让 Agent 在短时间内执行大量操作,超出系统承受能力。
  4. 修改规则必须全面同步:改了 A 文件,就要检查 B、C、D 文件是否也需要改。不一致的规则体系比没有规则更危险。

10.2 对多智能体编排的启示

  1. 在 Trae 当前架构下,多智能体层级调度与系统提示词生成机制存在根本矛盾。这不是"配置不对"的问题,而是两种设计理念的冲突——Trae 设计为"一个 Agent 完成所有任务",OPC 设计为"多个 Agent 分工协作"。Trae 的 Task 工具虽然支持子智能体调用,但它的摘要生成机制不可靠,可能改写你的 Agent 定义。
  2. Skill 机制可能是更合适的协同方式:Skill 是 Trae 原生支持的,不会与系统提示词冲突。将复杂的多步骤工作流封装为 Skill,比用规则和 Agent 定义来"模拟"多智能体协同更可靠。
  3. 级联调度是危险的设计:一个 Agent 调用另一个 Agent,后者再调用第三个……这种级联在理论上是优雅的,但在实践中,每一层都会消耗上下文、增加延迟、引入不确定性。

10.3 对 Trae 产品设计的启示

  1. 系统提示词中的子智能体摘要应该准确反映 Agent 定义文件。当用户写的是"有触发词才调用"时,Trae 不应该生成"每次自动触发"的摘要。
  2. 规则加载应该有优先级和冲突检测机制。当用户规则和系统规则冲突时,应该明确告知用户,而不是让 Agent 在矛盾中自行判断。
  3. 上下文窗口的使用情况应该对用户可见。用户应该能看到"规则用了 X%,对话用了 Y%,剩余 Z%",从而做出是否精简规则的决策。

10.4 核心洞察

最大的讽刺
为了防循环而写的规则,恰恰是导致循环的元凶。

规则越多 → 上下文越少 → Agent 越容易"失忆" → 越容易重复 → 我们加更多防循环规则 → 循环更严重

这是一个正反馈恶性循环,不是单个 bug,而是体系性的问题。解决的关键不是"修补某一处",而是打破循环链上的每一个环节:精简规则、同步定义、改变触发方式、建立版本控制。

第十一部分:方案执行记录与回检报告 第 11 / 共 12 节

本部分用途
记录第九部分 §9.0.5 行动清单中 A2-A6 的实际执行过程、逐项回检结果、回检中发现的新问题及修复、以及最终结论。
编写目的:作为可复用的回检模板——下次遇到类似问题时,可将本部分发给 Trae 作为执行和验证的参考标准。
执行时间:2026年6月6日晚
执行者:Trae Solo Agent(在用户指令下自动执行)

11.1 执行范围定义

根据 §9.0.5 行动清单,以下 5 项被标记为"今晚可直接处理"(不需要用户手动操作):

#操作对应章节执行方式
A2删除废弃沙箱配置(4个JSON文件)§9.3.5Agent 自动执行终端命令
A3全局规则注入§7.3 Solo Agent身份边界§9.4.2 + §9.4.9 步骤1+2Agent 自动编辑文件
A4项目规则注入§0.0最高优先级覆盖规则§9.4.3 + §9.4.9 步骤2Agent 自动编辑文件
A5全部Agent定义文件清除"自动触发"残留§9.4.4Agent 自动扫描+编辑
A6OPC总调度定义精简(145行→55行)§9.4.9 步骤3 + §9.5.4Agent 自动重写文件

以下 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 触发机制(回检中发现的问题):

发现的问题
原 §3 描述为"两级触发",其中第二级为"自动触发"——当对话话题涉及产业分析等领域时自动激活 OPC。这与新写入的 §0.0 "绝不自动触发"直接矛盾。

修复后:改为"仅一级:显式触发",明确写明"不存在第二级自动触发"。

A4.3 修复 §0.5 标题冲突(回检中发现的问题):

发现的问题
§0.0 和 §0.5 同时声称"最高优先级",造成歧义。

修复:将 §0.5 改名为"OPC 内部调度规则(受 §0.0 约束)"

回检确认:三处修改均生效且互不矛盾。✅ 通过

A5:全部 Agent 定义文件清除"自动触发"残留

扫描范围(6个目录,~54 个文件):

目录文件数"自动触发"残留
~/.trae/agents/(通用Agent)~210
AI/.trae/agents/61 (AI-Strategy-Director.md)
DOOH/.trae/agents/100
灵活用工/.trae/agents/51 (Skilled-Trade-Segment-Analyst.md)
线上/.trae/agents/60
跨境电商/.trae/agents/70

两个残留文件均已修复为"仅当 OPC 总调度显式调用时激活,不自动触发"。Grep 全量复核返回空。✅ 通过

A6:OPC 总调度定义精简

维度精简前精简后
总行数145 行55 行
缩减比例62%
核心变化含大量条件句、嵌套列表短句、扁平结构、单一职责

保留:方向映射表(5方向) + 输出格式模板 + Fallback 处理 + "绝不自动触发"声明。✅ 功能完整

11.3 第一轮回检:逐项执行确认

#检查项方法结果
回检-A24个废弃沙箱 JSON 是否已删除ls 验证✅ 已删除
回检-A3§7.3 是否完整写入全局规则Read 文件✅ 20行完整
回检-A4§0.0 是否写入项目规则Read 文件✅ 写入成功
回检-A5全部 Agent 文件是否无残留Grep 全目录✅ 返回空
回检-A6OPC 定义是否精简到 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 / 户外广告 / 灵活用工 / 跨境电商 / 线上广告
矛盾场景举例
用户问 "Transformer架构是什么?"
按 §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 行功能需要
4A2-A6 状态列显示待做实际已全部完成状态未更新
5§0.5 标题冲突未记录回检中发现并修复遗漏记录
6§7.3 跨文件矛盾未预见交叉检查发现并修复遗漏(新发现)

X2 结论:6 处偏差均为文档滞后或合理增补,无执行错误。

风险排查:改动是否引入新漏洞

#改动点潜在风险结论
1§7.3 删除条件3AI 问题不再自动走 OPC?无风险 — 方案B设计意图如此
2§0.0 与 §7.3 互相引用循环引用?无风险 — 内容一致
3§3 改为纯显式与白名单边界模糊?已消除 — Solo Agent不做领域判断
4OPC 定义精简到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 本次回检发现的所有问题及处理

#问题类型发现阶段处理方式状态
1project-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项目一致✅ 已修复
5opc-orchestration Skill 含"自动触发"表述Skill定义不一致用户要求全面检查阶段改为"仅当 Solo Agent 通过显式指令调用你时激活"✅ 已修复
6skilled-trade-workforce-analysis Skill 含"自动触发"表述Skill定义不一致用户要求全面检查后改为"仅当 OPC 总调度在灵活用工方向L3细分赛道研究阶段显式调用时激活"✅ 已修复
7OPC总调度只能调用方向战略总监,灵活性不足调度机制限制用户要求灵活调度后优化为支持两种模式:完整链路模式(调用战略总监)+ 直接调用模式(用户可指定任意智能体)✅ 已修复

11.5.3 关键经验沉淀

可复用的回检经验(4条)
  1. 改完一个文件不是终点,必须检查关联文件。 本次最大的问题(§7.3 vs §0.0 矛盾)就是因为分别修改但没有交叉比对才遗漏的。
  2. "纯显式触发"必须在所有出现"触发"二字的规则中同时体现。 只要有一处写了"自动触发"或"领域识别",就会与其他地方的"显式触发"产生矛盾。
  3. 回检不能只看"有没有做",还要看"做了之后有没有跟别的地方打架"。 第一轮 5/5 通过,但第二轮交叉检查才发现真正的矛盾。
  4. 报告本身也需要更新。 执行过程中发现的额外问题和修复动作应该反向写回报告,否则下次读报告的人会以为一切都在计划之中。

11.5.4 所有待办完成情况

#操作状态
A1重启 Trae✅ 已完成(2026-06-06 晚)
A2删除废弃沙箱配置(4个JSON)✅ 已完成
A3全局规则注入 §7.3✅ 已完成
A4项目规则注入 §0.0 + 修复 §3/§0.5✅ 已完成
A5清除 Agent 文件"自动触发"残留✅ 已完成
A6OPC 总调度精简(145行→55行)✅ 已完成
A7L3-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 → 展示结果,没有越界行为。

用户确认

用户确认
用户在观察 Thought 链路后确认:"是干净的,没再出现很多+1/-1"

验证总结

测试预期结果
测试 1:普通消息不触发 OPCSolo Agent 直接回答
测试 2:OPC 消息单次干净调用Single Thought → Single Task → 返回
Thought 链路无 +1/-1 锯齿✅(用户确认)
方案 B 整体生效三文件修改在重启后生效
A8 验证结论
方案 B 完全生效,今晚所有 8 项行动全部完成。

11.7 用户要求全面检查执行记录

检查时间:2026年6月6日晚(A8 完成后,用户要求继续深入检查)

检查背景:用户对已完成的修复不满意,要求:

  1. 确认改动后没有引入新矛盾或漏洞
  2. 将新改动更新到报告待办和第11章
  3. 检查所有 53 个 Agent 定义是否还有需要修改的
  4. 确认 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 是否与其他规则矛盾✅ 无矛盾
2Skills 修改是否影响 Skill 绑定矩阵✅ 不影响
3Agent 定义是否与规则一致✅ 一致
4是否有循环引用或逻辑死锁✅ 无
全面检查结论
未引入新的矛盾或漏洞,所有 53 个 Agent 定义和 49 个 Skills 文件均已检查并修复完毕,所有 5 个方向项目规则已保持一致。

11.7.5 OPC总调度优化

优化背景:用户希望OPC总调度更灵活,既能支持完整链路研究,也能支持直接调用特定智能体。

优化内容

  • 模式1:完整链路模式(默认):当用户没有明确指定要调用哪个智能体时使用,识别业务方向 → 调用对应的方向战略总监 → 战略总监继续级联调用下级
  • 模式2:直接调用模式:当用户明确指定要调用某个智能体时使用,识别用户指定的智能体 → 直接调用该智能体
  • 用户可以通过以下方式指定:"请调用 [智能体名称]"、"请OPC调用 [智能体名称]"、"直接调用 [智能体名称]"

修改文件~/.trae/agents/OPC-Master-Orchestrator.md

优化结论
OPC总调度现在支持两种模式,既保持了原有的完整链路研究能力,又增加了直接调用特定智能体的灵活性,满足用户的多样化需求。

附录:关键数据汇总 第 12 / 共 12 节

数据项数值
规则文本总行数~2660 行
防循环规则行数114 行(§-1: 19行 + §4: 64行 + opc-global §7: 31行)
防循环规则占规则文本比例4.3%
opc-l7-l13-extension.md 行数1169 行(占规则文本的 44%)
主渲染进程累计 CPU99 分 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

这是一次失败经验的记录,也是一次系统性学习的起点。