发布时间:2026/6/26 5:00:05
开源项目WPS AI插件察元AI文档助手:从 Ribbon 加载到 AI 对话框 URL 拼装
摘要OnAddinLoad 在加载项生命周期早期注册 ApiEvent、恢复模型索引并异步 loadModelList。openAIAssistantDialog 使用 Util.GetUrlPath 与 GetRouterHash 拼接 SPA 地址是与 WPS ShowDialog 强耦合的关键路径。关键词OnAddinLoad;ShowDialog;ribbon扩展阅读与维护提示本篇围绕「从 Ribbon 加载到 AI 对话框 URL 拼装」组织材料。仓库内与主题最直接相关的检索词包括OnAddinLoad、ShowDialog、ribbon。建议在阅读正文所列片段后用 IDE 全局搜索这些符号沿 import 与调用栈向上追问「谁在什么时机调用」而不是只记住单文件路径。摘要所概括的要点为OnAddinLoad 在加载项生命周期早期注册 ApiEvent、恢复模型索引并异步 loadModelList。openAIAssistantDialog 使用 Util.GetUrlPath 与 GetRouterHash 拼接 SPA 地址是与 WPS ShowDialog 强耦合的关键路径。落地到排障时可把现象粗分为三类交叉验证配置是否按预期写入持久化介质WPS COM 上下文是否可用例如是否缺少 ActiveDocument以及网络与证书策略是否拦截了 fetch。本篇涉及的模块通常只覆盖其中一两类需要与相邻篇目拼成完整拼图。教程文件名「12-yuanma-fenceng-yu-AI-bianma-zai-ben-xiangmu.md」仅用于导航与排序不等价于源码模块名。若正文中的行号与本地分支不一致多半因合并导致行偏移此时应以函数名、导出名为锚重新检索团队若维护了生成脚本可在变更大段源码后重新运行以保持摘录大致对齐。本文刻意避免对产品能力做营销式承诺所述行为均以当前仓库可见实现为准。若组织策略要求离线或内网模型应在网关、证书与代理层收口而不是假设加载项能绕过浏览器安全模型。若你同时阅读 docs/chayuan-llm-chain-series可先对照其中的总体链路图理解「请求从 UI 到 chatApi」的次序再回到本教程看数据结构、默认值与修改风险面两者互补不重复堆砌功能列表。正文1. 启动钩子枚举注入、PluginStorage 标记位、文档事件监听均在此处完成。阅读源码摘录时请把它当作「定位入口」而非完整实现同一函数可能在其他分支还有早退条件或 try/catch。修改默认行为前建议用最小文档手工走一遍相关助手或对话框并观察任务清单与日志中的字段是否与预期一致再决定是否做数据迁移或配置重置。// src/components/ribbon.js 第51-93行//这个函数在整个wps加载项中是第一个执行的functionOnAddinLoad(ribbonUI){if(typeofwindow.Application.ribbonUI!object){window.Application.ribbonUIribbonUI}if(typeofwindow.Application.Enum!object){// 如果没有内置枚举值window.Application.EnumUtil.WPS_Enum}//这几个导出函数是给外部业务系统调用的window.openOfficeFileFromSystemDemoSystemDemo.openOfficeFileFromSystemDemo window.InvokeFromSystemDemoSystemDemo.InvokeFromSystemDemo window.Application.PluginStorage.setItem(EnableFlag,false)//往PluginStorage中设置一个标记用于控制两个按钮的置灰window.Application.PluginStorage.setItem(ApiEventFlag,false)//往PluginStorage中设置一个标记用于控制ApiEvent的按钮label// 文档打开或切换时刷新表单模式按钮状态从文档变量/保护类型读取try{if(window.Application.ApiEvent){window.Application.ApiEvent.AddApiEventListener(DocumentOpen,ribbon.OnDocumentOpenForFormMode)window.Application.ApiEvent.AddApiEventListener(WindowActivate,ribbon.OnWindowActivateForFormMode)window.Application.ApiEvent.AddApiEventListener(DocumentBeforeSave,ribbon.OnDocumentBeforeSave)}}catch(e){console.warn(注册文档事件失败:,e)}// 先设置默认模型列表确保有数据显示setDefaultModels()// 从存储恢复选中的模型索引无有效选中时默认选中 OpenAIconststoredIndexwindow.Application.PluginStorage.getItem(selectedModelIndex)if(storedIndex!undefinedstoredIndex!null){constidxparseInt(storedIndex,10)if(!isNaN(idx))selectedModelIndexidx}else{selectedModelIndexgetOpenAIModelIndex(getModelList())}// 然后尝试从接口加载异步loadModelList()returntrue2. AI 助手 URLShowDialog 第一个参数必须是可加载的完整 URL含 hash 与路由段。阅读源码摘录时请把它当作「定位入口」而非完整实现同一函数可能在其他分支还有早退条件或 try/catch。修改默认行为前建议用最小文档手工走一遍相关助手或对话框并观察任务清单与日志中的字段是否与预期一致再决定是否做数据迁移或配置重置。// src/components/ribbon.js 第96-105行functionopenAIAssistantDialog(query{}){constqueryStringnewURLSearchParams(query).toString()constaiUrlUtil.GetUrlPath()Util.GetRouterHash()/ai-assistant${queryString??${queryString}:}window.Application.ShowDialog(aiUrl,察元 AI 助手,900*(window.devicePixelRatio||1),700*(window.devicePixelRatio||1),false)

