news 2026/5/6 19:39:27

开源免费的WPS AI 软件 察元AI文档助手:链路 034:applyDocumentProcessingPlan 与降级写批注

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
开源免费的WPS AI 软件 察元AI文档助手:链路 034:applyDocumentProcessingPlan 与降级写批注

链路 034:applyDocumentProcessingPlan 与降级写批注

总体链路图

下图在全系列各篇保持一致,仅通过高亮样式标示本篇所覆盖的环节;箭头表示主成功路径,点线为异常或可选路径。阅读任意一篇时都应能回到本图定位,避免在单文件里「钻太深」而失去上下游语境。

plain

structured

multimodal

1 入口: Ribbon/对话框 → assistantId

2 startAssistantTask 占位任务

3 launchInfo 与 resolveDocumentInput

4 resolveModel 与模型清单

5 提示词拼装与 launchGuard

6 分流 plain / structured / multimodal

7a chatCompletion 文本链路 plain

7b chatCompletion 结构化批次

8a applyDocumentAction

8b executionPlan → applyDocumentProcessingPlan

7c generateMultimodalAsset

9 评测持久化与任务完成态

异常路径 normalizeError → 安全弹窗

本篇在总体链路中的位置

对应图中 N8b→N10:结构化 JSON 批次、聚合计划与文档处理管线。 高亮节点:N8b、N10。若本篇同时引用 chatApi 与任务运行器,通常意味着该逻辑处于「编排层与网络层交界」:修改时要同时考虑任务取消与 UI 快照。

深度说明(工程视角)

从工程维护角度看,本篇讨论的对象应当被视为「可替换实现」:只要对外的任务状态、HTTP 契约与文档写回语义保持不变,内部可以重构函数拆分或调整日志字段。阅读时建议始终抓住三个锚点:一是数据从哪来(PluginStorage、localStorage、COM 选区还是全文);二是数据何时离开本机(进入 fetch 之前是否已完成脱敏与快照);三是失败时用户可见的文本由谁归一(chatApi 与助手错误弹窗两条路径)。

就「链路 034:applyDocumentProcessingPlan 与降级写批注」而言,源码位置可概括为:documentProcessingPipeline.js applyDocumentProcessingPlan 开头。这与摘要中的判断一致:根据 applyPolicy.shouldDegradeToComment 可将 replace 降级为 comment;可选创建备份记录再调用 applyDocumentExecutionPlan,并写入 operation 账本。该步在全部 chat 完成后执行。关键词「apply、downgrade、backup」提示你在仓库内做全文检索时应优先锁定这些符号,而不是仅依赖界面文案。

与网络请求相关的修改,务必在本地用开发者工具或代理核对:请求体中的 model 字段是否与设置页保存的 modelId 一致;Authorization 是否只取 apiKey 列表的第一段(部分网关对多密钥格式敏感);stream 为 true 时宿主是否稳定消费 SSE。若你引入新的 provider,应对照 getChatApiConfigByProvider 的 URL 拼接分支补充单元测试或手测用例,避免「路径已含 v1 却又重复拼接」类错误。

与文档写回相关的修改,应优先在无界面的纯函数层复现:例如仅调用 applyDocumentAction 或 applyDocumentProcessingPlan 的入参快照,观察 Range 坐标是否在 CRLF 归一化前后发生漂移。WPS 与 Word 在选区、批注锚点上的差异会放大这类问题,因此本篇若在讲坐标或分段,请同时阅读 documentPositionUtils 与 chunk 相关教程篇目。

阅读顺序上,本篇之后建议继续看:persistDocumentEvaluation 写入评测存储(036)。若在总体图中定位,对应图中 N8b→N10:结构化 JSON 批次、聚合计划与文档处理管线。 遇到与教程系列术语不一致时,以源码标识符为准:教程侧重导航与概念,本系列侧重调用次序与失败面。

最后说明写作立场:本系列不对任何云厂商或模型服务做优劣评价,也不暗示「必须开通」某类账号;所述配置项仅反映当前仓库为打通 OpenAI 兼容协议而需要的最小字段集合。若组织策略禁止外联,应在网关或 hosts 层拦截,而不是在加载项内写死假地址。

与教程系列文档的对照

下列文档来自docs/chayuan-tutorial-series,侧重「如何阅读仓库」与界面侧概念,与本链路系列互补:不重复推销功能,仅帮助建立目录与模块边界。

  • chayuan-tutorial-series/14-jiegouhua-json-liushuixian-yu-banben.md:与本篇链路相邻的工程说明,可对照变量命名与文件职责。
  • chayuan-tutorial-series/24-pizhu-maodian-guize-ji-zhong.md:与本篇链路相邻的工程说明,可对照变量命名与文件职责。
  • chayuan-tutorial-series/25-wendang-fenkuai-qi-collection.md:与本篇链路相邻的工程说明,可对照变量命名与文件职责。

