# AI 操作确认与上下文校验 来源:AI 数据复盘助手(Vue 3 / Pinia),2026-09-10 提取。 ## 原项目位置 - src/stores/chat.ts:isRunActive、canApplyAgentChange、markAgentChangeApplied。 - src/components/ChatPanel.vue:applyAgentDraft,预览后由用户确认创建。 - src/components/AgentWorkspace.vue:createDocument,校验方案并记录执行状态。 - src/stores/documents.ts:createBlank,通过 beforeCreate 在创建前再次校验。 ## 如何独立使用 agent-change-guard.ts 不依赖 Vue、Pinia 或网络服务。将原 store 的状态作为 Context 参数传入,调用 canApplyAgentChange(change, context)。返回 true 仅表示可以进入确认执行流程,不表示用户已授权。 提取保留原判断分支:pending 状态、来源文档、运行 ID、会话 ID、模型配置;没有活动运行时,沿用原逻辑校验当前会话文档。类型仅保留此函数使用的字段,未复制数据库和模型调用代码。 ## 为什么这样设计 用户可能在模型返回前切换文档、会话或重新发起任务。把方案绑定到来源文档和运行,可以避免旧结果被用在当前任务上。创建成功后,原项目将方案从 pending 标记为 applied。 ## 边界 这是从真实项目整理的前端校验模块,不是完整 Agent SDK。页面场景使用固定数据,没有调用模型或创建文档。pending 状态检查不能代替并发锁、服务端幂等键或数据库权限;创建期间发生上下文切换时,写入取消与补偿也需要业务层处理。模块不声称解决这些问题。 ## 页面场景 1. 当前方案:校验通过,仍需用户确认。 2. 切换文档:来源文档不一致,拦截。 3. 旧任务返回:运行 ID 不一致,拦截。 4. 已经执行:状态不再是 pending,拦截。