相关新闻

第5课:机器学习的基本类型
2026/6/26 5:00:05

第5课:机器学习的基本类型

一、课程信息 课程主题:机器学习的基本类型适合对象:人工智能零基础学习者预计学习时长:2小时学习方式建议:先理解“有没有标准答案”,再理解“要解决什么任务”二、学习目标 学完本课后,你应该能够&#x…

阅读更多
号卡随身wifi哪个公司的好
2026/6/26 4:00:04

号卡随身wifi哪个公司的好

在当今数字化时代,随身WiFi成为了许多用户解决移动上网问题的首选方案。然而,市场上品牌众多,如何选择一个既可靠又实惠的产品成了不少消费者的困惑。本文将从几个关键维度出发,为您解析为何「58号卡秒返」成为众多消费者心中的优…

阅读更多
MMIO 和 PCIe 3.0 / 10G/100G 网口的完整关系梳理
2026/6/26 4:00:04

MMIO 和 PCIe 3.0 / 10G/100G 网口的完整关系梳理

MMIO 和 PCIe 3.0 / 10G/100G 网口的完整关系梳理 一、先分清两个概念本质 1. MMIO(内存映射 IO) 是CPU 访问外设的寻址模型,属于软件 / 总线地址层面规范; CPU 把外设寄存器映射到物理地址空间,用读写内存指令操控硬件…

阅读更多
2026年最佳录屏软件推荐:EV录屏免费下载,Windows/Mac电脑怎么录屏全攻略
2026/6/26 6:00:05

2026年最佳录屏软件推荐:EV录屏免费下载,Windows/Mac电脑怎么录屏全攻略

下载EV录屏 EV录屏下载地址:夸克网盘分享 下载链接内提供了不同系统安装包: Windows 系统下载:EVCapture_v5.5.2.exeMac 系统下载:EVCapture_v1.0.4.dmg 安装EV录屏 我的电脑是 Windows 系统,这里以安装 EVCapture_…

阅读更多
为什么越来越多三甲医院,深度选用语音通信系统?
2026/6/26 6:00:05

为什么越来越多三甲医院,深度选用语音通信系统?

为什么越来越多三甲医院,深度选用 TJWZ 五洲科技语音通信系统? 不是偶然,是长期贴合医疗刚需的实力选择✅1️⃣ 极致稳定,保障生命级通信 医院急诊、ICU、手术室容不得通话中断。TJWZ 自研软交换架构支持双机热备、线路冗余&#…

阅读更多
GPT-4.5生产级接入:环境隔离、密钥管理与错误熔断实战
2026/6/26 6:00:05

GPT-4.5生产级接入:环境隔离、密钥管理与错误熔断实战

1. 项目概述:这不是“调用API”,而是亲手搭起一座通往GPT-4.5的稳定桥梁你有没有试过在深夜改完第十版产品需求文档后,突然想验证一个模糊念头:“如果让模型读完这30页PRD,再让它用产品经理口吻给技术负责人写一封150字…

阅读更多
CPT外汇:注重效率的使用者更在意的技术架构,这里做个逻辑归纳
2026/6/26 6:00:05

CPT外汇:注重效率的使用者更在意的技术架构,这里做个逻辑归纳

