在 Electron 应用中,长任务通常运行在主进程或后端服务。用户界面随时可能补充新要求,但这些文字不能直接等同于“下一条消息”,更不能默认打断正在执行的工具。
实现前先把交互分成三类:下一轮排队、当前轮补充、中断并重开。只有当前轮补充适合绑定正在执行的目标;其余两类应走各自明确的生命周期入口。
渲染进程可以收集补充文本和用户操作,但活动执行轮、稳定 ID 和业务授权应由可信的主进程或服务端管理。
只有会话 ID 不够。同一会话可能连续运行多轮,输入还应绑定 { historyEpoch, turnId }。一次用户操作生成一个稳定 inputId;网络结果不明时查询或重试同一请求,不能换 ID 重发。
Tansr AgentSession 提供 inputCapabilities()、getInputTarget()、submitInput() 和 getInputStatus(),用于查看能力、取得活动目标、提交文本和查询回执。
submitInput 不会中断正在运行的工具,也不会修改已经发出的模型请求。补充文本只在安全边界进入历史;如果目标轮已经关闭,它不会自动启动下一轮。
accepted 只说明内存中已接纳,consumed 只说明进入本轮历史。两者都不能显示成“模型已理解”或“任务已完成”。
当前确认不是跨重启的持久消息。回执只保留当前轮和最近结束的一轮,所以应用仍要保存未确认草稿、原始目标和稳定 ID,并处理重连后的未知结果。
查询不到回执时,不能自动重放可能再次执行工具的请求。更安全的做法是展示状态,让用户决定查询、重试、中断还是新建任务。
补充文本不是权限凭据,也不是工具审批。主进程或后端仍应核验登录身份、业务权限和高风险操作确认,并管理令牌、关闭和外部副作用补偿。
如果应用只做一次文本处理,没有长任务、工具调用和过程状态,普通单轮接口更合适。如果需要撤销已执行工具、改写已发送请求或跨重启可靠投递,则应使用中断、补偿或持久队列。
开始实现前,可核对任务进行中追加输入、AgentSession API与回执字段,并先用无副作用任务验证正常接纳、重复提交、目标关闭和网络结果不明。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。