免费开源的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 )

相关新闻

uni-app跨端开发入门:从HBuilderX安装到多端发布实战指南

uni-app跨端开发入门:从HBuilderX安装到多端发布实战指南

1. 从零开始:为什么选择 uni-app 作为你的跨端起点 如果你正在寻找一个能让你“一次开发,多端发布”的解决方案,那么 uni-app 大概率已经出现在你的雷达上了。它不是一个新概念,但确实是在当前多端生态下,对中小团队和…

2026/8/12 20:51:46 阅读更多 →
Linux文件与fd

Linux文件与fd

一个程序#include <stdio.h> #include <string.h>int main() {FILE *fd fopen("hello.txt","w");if(fd NULL){return 1;}const char *msg "hello world\n";fwrite(msg, 1, strlen(msg)1, fd);fclose(fd);return 0; }运行程序之后…

2026/8/12 20:51:46 阅读更多 →
UI学习: 多界面传值的正向传值(属性传值)和反向传值(代理传值)

UI学习: 多界面传值的正向传值(属性传值)和反向传值(代理传值)

文章目录一、属性传值&#xff08;正向传值&#xff1a;A → B&#xff09;原理实现步骤二、代理传值&#xff08;反向传值&#xff1a;B → A&#xff09;为什么属性传值做不到反向传&#xff1f;代理模式三要素数据流向实现步骤三、两种传值方式对比一、属性传值&#xff08;…

2026/8/12 20:51:46 阅读更多 →

最新新闻

Python网络爬虫权威指南:从环境搭建到Scrapy框架的工程化学习路径

Python网络爬虫权威指南:从环境搭建到Scrapy框架的工程化学习路径

这类工具最值得先看的不是功能列表&#xff0c;而是能不能在普通环境里稳定跑起来。对于想系统学习网络爬虫&#xff0c;特别是想从零开始、避免在零散教程里迷失方向的人来说&#xff0c;找到一本结构清晰、内容权威、能带你从环境搭建到实战落地的“地图”至关重要。很多人学…

2026/8/12 21:43:27 阅读更多 →
数字孪生体:从概念到产业落地的核心引擎与实战剖析

数字孪生体:从概念到产业落地的核心引擎与实战剖析

1. 数字孪生体&#xff1a;从概念到产业落地的核心引擎 最近几年&#xff0c;无论是制造业的工厂车间&#xff0c;还是智慧城市的指挥中心&#xff0c;“数字孪生体”这个词的出现频率越来越高。它不再是实验室里的前沿概念&#xff0c;而是实实在在地走进了各行各业&#xff0…

2026/8/12 21:43:27 阅读更多 →
SQL Server 2019安装失败0x80004005:服务启动超时排查与解决方案

SQL Server 2019安装失败0x80004005:服务启动超时排查与解决方案

1. 问题引入&#xff1a;一个让无数DBA头疼的经典错误如果你正在部署SQL Server 2019&#xff0c;或者是在升级、修复现有实例&#xff0c;突然在安装程序最后阶段弹出一个对话框&#xff0c;提示“安装失败”&#xff0c;错误代码是0x80004005&#xff0c;错误描述是“服务没有…

2026/8/12 21:43:27 阅读更多 →
基于稀疏点云与八叉树地图的Turtlebot2三维导航实践

基于稀疏点云与八叉树地图的Turtlebot2三维导航实践

1. 项目缘起&#xff1a;从理想仿真到骨感现实的跨越几年前&#xff0c;当我第一次在Gazebo仿真环境里&#xff0c;看着Turtlebot2流畅地避开虚拟障碍物&#xff0c;沿着规划好的路径抵达目标点时&#xff0c;内心充满了对机器人自主导航技术的乐观。仿真环境里&#xff0c;地图…

2026/8/12 21:43:27 阅读更多 →
接口自动化测试工具选型与工程实践:从Postman到Pytest的完整指南

接口自动化测试工具选型与工程实践:从Postman到Pytest的完整指南

1. 项目概述&#xff1a;为什么接口自动化测试工具是研发效能的核心引擎如果你还在手动点点点&#xff0c;或者用Postman一个个发请求来验证接口&#xff0c;那可能真的有点跟不上节奏了。这不是危言耸听&#xff0c;而是当前软件研发&#xff0c;尤其是互联网和云原生领域&…

2026/8/12 21:43:27 阅读更多 →
TC397看门狗配置实战:多核系统安全监控与避坑指南

TC397看门狗配置实战:多核系统安全监控与避坑指南

1. 项目概述&#xff1a;TC397 WDG的深度解析在嵌入式开发领域&#xff0c;尤其是汽车电子和工业控制等高可靠性场景中&#xff0c;系统稳定运行是底线。想象一下&#xff0c;你的设备在野外无人值守&#xff0c;或者你的汽车正在高速公路上飞驰&#xff0c;此时软件因为一个未…

2026/8/12 21:42:26 阅读更多 →

日新闻

Ubuntu 22.04安装与使用tree命令:高效管理Linux目录结构

Ubuntu 22.04安装与使用tree命令:高效管理Linux目录结构

1. 为什么需要一个“目录树”工具&#xff1f;在Linux世界里&#xff0c;尤其是Ubuntu这样的发行版&#xff0c;命令行是很多人的主战场。我们每天都要和文件、目录打交道。ls命令是查看目录内容的首选&#xff0c;它简洁、高效&#xff0c;能列出文件名、权限、大小等关键信息…

2026/8/12 9:33:34 阅读更多 →
博思AI智能体:意图识别、思考链与性能优化的工程实践

博思AI智能体:意图识别、思考链与性能优化的工程实践

在AI应用从“能用”走向“好用”的进程中&#xff0c;系统的响应速度、决策透明度与高并发稳定性是决定用户体验的关键。博思AI智能体近期完成了一次重要的专项优化&#xff0c;聚焦于意图识别、思考链展示与全链路压测三大核心领域&#xff0c;将系统从功能实现推向了工程卓越…

2026/8/12 9:33:34 阅读更多 →
子代理架构:AI智能体任务分解与协同执行的核心原理与实践

子代理架构:AI智能体任务分解与协同执行的核心原理与实践

1. 项目概述&#xff1a;为什么我们需要“子代理”&#xff1f;最近在折腾各种AI应用和自动化流程时&#xff0c;我越来越频繁地遇到一个瓶颈&#xff1a;单个AI智能体&#xff08;Agent&#xff09;的能力边界。无论是处理复杂的多步骤任务&#xff0c;还是需要同时调用多个专…

2026/8/12 9:33:34 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑&#xff1a;baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码&#xff08;维护中 rm repo&#xff09; 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/12 1:11:09 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片&#xff1a;Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 1:11:09 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身&#xff0c;而应重视模型外的系统搭建&#xff0c;即Harness。提出AgentModelHarness的实用公式&#xff0c;详细介绍Harness的四个层次&#xff1a;持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/12 1:11:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/11 17:09:45 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/12 1:11:10 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/11 17:09:45 阅读更多 →