一轮对话怎么走
从你发出消息到这一轮结束,引擎组装请求、调用工具、回灌结果,以及不再调工具后的收尾判定。
- 你发出消息。
- 引擎组装这次请求:系统提示、项目指令文件、可用技能与子代理清单、命中的记忆、历史消息、工具清单,再加上当轮需要的提醒(最终回复风格、计划模式、记忆召回、日期变更这些)。
- 模型返回文本,以及零到多个工具调用。
- 每个工具调用先过权限判定(见下节),通过后执行,结果回灌给模型。
- 只要模型还在调工具,循环继续。
- 模型不再调工具时还有一道收尾判定,这一轮才能算结束——因为「没再调工具」并不等于「答完了」:
- 输出被长度上限截断:已经有可见正文但话说一半就断了,会接着让它续写,最多三次。
- 整个预算都花在思考上、一点正文都没回来:这种情况要「接着写」是没意义的,所以先提醒它少思考,最多两次;梯子用完了就停下来问你要不要重试,而不是默默收一个什么也没产出的回合。
- 已经干出了活、收尾却回了个空响应:先重试一次(网关抢一下或模型忘了收尾都能救回来);还不行就把这一轮判为失败,而不是当作完成——活没干完的回合默默标成完成,看上去就像它自己停手不干了。
- 工具调用的参数被截断是另一种情况:那个调用根本没执行,修法是给它更大的输出预算让它重发,不是续写。
界面上的正文、工具卡片、完整计划、进度清单、压缩提示和记忆提示,都是引擎推送的独立事件。计划模式与工具权限独立:模式在请求边界确定,完整提案与执行时的 update_plan 清单分别显示;结构化问题的回答只回到发起它的会话和调用。
有活动目标时,这轮结束后还要经过目标续跑判定。引擎先处理用户输入和其他待处理工作,只在执行模式下的安全空闲点继续。每次续跑有自己的回合和计量;暂停、停止、额度/预算限制或目标清除会阻止不适当的续跑。目标完成需要实际验证和最终记账,不能把一次普通回合结束当作达成,详见目标与侧任务。