【建议】尽快推出WPS客户端官方Skill
当前WPS灵犀官方Skill矩阵已覆盖:金山文档Skill(云端在线文档操作)、WPS 365 Skill(企业协同办公)、WPS知识库Skill(知识文档管理)、WPS笔记Skill(笔记全场景,含35个子技能)。上述Skill均聚焦于云端或服务端能力,操作对象为服务器端的文档副本或在线文档,覆盖云端文档协作与知识管理场景。然而,针对WPS Office Windows客户端(即本地安装的WPS文字、WPS表格、WPS演示三大组件)的直接操控能力,官方Skill体系尚存在覆盖空白。WPS客户端Skill的独特价值在于:它操作的是用户本地正在编辑的文档实例,能够直接作用于当前选区、当前工作表、当前幻灯片等实时上下文,现有云端Skill无法覆盖。二者是互补关系而非替代关系:客户端Skill适用于用户在WPS中实时编辑文档的场景,云端Skill适用于文档批量处理与跨设备协作。
建议官方参考GitHub开源项目 lc2panda/wps-skills:https://github.com/lc2panda/wps-skills/tree/main,尽快推出WPS客户端官方Skill。
wps-skills项目采用三层架构设计:
第一层:Skills层(自然语言指导)——由4个SKILL.md文件构成,分别对应wps-excel、wps-word、wps-ppt、wps-office四个技能目录。AI 在接收用户自然语言指令后,参照 SKILL.md 中的工具描述和适用场景,自动匹配并调用相应的 MCP 工具。
第二层:MCP Server层(协议桥接)——基于TypeScript实现的MCP(Model Context Protocol)服务进程,使用@modelcontextprotocol/sdk库(版本^1.27.0),通过stdio传输层与AI助手建立连接。MCP是由Anthropic主导推出的开放协议标准,旨在为AI模型提供与外部工具交互的标准化接口,定位类似于AI Agent领域的USB协议。该层由三个核心模块组成:mcp-server.ts负责MCP协议通信与请求分发,处理tools/list和tools/call两类请求;tool-registry.ts以单例模式管理全部236个工具的注册与调度,每个工具关联一个ToolCategory分类;wps-client.ts实现跨平台的方法调用分发,内部通过平台判断将调用路由到Windows PowerShell路径或macOS HTTP轮询路径。该层将自然语言意图转化为结构化的API调用,充当AI助手与WPS客户端之间的协议翻译器。
第三层:执行层(平台适配)
——在Windows平台上,通过PowerShell脚本(wps-com.ps1)调用WPS COM接口实现客户端操控,该脚本包含完整的Excel(约70个动作分支)、Word(约24个)、PPT(约110个)和通用操作的处理逻辑;MCP Server 通过 Node.js 的 child_process.spawn 启动 PowerShell 进程,传入动作名称和 JSON 格式的参数,PowerShell 脚本解析参数后调用 WPS COM 对象(Application 对象模型)执行操作,执行结果以 JSON 形式返回。COM 自动化是 WPS Office 提供的原生编程接口,支持活动文档获取、单元格读写、幻灯片管理等完整操作。PowerShell 脚本设置了 30秒超时保护,防止进程挂起导致 MCP Server 无响应。
——在macOS平台上,因WPS加载项运行在沙箱环境中无法启动HTTP服务,采用反向HTTP轮询架构——MCP Server在端口58891(可通过环境变量WPS_MCP_PORT配置)上运行HTTP服务端,WPS加载项作为 HTTP 客户端每 500 毫秒向 /poll 端点发起请求获取待执行命令,在 WPS 内部执行后将结果 POST 到 /result 端点。该设计规避了 macOS 沙箱对服务端启动的限制,同时保持命令传递的实时性。
Windows平台的完整调用链路如下:
MCP Server接收请求——AI助手通过MCP协议的tools/call方法发起调用,MCP Server根据工具名称从注册表中查找对应的ToolDefinition和ToolHandler,执行JSON Schema参数校验后调用wpsClient.executeMethod()。工具注册遵循OCP原则(扩展开放、修改关闭),所有工具在启动时批量注册到全局ToolRegistry单例中,每个工具调用使用UUID作为追踪标识,便于日志关联与问题排查。
路由到PowerShell执行——WpsClient模块通过os.platform()检测当前平台为Windows后,将调用请求序列化为JSON字符串,通过Node.js的child_process.spawn启动PowerShell进程,传入-ExecutionPolicy Bypass -File wps-com.ps1 -Action <动作名> -Params <JSON参数>。参数以JSON字符串形式通过spawn的args数组传递,由Node.js自动处理Windows平台的引号转义问题。
获取WPS COM对象——PowerShell脚本通过.NET运行时互操作服务[System.Runtime.InteropServices.Marshal]::GetActiveObject()从Windows运行对象表(Running Object Table, ROT)中获取已运行的WPS应用程序COM对象。这是整个链路的关键步骤。不同WPS组件使用不同的ProgID:WPS表格为Ket.Application,WPS文字为Kwps.Application,WPS演示为Kwpp.Application。这些ProgID与Microsoft Office的Excel.Application、Word.Application、PowerPoint.Application相对应,反映了WPS Office对COM自动化接口的兼容性设计。该方法要求目标应用程序必须处于运行状态且已在ROT中完成注册,否则调用将抛出异常。
COM对象方法调用与属性操作——获取COM对象后,PowerShell脚本通过switch语句(涵盖230余个分支)将Action路由到对应的处理逻辑。以Excel操作为例:set_cell_value会依次获取Workbook对象、按名称索引Sheets集合、通过地址字符串解析获取Range对象、最终设置Value属性;create_pivot_table会操作PivotCaches集合创建数据透视表缓存并配置字段布局;auto_filter会对Range对象设置AutoFilter方法并传入筛选条件字段与值。脚本内部实现了多项辅助功能,包括列字母与数字互转、十六进制颜色与BGR整数互转、Range地址解析(支持"Sheet1!A1:B10"格式带工作表名引用)、工作表引用去引号处理、文件扩展名到应用类型的自动识别等。
结果序列化返回——操作结果被统一封装为{success: bool, data: object, error: string}结构的JSON对象,通过PowerShell的ConvertTo-Json -Depth 10 -Compress输出到stdout,由Node.js进程的stdout事件捕获并解析。脚本设置了30秒超时保护机制,防止PowerShell进程挂起导致调用链阻塞。MCP Server还内置了跨应用数据缓存机制(dataCache),用于解决macOS平台WPS无法跨应用操作的数据传递问题。
此外,该项目还部署了一个WPS加载项(wps-claude-addon),其manifest.xml遵循WPS加载项规范(xmlns="http://schemas.wps.cn/oaassist/2019/manifest"),声明了三个宿主(wps、et、wpp),声明了`document.read`和`document.write`两项权限,ribbon.xml在WPS功能区中添加了"Claude助手"选项卡,内含"连接状态"按钮。在Windows COM模式下,该加载项仅用于状态展示,不参与实际操控流程。安装脚本(install.ps1)负责将加载项文件复制到WPS的jsaddons目录并完成注册,同时执行npm依赖安装与TypeScript编译。