WIP: 实现画布 Agent 停止请求 #108
Reference in New Issue
Block a user
Delete Branch "editor-agent-abortable"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
简单地使用http请求中断实现
WIP: 实现画布 Agent 请求停止交互to WIP: 实现画布 Agent 停止请求[P1] 新项目首次发送时,创建会话完成前“停止”按钮是空操作,之后仍会继续发送规划请求。代码 (line 474)
[P1] 用户快速停止可能早于 OSS 消息写入;随后的 GET 会用旧历史覆盖 optimistic message,导致提示词静默消失。代码 (line 98)
[P1] 停止后的权威 GET 失败被吞掉,随后仍恢复发送,与“GET 成功后才恢复”的契约相反。代码 (line 525)
[P2] 切换项目或卸载组件只清空控制器引用,没有 abort 在途 POST,旧 LLM 请求和会话锁会成为 UI 无法停止的孤儿请求。代码 (line 191)
@@ -445,0 +476,4 @@conversationId,clientMessageId,controller,};新项目首次发送时,创建会话完成前“停止”按钮是空操作,之后仍会继续发送规划请求。
@@ -177,6 +188,8 @@ export function useEditorAgentConversation({pendingSendRequestIdRef.current += 1;createConversationRequestIdRef.current += 1;isWaitingRef.current = false;activeSendRef.current = null;切换项目或卸载组件只清空控制器引用,没有 abort 在途 POST,旧 LLM 请求和会话锁会成为 UI 无法停止的孤儿请求。
我觉得用户刷新/重进后,没完成的规划应该继续在后台跑完,,,,,,用户换过去换回来他好像不着急中断llm规划,,,,
你这边
activeSendRef.current = null;是直接丢弃了引用,再切回来也无法找回,所以切换对话之后这个对话就无法中止了@@ -483,0 +522,4 @@conversationId &&activeConversationIdRef.current === conversationId) {await loadConversation(conversationId, {停止后的权威 GET 失败被吞掉,随后仍恢复发送,与“GET 成功后才恢复”的契约相反
低优先级
Pull request closed