尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
免费开源的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加载项中是第一个执行的 function OnAddinLoad(ribbonUI) { if (typeof window.Application.ribbonUI ! object) { window.Application.ribbonUI ribbonUI } if (typeof window.Application.Enum ! object) { // 如果没有内置枚举值 window.Application.Enum Util.WPS_Enum } //这几个导出函数是给外部业务系统调用的 window.openOfficeFileFromSystemDemo SystemDemo.openOfficeFileFromSystemDemo window.InvokeFromSystemDemo SystemDemo.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() // 从存储恢复选中的模型索引无有效选中时默认选中 OpenAI const storedIndex window.Application.PluginStorage.getItem(selectedModelIndex) if (storedIndex ! undefined storedIndex ! null) { const idx parseInt(storedIndex, 10) if (!isNaN(idx)) selectedModelIndex idx } else { selectedModelIndex getOpenAIModelIndex(getModelList()) } // 然后尝试从接口加载异步 loadModelList() return true2. AI 助手 URLShowDialog 第一个参数必须是可加载的完整 URL含 hash 与路由段。阅读源码摘录时请把它当作「定位入口」而非完整实现同一函数可能在其他分支还有早退条件或 try/catch。修改默认行为前建议用最小文档手工走一遍相关助手或对话框并观察任务清单与日志中的字段是否与预期一致再决定是否做数据迁移或配置重置。// src/components/ribbon.js 第96-105行 function openAIAssistantDialog(query {}) { const queryString new URLSearchParams(query).toString() const aiUrl Util.GetUrlPath() Util.GetRouterHash() /ai-assistant${queryString ? ?${queryString} : } window.Application.ShowDialog( aiUrl, 察元 AI 助手, 900 * (window.devicePixelRatio || 1), 700 * (window.devicePixelRatio || 1), false )
RELATED

相关推荐

C++模板元编程现代化:六大降维手段提升代码可读性与维护性

C++模板元编程现代化:六大降维手段提升代码可读性与维护性

1. 项目概述:为什么我们需要“降维打击”模板元编程?如果你在C领域摸爬滚打有些年头,尤其是涉足过性能敏感或框架开发,那么“模板元编程”这个词对你来说,可能既是神兵利器,也是梦魇之源。它能在编译期完成…

📅 2026/9/1 15:53:43
文档智能解析:从非结构化文档到结构化数据的自动化处理

文档智能解析:从非结构化文档到结构化数据的自动化处理

1. 从“文档沼泽”到“数据金矿”:为什么我们需要Docling这样的工具 在任何一个与技术、数据或知识管理打交道的团队里,文档处理都是一个绕不开的“脏活累活”。想象一下这个场景:你手头有一份客户发来的PDF合同,一份同事用Word写…

📅 2026/9/17 17:20:06
ElasticSearch核心架构与生产部署:从分布式搜索到实时分析引擎实战

ElasticSearch核心架构与生产部署:从分布式搜索到实时分析引擎实战

1. 从“数据库”到“搜索与分析引擎”:ElasticSearch的重新定位 提到ElasticSearch,很多刚接触的朋友会下意识地把它归到MySQL、Oracle这类关系型数据库的阵营里,毕竟名字里就带着“Search”,听起来像个专门搞搜索的数据库。我刚开…

📅 2026/8/23 7:28:48
MORE NEWS

更多资讯

📰

STM32F4裸机移植SOEM EtherCAT主站实战指南

1. 为什么要在STM32F4上跑SOEM主站1.1 一个被忽略的现实需求大多数EtherCAT主站方案都跑在带标准网卡的Linux系统上,比如用IGH主站或者SOEM配合实时内核补丁。这套方案成熟、生态好,但代价也很明显:你需要一颗能跑Linux的处理器,外…

📰

TinyImageNetTorch微调预训练模型实战:从权重加载到混淆矩阵

简介:这份资源面向深度学习入门与进阶开发者,聚焦TinyImageNet小规模图像识别数据集上的预训练模型微调实践。TinyImageNet从ImageNet精简而来,包含约200类6464彩色图像,规模适中,适合在有限算力下快速验证迁移学习思路…

📰

ST-LINK Utility 烧录实战:从连接配置到读保护解锁的完整指南

1. 为什么还要聊 ST-LINK Utility 这个"老古董"如果你刚开始接触 STM32,大概率会经历这样一个过程:装好 Keil 或者 IAR,新建工程,点一下 Download 按钮,程序就跑起来了。一切看起来都很顺,直到某…

📰

告别AD导出STEP:立创商城+FreeCAD高效处理3D模型

1. 为什么我要彻底抛弃 Altium Designer 导出 STEP 这条路画过板子的人都有个共识:原理图漂亮不算本事,PCB 布局布线过得去也只是及格,真正让一个项目从"能跑"变成"能交付"的,往往是那个不起眼却极其折磨人的…

📰

STM32烧录避坑指南:ST-LINK Utility连接、烧录与擦除实战

STM32开发入门的第一道坎,往往不是写代码,而是把代码弄进芯片里。我见过太多新手,Keil里编译零错误零警告,点下载却弹出一堆红字,或者干脆连芯片都认不到。ST-LINK Utility这个工具,官方出品、免费、轻量&a…

📰

工业感知与连接:藏在机柜里的本土隐形冠军

1. 被藏在机柜里的守门人:感知与连接为什么是最容易被低估的一环前两年我去一家汽车零部件厂做产线数字化调研,进了车间先看控制柜。控制柜里堆着各种品牌的PLC(可编程逻辑控制器)和伺服驱动器,唯独角落里几只不起眼的…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