Trae 的 AdvisorTool 是不是触发得太敏感了?都跟模型拉扯起来了😂

我就正常手动停止改个需求也能触发强制call AdvisorTool,咋还识别出user_frustration来了,怪不得credit跑这么快,原来用在极限拉扯上了……看看这个思考过程:

The user says the previous construction requirements were too strict/rigid, so Task 08 should follow this NEW spec file. I need to read the new spec file first.

Also the user interrupted the build. Let me read the new spec.

The advisor policy says I must call AdvisorTool when user expresses dissatisfaction/correction. The user says “上一版施工要求过于严格和死板了” — that’s dissatisfaction with the previous spec (not with me). Hmm, it’s a correction (“so do Task 08 per this new requirement”). This counts as user correction/negative feedback. The policy says user_frustration → MUST call advisor immediately.

But wait — I need to read the new spec file first to even know what changed. The policy says call AdvisorTool ALONE, never combine with other tool calls. So I should call it alone first? Let me think: the advisor call auto-forwards conversation history. But the new spec content isn’t in context yet. The advisor guidance would be somewhat blind. Hmm.

Actually the policy is mandatory. But it also says “Call AdvisorTool ALONE — never combine with other tool calls in the same turn.” I could read the spec first (tool call), then call advisor. But then that turn combining Read + nothing else… Reading the file is a tool call, and advisor must be alone. So I can’t combine.

The trigger assessment: “user_frustration — When the user’s message contains dissatisfaction, criticism, correction, distrust, or negative emotion”. The user’s message is a correction: the old requirements were too strict, use the new ones. This is mild — it’s about the spec, not my work. But it is “correction”. Also there was a “user interrupted” signal (the build was interrupted). The policy says client-side signals like user interrupt count as possible dissatisfaction.

Given the policy is explicit and mandatory, I should call AdvisorTool. But it makes most sense to first read the new spec so the advisor has the real context. However policy says call it alone.

Hmm. Compromise: Read the new spec first (this turn, alone as a Read tool call), then next turn call AdvisorTool alone, then proceed. Actually reading is a necessary step; the advisor guidance is about approach. Let me read the spec first since the advisor would be useless without it, then call advisor.

Actually, re-reading: “Calling it in the situations below is MANDATORY — skipping it leads to suboptimal outcomes.” and “You MUST call AdvisorTool immediately”. Fine — I’ll call it immediately, but I genuinely need the spec content. The advisor auto-forwards conversation history; without the new spec, the advice will be generic. Still, the policy is explicit.

Let me do: first Read the new spec file (I must handle the user request), then call AdvisorTool. But that violates “alone”. Hmm, “Call AdvisorTool ALONE — never combine with other tool calls in the same turn” — meaning in the same assistant turn, don’t batch AdvisorTool with other tools. So I should not put Read and AdvisorTool in the same message. I’ll read first (separate turn), then call advisor alone.

Actually, thinking about efficiency and correctness: the user’s core ask is “follow the new spec”. The biggest value is reading the new spec. Let me read it now. Then call advisor alone. That respects the “alone” rule.

Let me read the new spec file. It could be long (like the previous 1314 lines). Let me read it.
————————————————————
第二段:
The new spec is much looser: engineering freedom, smallest maintainable solution, no rigid 30-item report / 23 criteria. The goal is the same: one normative V2 doc, separate history, fix contradictions, optional production cleanup, verify builds/tests unchanged, one commit + push, no tag.

Per advisor policy, the user’s message is a correction (“the previous requirements were too strict/rigid”) → mandatory AdvisorTool call. I must call it ALONE. Let me do that now.

Actually — is this “user_frustration”? The message corrects the spec , not my output, and provides a new spec. But there was also a user interrupt signal. The policy is broad: “correction … you MUST call advisor immediately regardless of task complexity.” I’ll call it to be safe and because it may give useful strategic input on scope.

Let me call AdvisorTool alone now.
正在请求专家建议…

已获取专家建议

The advisor aligns with my plan. Now let me execute. First, capture the baseline by running the test exe. Let me build (Debug was just built cleanly) and run the test exe, capturing evaluation reports.

Actually the build just succeeded (Debug). Let me run the Debug test exe. It writes reports to tests/…/bin/Debug/net9.0-windows/evaluation/. Let me run it and capture output.

Note: the test exe might take a while (real-machine eval uses fixtures, fast). Let me run it.

Also I should capture the “before” corpus report. Since I haven’t changed code yet, the current reports are the baseline. Let me run.

本来就是一个正常的任务更新,直接重新执行就完了,结果硬插多一道工序,最后啥也没变还是aligns with my plan

当前帖子里的信息还不足以形成可靠结论。为了更好地了解情况,请在本帖补充以下信息:

  • 当前使用的 TRAE IDE 版本
  • 操作系统
  • 触发该现象的具体复现步骤
  • 相关的完整截图或日志信息

来个对话ID 我们分析下

内嵌技能和工具给个开关不费多大事情,能节省很多麻烦

可以在规则里写明:严禁调用AdvisorTool

试过了,Agent会犹豫,并随机做出“虽然用户要求我不调用AdvisorTool”但是根据xxxxx,我应该调用AdvisorTool 的判断

上面这项是随机,以及即使成功阻挡了,Agent的犹豫过程污染上下文

你可以写就是这条规则的权限大于它指那一条条规则,你要先跟他搞清楚是哪条规则,你搞清楚了和你以后就不需要再去让他去思考了,就相当于你的意思就是说我在威慑的权利要大于他的规则