摘要

根据 applyPolicy.shouldDegradeToComment 可将 replace 降级为 comment;可选创建备份记录再调用 applyDocumentExecutionPlan,并写入 operation 账本。该步在全部 chat 完成后执行。

关键词

apply;downgrade;backup

链路位置(源码索引)

documentProcessingPipeline.js applyDocumentProcessingPlan 开头。

正文

1. effectiveAction 与备份

shouldDegradeToComment 与 createDocumentBackupRecord。

维护时建议把本节涉及的符号在 IDE 里「查找引用」:确认是否还有对话框专用服务、拼写检查服务或评测脚本以拷贝粘贴方式重复了相似逻辑。若发现重复,优先抽到 chatApi 之上的薄封装,而不是在业务层再次拼接 URL 或 Authorization,以降低安全审查时的遗漏面。

// src/utils/documentProcessingPipeline.js 第161-193行exportfunctionapplyDocumentProcessingPlan(plan,options={}){constnormalizedPlan=plan&&typeofplan==='object'?plan:{}constrequestedAction=String(options.action||normalizedPlan?.requestContext?.documentAction||'').trim()consteffectiveAction=normalizedPlan?.applyPolicy?.shouldDegradeToComment===true&&['replace','comment-replace'].includes(requestedAction)?'comment':requestedActionconstbackupRequested=options.backupRequested!=null?options.backupRequested===true:normalizedPlan?.backupPolicy?.requested===trueletbackupRef=nullletbackupError=''if(backupRequested&&normalizedPlan?.backupPolicy?.supported===true){try{backupRef=createDocumentBackupRecord({taskId:options.taskId||normalizedPlan?.taskId||'',assistantId:options.assistantId||normalizedPlan?.assistantId||'',reason:options.backupReason||'document-processing-apply',launchSource:options.launchSource||'',metadata:{action:String(options.action||normalizedPlan?.requestContext?.documentAction||'').trim(),summary:normalizedPlan?.executionPlanSummary||normalizedPlan?.summary||null}})}catch(error){backupError=error?.message||String(error)}}constapplyResult=applyDocumentExecutionPlan(normalizedPlan,{...options,action:effectiveAction})

上下游衔接

persistDocumentEvaluation 写入评测存储(036)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/6 19:37:43

PPTist:基于Vue3+TypeScript的现代Web演示文稿编辑架构深度解析

PPTist:基于Vue3TypeScript的现代Web演示文稿编辑架构深度解析 【免费下载链接】PPTist PowerPoint-ist(/pauəpɔintist/), An online presentation application that replicates most of the commonly used features of MS PowerPoint, all…

作者头像 李华
网站建设 2026/5/6 19:37:41

容器明明没到CPU Limit,为什么还在疯狂Throttle?3大原因+排查指南

你是不是也遇到过这个场景:监控面板上容器的CPU使用率只有30%左右,远低于设置的2核Limit,但服务响应时间翻了好几倍,业务投诉一堆,你还找不到原因?查了半天才发现——容器一直在被Throttle。我当初排查这个…

作者头像 李华
网站建设 2026/5/6 19:37:40

从Halcon转战VisionPro?这份工具对照清单和迁移思路请收好

从Halcon到VisionPro:工业视觉开发者的迁移实战指南 当工业视觉项目需要从Halcon平台迁移到VisionPro时,开发者面临的不仅是工具集的转换,更是思维方式和开发范式的转变。本文将从实战角度出发,为有Halcon经验的开发者提供一份详尽…

作者头像 李华
网站建设 2026/5/6 19:16:28

Magnet2Torrent:一站式自动化磁力链接转种子文件方案

Magnet2Torrent:一站式自动化磁力链接转种子文件方案 【免费下载链接】Magnet2Torrent This will convert a magnet link into a .torrent file 项目地址: https://gitcode.com/gh_mirrors/ma/Magnet2Torrent 你是否曾遇到这样的困境:手头有一堆磁…

作者头像 李华
网站建设 2026/5/6 19:15:30

基于S2I的PHP容器化构建:sclorg/s2i-php-container项目实战解析

1. 项目概述:从源代码到容器镜像的“桥梁”在容器化应用开发与部署的日常工作中,我们经常面临一个经典场景:如何将一份PHP源代码,快速、可靠地打包成一个可以直接在Kubernetes或Docker环境中运行的容器镜像?手动编写Do…

作者头像 李华
网站建设 2026/5/6 19:14:29

学习工具能否提升成绩?高效学习APP推荐与使用指南

一、学习工具真能决定成绩?在学生时代,我们常常怀揣着对优异成绩的渴望,在知识的海洋中奋力前行。很多同学会遇到成绩波动、努力学习后需要更高效方法突破的情况,每当这时,我们总会不禁思考:要是有个得力的…

作者头像 李华