这玩意频繁触发,专门做了一批AB对比测试,结果挺意外。
它是什么,为什么糟糕
它是工具advisor和 内嵌技能或系统提示词 的组合
它的提示词存在歧义!
因此,不管advisor本身强度怎么样,这个技能是个糟糕的技能。
1.如果用户纠正(correct)你,那么请教专家。
这里的歧义是,"correct"的目标有多种
- 执行流程的纠正,
- 客观事实信息错误
- 算法编写或者数学计算错误
advisor实际只对执行流程纠正最有效。
说法不严谨,导致每个任务Agent都要判断用户的意图是不是在correct,
以及会对自己不擅长的问题提出建议
2.一轮(turn)只能只能一次advisor
在AB测试中,Agent对“一轮(turn)”的定义困惑
它没能理解是一次对话、一次tool调用,还是一个session,什么是一轮
在实际测试中出现了执行的随机性,它有时尝试多次调用,有时犹豫一会最后决定不调用
而后台实际限制是一session(或一次对话中)执行3轮后开始拒绝
3.如果用户明确要求不使用advisor,那么之后不要调用
也是让Agent纠结的点
如果AGENTS.md写了不要调用advisor,但是用户纠正了Agent,
它思考哪个规则“优先级高”,并且能随机地认为advisor发生更早优先级更高,只要是correct就应该调用
或出现在多个对话中浪费注意力对不能调用advisor过度思考
进行AB测试的结果
例子是一个完整的JS解释器(足够复杂)
要求dsv4.1flash,自己分析优化方案、之后请教advisor
以及另一个会话,禁止分析,直接请教advisor
得到如下结果
- 专家似乎并没有额外消耗积分(或非常不明显)
- 专家只能基于现有上下文,没有读文件工具,
- 即使具备了上下文(例1,由dsv4.1flash代替阅读了)经过我和agent共同鉴定,专家编写的代码不如dsv4.1flash直接编写代码,它存在遗漏、肤浅(不求甚解)、耦合、破坏架构(拉了静态变量)等问题
- dsv4.1flash提出的方案与advisor提出方案结合能出更完善方案
- 需要明确注意,advisor提供的算法中,【引入了一处算法错误和一处框架破坏】,它们在之后被dsv4.1flash发现
结合4和5,它的效果可能不如dsv4.1flash跑两轮
我认为它的建议是针对”Agent对话流程“错误,
帮助当前Agent理解用户本意,找出遗漏
这个做法像是【通用Agent的技能】而不像是【CodingAgent】特化的
它叫专家,但和我们理解的“写代码的专家”没有多大关系
它很可能是同模型基于无工具、无技能、干净上下文做出的反思式建议
或者固定是豆包模型来给其它大佬发表评论
结论
这个advisor它作为通用Agent支持明显有用,能在用户说“前一轮执行有误”时,就提示词和行动的方式错误做出反思,
作为CodingAgent支持效果一般,它会【基于半桶水和没工具的水平对编程Agent指指点点】
上述是技能编写没能让它分清“流程错误”还是“算法错误”导致
技能写的糟糕,这是语文上的歧义问题,与实际能力无关
官方如果不提出更好的屏蔽开关,编写算法(而不是执行通用Agent任务)时,应该通过AGENTS.md屏蔽,它的算法建议并不是一定好,有引入的错误算法可能。