mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-11-05 08:47:27 +00:00
fix(agent): 续写占位不再把「承诺后没做的事」一并劝退
现场(用户原话:"那你去啊?说完就停了"):模型经 output_send__qq 说了一句 "我这就去办",内核判定本批全是输出通道发送(ReplyOnly)后补的占位只有终止许可 ——"若你的回复已完成,直接返回纯文本即可结束本轮,无需再调用任何工具"—— 模型照做返回纯文本,本轮结束,活没干。 但这条护栏不能简单删掉:注释里记着一次事故,通用「请继续」被读成 "再发一条消息",生产实测单轮 34 次 output_send__qq、持续 514 秒。 改法:把两种授权分开说清楚,护栏不削弱。 - 没做完的操作 → 现在继续做完(继续指**非发送类**工具) - 真的做完了 → 返回纯文本收尾,并明确「不要再发第二条消息」 判据:continuation_placeholder_test.go(必须同时含"继续做完"与 "不要再发第二条消息";不得再出现"无需再调用任何工具")
This commit is contained in:
@ -34,8 +34,18 @@ const continuationPlaceholder = "请根据以上工具结果继续。"
|
||||
// 还是再发一条消息。两者叠加成自我强化的发送循环:生产实测单轮 34 次
|
||||
// output_send__qq、持续 514 秒,直到 QQ 插件自己的循环保险拒绝发送才停下。
|
||||
//
|
||||
// 所以这里换成一条明确的终止许可:已回复完就直接返回纯文本收尾。
|
||||
const replyDeliveredPlaceholder = "若你的回复已完成,直接返回纯文本即可结束本轮,无需再调用任何工具。"
|
||||
// 所以这里必须保留「终止许可」,否则发送风暴回来。
|
||||
//
|
||||
// ★ 但原措辞只有终止、没有"继续干活"的授权(2026-10-27 现场):
|
||||
// 模型先说一句"我这就去办"(经 output_send 交付),随后被这条占位劝退
|
||||
// ⇒ 活没干就结束本轮。用户看到的正是"说完就停了"。
|
||||
//
|
||||
// 现在把两件事分开说:
|
||||
//
|
||||
// · 有没做完的操作 → 现在继续做完(继续指**非发送类**工具)
|
||||
// · 真的做完了 → 返回纯文本收尾,**不要再发第二条消息**(护栏仍在)
|
||||
const replyDeliveredPlaceholder = "回复已发送。若还有没做完的操作(需要调用工具才能完成的)," +
|
||||
"现在继续做完;若这一轮的工作已经全部完成,直接返回纯文本结束本轮——不要再发第二条消息。"
|
||||
|
||||
// continuationFor 选择工具轮之后补位的 user 占位文案。
|
||||
// replyOnly 表示上一批工具调用全部是输出通道发送(即模型刚交付了回复)。
|
||||
|
||||
Reference in New Issue
Block a user