对新手与注重稳健体验的外汇内容读者而言,“能看懂”往往比“堆概念”更重要。从CPT外汇的体验角度看,以下重点写清解释是否通俗、规则是否易查、提示是否前置,以及服务是否具备连续性。在外汇相关服务中,读者最在意的通常是信息是…

阅读更多
电子产品可靠性测试DIC应用
2026/6/26 6:00:05

电子产品可靠性测试DIC应用

消费电子产品的可靠性测试,说到底就一句话:你知道它应该能撑住,但你不确定它在哪个位置先扛不住。跌落测试、弯曲测试、扭曲测试、按键寿命测试,这些项目在产品开发阶段几乎是必做的。但传统的测试手段在"看变形"这件事…

阅读更多
Java实现密码安全存储:SHA-256加盐哈希原理与实战
2026/6/26 5:00:05

Java实现密码安全存储:SHA-256加盐哈希原理与实战

1. 项目概述:为什么密码不能“裸奔”?在开发任何涉及用户登录的系统时,处理密码都是第一道,也是最重要的一道安全防线。我见过太多项目,包括一些早期的、甚至现在某些不太严谨的创业项目,直接把用户密码用明…

阅读更多
嵌入式语音编解码实战:G.726 ADPCM库集成与优化指南
2026/6/25 12:25:54

嵌入式语音编解码实战:G.726 ADPCM库集成与优化指南

1. 项目概述与G.726 ADPCM技术背景在嵌入式语音处理领域,带宽和存储资源往往是寸土寸金的。如果你做过对讲机、VoIP网关或者早期的数字录音设备,一定对如何在有限的比特率下保住语音可懂度这件事深有感触。我当年接手一个车载调度系统的项目,…

阅读更多
ITU656格式化器寄存器配置实战:VBI数据处理与VCR特技播放兼容性
2026/6/25 22:07:52

ITU656格式化器寄存器配置实战:VBI数据处理与VCR特技播放兼容性

1. 项目概述与核心挑战在数字视频处理领域,将原始的视频数据、同步时序以及各种辅助信息打包成一个标准、稳定的串行数据流,是确保设备间互联互通的基础。ITU-R BT.656标准(常简称为ITU656)正是为此而生的一套“交通规则”。它定义…

阅读更多
嵌入式GUI开发实战:emWin环境搭建、配置优化与性能调优指南
2026/6/25 20:03:50

嵌入式GUI开发实战:emWin环境搭建、配置优化与性能调优指南

1. 项目概述与emWin核心价值解析在嵌入式系统开发领域,人机交互(HMI)的设计正从简单的LED指示灯和按键,快速向全彩图形化界面演进。无论是智能家电上的触摸屏、工业PLC的操作面板,还是医疗设备的参数显示,一…

阅读更多
计算机毕业设计之基于Java的流浪动物收养系统设计与开发
2026/6/26 0:00:04

计算机毕业设计之基于Java的流浪动物收养系统设计与开发

时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,流浪动物收养系统当然不能排除在外。流浪动物收养系统是在实际应用和软件工程的开发原理之上,运用java语言以及SSM框架进行开发。首先…

阅读更多
技术线上面试代码写完就以为通关?留学生利用黑盒测试自证风控「蒸汽教育分享」
2026/6/26 0:00:04

技术线上面试代码写完就以为通关?留学生利用黑盒测试自证风控「蒸汽教育分享」

在线上白板编程(Coding)或算法实战轮次中,不少代码基本功扎实的技术新人,在跑通了题目主干逻辑的第一时间,会习惯性地向评委表示“我写完了”。这在极其注重系统稳定性的研发总监和资深架构师眼里,往往暴露…

阅读更多
暗黑2存档编辑器终极指南:5分钟快速掌握d2s-editor完整使用教程
2026/6/26 0:00:04

暗黑2存档编辑器终极指南:5分钟快速掌握d2s-editor完整使用教程

暗黑2存档编辑器终极指南:5分钟快速掌握d2s-editor完整使用教程 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 你是否厌倦了在暗黑破坏神2中反复刷装备的枯燥过程?是否想快速测试不同的职业build却不想花…

阅读更多
GIT修改用户名
2026/6/26 3:53:45

GIT修改用户名

在GIT中修改用户名可按以下步骤操作: 查看当前git的用户名,使用命令git config --list或git config user.name。修改git用户名,使用命令git config --global user.name "xxx(新的用户名)",将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/23 23:39:46

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat:让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/24 18:38:44

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多