<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Zhang Zhemin</title>
    <description>The latest articles on DEV Community by Zhang Zhemin (@zhang_zhemin_22ab34ce2f74).</description>
    <link>https://dev.to/zhang_zhemin_22ab34ce2f74</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4123619%2Fe5cf79e4-f39b-4387-acc3-3da05f1dac46.png</url>
      <title>DEV Community: Zhang Zhemin</title>
      <link>https://dev.to/zhang_zhemin_22ab34ce2f74</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zhang_zhemin_22ab34ce2f74"/>
    <language>en</language>
    <item>
      <title>拆解美图秀秀：端侧大模型、实时美颜与亿级图像管线的工程实践</title>
      <dc:creator>Zhang Zhemin</dc:creator>
      <pubDate>Fri, 18 Sep 2026 13:05:10 +0000</pubDate>
      <link>https://dev.to/zhang_zhemin_22ab34ce2f74/chai-jie-mei-tu-xiu-xiu-duan-ce-da-mo-xing-shi-shi-mei-yan-yu-yi-ji-tu-xiang-guan-xian-de-gong-cheng-shi-jian-4km0</link>
      <guid>https://dev.to/zhang_zhemin_22ab34ce2f74/chai-jie-mei-tu-xiu-xiu-duan-ce-da-mo-xing-shi-shi-mei-yan-yu-yi-ji-tu-xiang-guan-xian-de-gong-cheng-shi-jian-4km0</guid>
      <description>&lt;h1&gt;
  
  
  拆解&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;：端侧大模型、实时美颜与亿级图像管线的工程实践
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. 背景与挑战
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;作为一款影像处理与美化应用，需要在 iOS/Android/Web/桌面多端提供一致体验。典型场景包括实时预览、拍照、视频美颜、批量修图、AI 生成。挑战包括：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;实时性：相机预览 30/60fps，单帧预算 16.6ms/33.3ms。&lt;/li&gt;
&lt;li&gt;海量规模：亿级用户、峰值上传、下载、素材分发。&lt;/li&gt;
&lt;li&gt;设备碎片化：芯片、内存、系统版本、相机能力差异大。&lt;/li&gt;
&lt;li&gt;成本与隐私：云端 GPU 成本高，用户对隐私敏感。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;因此，&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;采用端侧优先、云端增强、端云协同的架构。用户可通过&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀官网&lt;/a&gt;获取版本信息，也可在应用商店完成&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀下载&lt;/a&gt;。&lt;/p&gt;

&lt;h2&gt;
  
  
  2. 整体架构
&lt;/h2&gt;

&lt;p&gt;端侧链路：&lt;/p&gt;

&lt;p&gt;采集层 -&amp;gt; 前处理 -&amp;gt; AI 推理 -&amp;gt; 美颜渲染 -&amp;gt; 编码/显示/上传&lt;/p&gt;

&lt;p&gt;云侧链路：&lt;/p&gt;

&lt;p&gt;训练平台 -&amp;gt; 模型仓库 -&amp;gt; 素材/模板 -&amp;gt; 图像处理集群 -&amp;gt; 存储/CDN -&amp;gt; 审核/推荐&lt;/p&gt;

&lt;p&gt;端云协同：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;端侧大模型/小模型：人脸检测、关键点、分割、风格化。&lt;/li&gt;
&lt;li&gt;云端：重计算、超分、生成式大模型、批量处理。&lt;/li&gt;
&lt;li&gt;模型下发：按设备能力下发不同精度/结构。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. 端侧大模型工程实践
&lt;/h2&gt;

&lt;h3&gt;
  
  
  3.1 模型轻量化
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;教师-学生蒸馏：大模型生成伪标签，学生网络学习。&lt;/li&gt;
&lt;li&gt;剪枝：结构化剪枝，通道裁剪，稀疏化。&lt;/li&gt;
&lt;li&gt;量化：PTQ/QAT，INT8 为主，部分层 INT4，激活动态范围校准。&lt;/li&gt;
&lt;li&gt;算子融合：Conv+BN+ReLU，LayerNorm+Linear，减少 kernel launch。&lt;/li&gt;
&lt;li&gt;注意力优化：KV Cache、窗口注意力、线性注意力。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3.2 推理引擎与异构计算
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;推理框架：MNN、NCNN、TNN、ONNX Runtime、Core ML、NNAPI。&lt;/li&gt;
&lt;li&gt;后端：CPU NEON、GPU OpenCL/Vulkan/Metal、NPU Hexagon/APU。&lt;/li&gt;
&lt;li&gt;调度：优先 NPU，其次 GPU，最后 CPU；按算子支持度切图。&lt;/li&gt;
&lt;li&gt;内存：权重常驻、张量池、零拷贝、ION/DMA-BUF、统一内存。&lt;/li&gt;
&lt;li&gt;线程：大核绑定、线程池、任务窃取、避免频繁同步。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3.3 端侧大模型
&lt;/h3&gt;

&lt;p&gt;对于生成式能力，端侧部署 1B 以下模型或蒸馏版，结合 LoRA 适配风格。文本编码器与图像解码器分离，按需加载。扩散模型采用少步采样、缓存、量化。对实时美颜，更多使用轻量 CNN/Transformer，保证 30fps。&lt;/p&gt;

&lt;h2&gt;
  
  
  4. 实时美颜管线
&lt;/h2&gt;

&lt;h3&gt;
  
  
  4.1 处理链路
&lt;/h3&gt;

&lt;p&gt;Camera 采集 -&amp;gt; 人脸检测 -&amp;gt; 关键点/姿态 -&amp;gt; 皮肤分割 -&amp;gt; 美颜 -&amp;gt; 滤镜/妆容 -&amp;gt; 渲染 -&amp;gt; 编码。&lt;/p&gt;

&lt;h3&gt;
  
  
  4.2 核心算法
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;磨皮：双边滤波、导向滤波、高频分离。保边同时去噪。&lt;/li&gt;
&lt;li&gt;美白：LUT、曲线、肤色检测，避免过曝。&lt;/li&gt;
&lt;li&gt;瘦脸/大眼：网格变形、局部 warp、三角剖分。&lt;/li&gt;
&lt;li&gt;妆容：素材图层、Alpha 混合、颜色空间转换。&lt;/li&gt;
&lt;li&gt;滤镜：3D LUT，GPU 纹理采样。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4.3 GPU 渲染
&lt;/h3&gt;

&lt;p&gt;OpenGL ES/Metal/Vulkan，FBO 乒乓，纹理复用，compute shader 做美颜。避免 CPU-GPU 回读。使用 YUV 纹理直接渲染，减少 RGB 转换。动态分辨率：低端机 720p，高端 1080p/4K。&lt;/p&gt;

&lt;h3&gt;
  
  
  4.4 性能保障
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;双缓冲/三缓冲，丢帧不阻塞。&lt;/li&gt;
&lt;li&gt;人脸跟踪：检测间隔与跟踪插值。&lt;/li&gt;
&lt;li&gt;缓存：关键点、分割 mask 跨帧复用。&lt;/li&gt;
&lt;li&gt;功耗：动态调频、温控降级。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. 亿级图像管线
&lt;/h2&gt;

&lt;h3&gt;
  
  
  5.1 上传下载
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;分片上传、断点续传、秒传、CDN 边缘缓存。&lt;/li&gt;
&lt;li&gt;协议：HTTP/2、QUIC。&lt;/li&gt;
&lt;li&gt;格式：HEIF/WebP/AVIF，硬件编解码。&lt;/li&gt;
&lt;li&gt;同步：相册增量同步、冲突解决。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5.2 云端处理
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;消息队列：Kafka/Pulsar。&lt;/li&gt;
&lt;li&gt;任务编排：Temporal/Argo。&lt;/li&gt;
&lt;li&gt;计算：K8s + GPU 池化，Serverless 图片处理。&lt;/li&gt;
&lt;li&gt;存储：对象存储、元数据 DB、冷热分层。&lt;/li&gt;
&lt;li&gt;审核：内容安全、OCR、人脸聚类。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5.3 可观测性
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Trace：OpenTelemetry。&lt;/li&gt;
&lt;li&gt;Metrics：QPS、延迟 P99、错误率、缓存命中率。&lt;/li&gt;
&lt;li&gt;Logging：结构化日志、采样。&lt;/li&gt;
&lt;li&gt;告警：SLO、容量。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. 端云协同与隐私
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;端侧优先：原始图像不出端，仅上传必要特征或用户确认内容。&lt;/li&gt;
&lt;li&gt;差分隐私/联邦学习：用于模型改进。&lt;/li&gt;
&lt;li&gt;安全：模型加密、签名、TEE。&lt;/li&gt;
&lt;li&gt;降级：云端不可用时，端侧完成基础美颜。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  7. 质量与稳定性
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;设备分级：按 RAM、CPU、GPU、NPU 分档。&lt;/li&gt;
&lt;li&gt;灰度发布：按用户/设备/地区。&lt;/li&gt;
&lt;li&gt;A/B 实验：算法效果与性能指标。&lt;/li&gt;
&lt;li&gt;崩溃/ANR：Native crash、OOM、卡顿监控。&lt;/li&gt;
&lt;li&gt;关键指标：首帧时间、帧率、内存峰值、耗电、温度、包大小。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8. 总结
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;在端侧大模型、实时美颜与亿级图像管线上，核心是端侧优先、异构加速、端云协同、数据驱动优化。通过模型压缩、GPU 渲染、分布式存储与可观测性，支撑亿级用户的稳定体验。用户可通过&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀官网&lt;/a&gt;了解产品能力，并通过&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀下载&lt;/a&gt;获取安装包，体验实时美颜与 AI 影像功能。&lt;/p&gt;

</description>
      <category>ondeviceai</category>
      <category>realtimebeauty</category>
      <category>largescaleimagepipeline</category>
      <category>edgecloudcollaboration</category>
    </item>
    <item>
      <title>美图秀秀如何把 AIGC 塞进手机？端侧推理、跨端架构与性能优化全拆解</title>
      <dc:creator>Zhang Zhemin</dc:creator>
      <pubDate>Fri, 18 Sep 2026 12:35:10 +0000</pubDate>
      <link>https://dev.to/zhang_zhemin_22ab34ce2f74/mei-tu-xiu-xiu-ru-he-ba-aigc-sai-jin-shou-ji-duan-ce-tui-li-kua-duan-jia-gou-yu-xing-neng-you-hua-quan-chai-jie-3n49</link>
      <guid>https://dev.to/zhang_zhemin_22ab34ce2f74/mei-tu-xiu-xiu-ru-he-ba-aigc-sai-jin-shou-ji-duan-ce-tui-li-kua-duan-jia-gou-yu-xing-neng-you-hua-quan-chai-jie-3n49</guid>
      <description>&lt;h1&gt;
  
  
  &lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;如何把 AIGC 塞进手机？端侧推理、跨端架构与性能优化全拆解
&lt;/h1&gt;

&lt;h2&gt;
  
  
  一、背景：AIGC 上手机，不只是把模型搬进去
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;里的 AI 消除、AI 扩图、AI 绘画、AI 写真、AI 动漫等功能，背后都依赖生成式模型。云端推理有优势：算力强、模型大、迭代快；但问题也明显：网络延迟、队列排队、推理成本、隐私顾虑。端侧推理则能带来低延迟、离线可用、数据不出端，并且能显著降低高频调用成本。难点是手机的内存、算力、功耗、发热都有硬上限。因此，&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;要把 AIGC 塞进手机，必须同时解决模型、架构、调度三类问题。&lt;/p&gt;

&lt;h2&gt;
  
  
  二、端侧推理：让扩散模型在手机上跑起来
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. 模型轻量化
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;少步采样：从 DDIM 到 LCM、Turbo、DMD 等，把 20 到 50 步压缩到 4 到 8 步。&lt;/li&gt;
&lt;li&gt;蒸馏：用大模型教小模型，保留生成质量，降低 UNet/DiT 参数量。&lt;/li&gt;
&lt;li&gt;剪枝与低秩分解：移除冗余通道，把卷积和注意力矩阵拆成低秩近似。&lt;/li&gt;
&lt;li&gt;轻量文本编码器：裁剪 CLIP，或者用更小的文本条件模块。&lt;/li&gt;
&lt;li&gt;ControlNet/Adapter 轻量化：只在关键层注入条件，避免全量复制。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. 量化与混合精度
&lt;/h3&gt;

&lt;p&gt;端侧常用 FP16、INT8，甚至混合 INT4/INT8。关键是量化感知训练，减少层间误差传播。对注意力、归一化、激活值采用动态范围校准，对权重做逐通道量化。GPU 走 FP16 和纹理，NPU 走 INT8，CPU 兜底。精度损失要在人眼可接受范围内。&lt;/p&gt;

&lt;h3&gt;
  
  
  3. 推理框架与图优化
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;这类产品通常会构建统一 C++ 推理核心，适配 NCNN、MNN、TNN、ONNX Runtime Mobile、Core ML、NNAPI、QNN、Metal、Vulkan 等后端。核心优化包括：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;算子融合：Conv+BN+ReLU、Attention 融合。&lt;/li&gt;
&lt;li&gt;常量折叠、死代码消除、内存复用。&lt;/li&gt;
&lt;li&gt;动态 shape 与分块推理：latent 分块、VAE tile、渐进式上采样。&lt;/li&gt;
&lt;li&gt;会话复用：预编译模型、缓存 kernel、减少初始化开销。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  三、跨端架构：一套核心，多端落地
&lt;/h2&gt;

&lt;p&gt;端侧 AIGC 不是单独算法模块，而是要嵌进&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;的跨端架构。典型分层：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;算法层：C++/Rust 推理核心、前后处理、图像流水线。&lt;/li&gt;
&lt;li&gt;平台层：iOS 的 Core ML/Metal/ANE，Android 的 NNAPI/QNN/GPU/Vulkan，以及 CPU fallback。&lt;/li&gt;
&lt;li&gt;业务层：Kotlin/Swift/ArkTS/Flutter/React Native 等负责 UI、任务编排、权限与存储。&lt;/li&gt;
&lt;li&gt;模型层：按需下载、版本管理、灰度发布、完整性校验、热更新。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;跨端关键是接口稳定：统一张量描述、内存布局、颜色空间、线程模型。UI 线程不做推理，推理任务进入线程池或任务图。iOS 和 Android 的 GPU 纹理、共享内存、零拷贝路径要尽量打通，减少 CPU 与 GPU 之间的搬运。&lt;/p&gt;

&lt;h2&gt;
  
  
  四、性能优化：延迟、内存、功耗三线作战
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. 延迟
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;模型预热：首次启动后异步加载常用模型。&lt;/li&gt;
&lt;li&gt;缓存会话：同一模型多次调用不重复初始化。&lt;/li&gt;
&lt;li&gt;流水线：预处理、推理、后处理、编码并行。&lt;/li&gt;
&lt;li&gt;动态降级：按设备分级，调整分辨率、步数、batch size。&lt;/li&gt;
&lt;li&gt;端云协同：端侧做预览和轻量结果，云端做高质量增强。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. 内存
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;峰值控制：推理前估算内存，必要时分块。&lt;/li&gt;
&lt;li&gt;Buffer 复用：输入、输出、中间激活复用同一块内存。&lt;/li&gt;
&lt;li&gt;及时释放：大模型按需加载，用完即卸。&lt;/li&gt;
&lt;li&gt;OOM 防护：低内存设备自动降级。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. 功耗与发热
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;大核绑定、线程亲和性、DVFS 策略。&lt;/li&gt;
&lt;li&gt;温度监控，触发降分辨率或降低步数。&lt;/li&gt;
&lt;li&gt;避免长时间占满 GPU/NPU，采用短任务切片。&lt;/li&gt;
&lt;li&gt;指标监控：首帧耗时、总耗时、内存峰值、功耗、成功率。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  五、&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;场景中的工程取舍
&lt;/h2&gt;

&lt;p&gt;以 AI 消除为例，端侧更适合小模型加局部重绘：用户涂抹 mask，模型只处理局部区域，降低计算量。AI 扩图则常用 outpainting 与分块扩散，再融合边缘。AI 写真、AI 动漫等对画质要求更高，可能采用端云协同：端侧做隐私预处理、预览和轻量推理，云端做高质量生成。用户如果希望体验最新能力，可以通过&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀官网&lt;/a&gt;了解版本，或直接进行&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀下载&lt;/a&gt;。对于高频、低延迟、隐私敏感的场景，端侧推理会越来越重要。&lt;/p&gt;

&lt;h2&gt;
  
  
  六、挑战与未来
&lt;/h2&gt;

&lt;p&gt;挑战仍然不少：NPU 碎片化、算子覆盖不全、模型版权与安全、端侧内存天花板、生成质量与速度的平衡。未来方向包括：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;统一编译与自动调优，让模型一次转换多端运行。&lt;/li&gt;
&lt;li&gt;更激进的端侧扩散模型，如 latent 一致性模型、一步生成。&lt;/li&gt;
&lt;li&gt;端云协同调度：根据网络、电量、温度动态选择执行位置。&lt;/li&gt;
&lt;li&gt;隐私计算：端侧完成敏感数据闭环。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  七、总结
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;把 AIGC 塞进手机，不是简单裁剪模型，而是端侧推理、跨端架构、性能优化三件事一起做。模型要小、要快、要稳；架构要统一、可插拔、可降级；调度要懂设备、懂功耗、懂用户场景。想体验这条技术路线落地后的效果，可以访问&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀官网&lt;/a&gt;，或通过&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀下载&lt;/a&gt;获取最新版本。端侧 AIGC 的上限，正在被一代代移动推理工程不断推高。&lt;/p&gt;

</description>
      <category>aigc</category>
      <category>ondeviceinference</category>
      <category>crossplatformarchitecture</category>
      <category>performanceoptimization</category>
    </item>
    <item>
      <title>WPS AI + 开放 API：软件工程师的下一代文档自动化与插件开发指南</title>
      <dc:creator>Zhang Zhemin</dc:creator>
      <pubDate>Fri, 18 Sep 2026 10:55:18 +0000</pubDate>
      <link>https://dev.to/zhang_zhemin_22ab34ce2f74/wps-ai-kai-fang-apiruan-jian-gong-cheng-shi-de-xia-dai-wen-dang-zi-dong-hua-yu-cha-jian-kai-fa-zhi-nan-58o1</link>
      <guid>https://dev.to/zhang_zhemin_22ab34ce2f74/wps-ai-kai-fang-apiruan-jian-gong-cheng-shi-de-xia-dai-wen-dang-zi-dong-hua-yu-cha-jian-kai-fa-zhi-nan-58o1</guid>
      <description>&lt;h1&gt;
  
  
  &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; AI + 开放 API：软件工程师的下一代文档自动化与插件开发指南
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. 为什么软件工程师要关注 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; AI 与开放 API
&lt;/h2&gt;

&lt;p&gt;在传统办公自动化中，软件工程师常面临一个尴尬问题：业务系统能生成数据，但最终交付物仍是 Word、Excel、PPT 或 PDF。&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 作为国内广泛使用的办公套件，正在通过 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; AI 和开放 API 把文档能力变成可编程基础设施。对软件工程师而言，这意味着你不再只是导出文件，而是可以像调用数据库和消息队列一样，调用文档生成、内容理解、格式转换与插件扩展能力。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; AI 的价值不只是“帮写一段话”。它可以把非结构化需求转成结构化字段，把表格数据转成报告，把会议纪要转成任务清单，把合同模板转成可审计的文档流水线。开放 API 则让这些能力进入你的 CI、CRM、ERP、低代码平台和 SaaS 产品。你可以在 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS官网&lt;/a&gt; 找到产品入口、开发者文档与最新版本；团队准备环境时，也可以通过 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS下载&lt;/a&gt; 获取稳定客户端，用于本地调试和插件联调。&lt;/p&gt;

&lt;h2&gt;
  
  
  2. 从 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS官网&lt;/a&gt; 获取开发资料与 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS下载&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;开始之前，建议先明确三件事：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;客户端版本&lt;/strong&gt;：插件 API 与 AI 能力依赖较新的 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 客户端。通过 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS官网&lt;/a&gt; 或可信渠道完成 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS下载&lt;/a&gt;，避免旧版本导致接口缺失。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;开发者文档&lt;/strong&gt;：在 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS官网&lt;/a&gt; 的开放平台/开发者中心查看 JSAPI、加载项、Webhook、OAuth 等资料。&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;账号与权限&lt;/strong&gt;：准备企业账号或个人开发者账号，确认 AI 能力、云文档、开放接口的授权范围。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;一个常见的本地开发环境包括：&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 客户端、Node.js、npm、调试浏览器、代码编辑器，以及你自己的后端服务。若你要做任务窗格插件，前端可以完全使用 Web 技术栈；若你要做文档自动化，后端可以用任意语言调用开放 API。&lt;/p&gt;

&lt;h2&gt;
  
  
  3. &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 插件开发模型：任务窗格、JSAPI 与事件
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 加载项通常采用 Web 技术开发：HTML + CSS + JavaScript/TypeScript。插件运行在任务窗格或自定义 UI 中，通过 JSAPI 与文档对象模型交互。核心能力包括：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;读取和写入选区、段落、表格、工作表、幻灯片；&lt;/li&gt;
&lt;li&gt;监听文档打开、保存、选区变化等事件；&lt;/li&gt;
&lt;li&gt;调用 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; AI 进行摘要、改写、翻译、分类、抽取；&lt;/li&gt;
&lt;li&gt;通过 fetch 调用你自己的后端 API，实现业务闭环。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;一个典型插件架构如下：&lt;/p&gt;

&lt;p&gt;&lt;code&gt;业务系统 -&amp;gt; 插件前端 -&amp;gt; [WPS](https://www.wps.com/) JSAPI -&amp;gt; 当前文档&lt;/code&gt;&lt;br&gt;
&lt;code&gt;业务系统 -&amp;gt; 插件前端 -&amp;gt; 企业后端 -&amp;gt; [WPS](https://www.wps.com/) 开放 API -&amp;gt; 云文档/导出文件&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;这种架构的关键在于：&lt;strong&gt;文档是最终界面，API 是能力层，插件是粘合剂&lt;/strong&gt;。软件工程师可以把复杂逻辑放在后端，把轻量交互留在任务窗格。&lt;/p&gt;
&lt;h2&gt;
  
  
  4. &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; AI 能做什么：从文本生成到结构化数据
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; AI 在工程场景中可以拆成几类能力：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;生成&lt;/strong&gt;：根据模板和数据生成合同、报告、周报、投标文件；&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;理解&lt;/strong&gt;：从长文档中抽取甲方、乙方、金额、日期、条款；&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;转换&lt;/strong&gt;：把自然语言转成表格字段，把表格转成叙述性报告；&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;校验&lt;/strong&gt;：检查错别字、敏感词、格式一致性、缺失字段；&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;问答&lt;/strong&gt;：基于文档内容回答用户问题，减少人工检索。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;对工程师来说，最重要的是把 AI 输出变成&lt;strong&gt;可验证的数据&lt;/strong&gt;。不要让 AI 直接改最终文档，而是让它产出 JSON 或结构化对象，再由确定性代码渲染模板。这样既保留 AI 的灵活性，又保留软件工程的可靠性。&lt;/p&gt;
&lt;h2&gt;
  
  
  5. 快速开始：最小插件示例
&lt;/h2&gt;

&lt;p&gt;假设你已经在 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS官网&lt;/a&gt; 完成 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS下载&lt;/a&gt;，并创建了一个加载项项目。下面是一个最小示例，用 JSAPI 读取当前选区文本，再调用你的后端：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;summarizeSelection&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;range&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;wps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Word&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Selection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Range&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;range&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://your-api.example.com/summarize&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;text&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="nx"&gt;range&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;如果使用 TypeScript，可以为 JSAPI 增加类型声明，降低运行时错误。建议把文档操作封装成 &lt;code&gt;DocumentService&lt;/code&gt;，把 AI 调用封装成 &lt;code&gt;AiService&lt;/code&gt;，把后端通信封装成 &lt;code&gt;ApiClient&lt;/code&gt;。这样插件不会变成难以维护的脚本堆。&lt;/p&gt;

&lt;h2&gt;
  
  
  6. 文档自动化实战：合同批量生成
&lt;/h2&gt;

&lt;p&gt;一个常见需求是：销售系统录入客户信息后，自动生成合同 Word 文档，并回传签署链接。可以按以下流水线设计：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;业务系统触发任务，发送客户、产品、金额、期限等字段；&lt;/li&gt;
&lt;li&gt;后端校验字段，必要时调用 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; AI 检查条款风险；&lt;/li&gt;
&lt;li&gt;使用模板引擎或 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放 API 渲染合同；&lt;/li&gt;
&lt;li&gt;通过 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 云文档保存，设置权限并生成分享链接；&lt;/li&gt;
&lt;li&gt;将链接和文档 ID 写回业务系统；&lt;/li&gt;
&lt;li&gt;若条款变更，使用插件在 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 客户端内高亮差异。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;关键实现点：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;模板占位符要统一，例如 &lt;code&gt;{{customerName}}&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;金额、日期、税率等字段必须由后端计算，AI 只做辅助；&lt;/li&gt;
&lt;li&gt;每次生成记录版本号、操作者、模型版本和提示词版本；&lt;/li&gt;
&lt;li&gt;对敏感合同启用脱敏日志，避免提示词泄露商业信息。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  7. 开放 API 集成：认证、限流与错误处理
&lt;/h2&gt;

&lt;p&gt;集成 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放 API 时，建议遵循以下工程规范：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;认证&lt;/strong&gt;：使用 OAuth 2.0 或平台推荐的令牌机制，不要把长期密钥写进前端插件；&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;限流&lt;/strong&gt;：为批量任务增加队列、重试和指数退避，避免触发平台限流；&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;幂等&lt;/strong&gt;：为文档生成请求设计 idempotency key，防止重复生成；&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;错误分类&lt;/strong&gt;：区分网络错误、鉴权错误、参数错误、AI 内容审核错误；&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;可观测性&lt;/strong&gt;：记录 traceId、文档 ID、用户 ID、耗时和 token 消耗。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;示例错误处理策略：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;safeCall&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;retries&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;retries&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;retries&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;注意：插件前端不应保存高权限密钥。所有敏感调用都应经过你的后端，由后端完成鉴权、审计和限流。&lt;/p&gt;

&lt;h2&gt;
  
  
  8. 调试、发布与版本管理
&lt;/h2&gt;

&lt;p&gt;插件开发中，调试体验非常重要。建议：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;使用浏览器开发者工具调试任务窗格；&lt;/li&gt;
&lt;li&gt;为 JSAPI 调用增加日志，但不要打印敏感文档内容；&lt;/li&gt;
&lt;li&gt;使用 Mock 后端模拟 AI 和开放 API 响应；&lt;/li&gt;
&lt;li&gt;为不同 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 版本建立兼容性矩阵；&lt;/li&gt;
&lt;li&gt;发布前在 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS官网&lt;/a&gt; 查看最新审核规范与接口变更。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;版本管理方面，建议采用语义化版本，并在插件中显示当前版本。若依赖 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; AI 模型，记录模型版本和提示词版本。这样当生成质量变化时，可以快速回滚。&lt;/p&gt;

&lt;h2&gt;
  
  
  9. 安全与合规建议
&lt;/h2&gt;

&lt;p&gt;文档往往包含合同、财务、人事等敏感信息。软件工程师必须把安全放在第一位：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;最小权限：插件只申请必要的作用域；&lt;/li&gt;
&lt;li&gt;数据分级：公开、内部、机密文档走不同处理链路；&lt;/li&gt;
&lt;li&gt;脱敏：发送给 AI 前移除身份证号、手机号、银行账号；&lt;/li&gt;
&lt;li&gt;加密：传输使用 HTTPS，存储使用加密桶或密钥管理服务；&lt;/li&gt;
&lt;li&gt;审计：记录谁在何时对哪份文档执行了什么操作；&lt;/li&gt;
&lt;li&gt;合规：遵守企业数据政策、隐私法规和平台开发者协议。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  10. 最佳实践清单
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;从 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS官网&lt;/a&gt; 获取权威文档，通过可信渠道完成 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS下载&lt;/a&gt;；&lt;/li&gt;
&lt;li&gt;把 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; AI 当作结构化能力，而不是魔法文本框；&lt;/li&gt;
&lt;li&gt;让 AI 输出可校验的中间数据，再由代码渲染最终文档；&lt;/li&gt;
&lt;li&gt;插件前端轻量化，核心逻辑后端化；&lt;/li&gt;
&lt;li&gt;为开放 API 增加重试、幂等、限流和审计；&lt;/li&gt;
&lt;li&gt;为提示词、模型、模板建立版本管理；&lt;/li&gt;
&lt;li&gt;在真实文档上做回归测试，覆盖表格、页眉页脚、批注和修订；&lt;/li&gt;
&lt;li&gt;关注 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放平台更新，及时适配新 API。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  11. 结语
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; AI + 开放 API 正在把文档从“文件”变成“可编程工作流”。对软件工程师而言，这是一块值得投入的新领域：你可以用熟悉的 Web 技术开发插件，用后端工程保障可靠性，用 AI 处理非结构化信息，用开放 API 连接业务系统。无论你是要构建合同自动化、报表生成、知识库问答，还是企业级文档中台，&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 都提供了可落地的技术底座。建议现在就从 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS官网&lt;/a&gt; 了解开发资料，完成 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS下载&lt;/a&gt;，跑通第一个插件和第一个 API 调用。&lt;/p&gt;

</description>
      <category>wpsai</category>
      <category>openapi</category>
      <category>documentautomation</category>
      <category>plugindevelopment</category>
    </item>
    <item>
      <title>WPS 不止是 Office：软件工程师如何用 JS 宏、开放 API 和 AI 把办公文档变成自动化流水线</title>
      <dc:creator>Zhang Zhemin</dc:creator>
      <pubDate>Fri, 18 Sep 2026 04:15:12 +0000</pubDate>
      <link>https://dev.to/zhang_zhemin_22ab34ce2f74/wps-bu-zhi-shi-officeruan-jian-gong-cheng-shi-ru-he-yong-js-hong-kai-fang-api-he-ai-ba-ban-gong-wen-dang-bian-cheng-zi-dong-hua-liu-shui-xian-34cj</link>
      <guid>https://dev.to/zhang_zhemin_22ab34ce2f74/wps-bu-zhi-shi-officeruan-jian-gong-cheng-shi-ru-he-yong-js-hong-kai-fang-api-he-ai-ba-ban-gong-wen-dang-bian-cheng-zi-dong-hua-liu-shui-xian-34cj</guid>
      <description>&lt;h1&gt;
  
  
  &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 不止是 Office：软件工程师如何用 JS 宏、开放 API 和 AI 把办公文档变成自动化流水线
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. 重新认识 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt;：从办公套件到可编程文档平台
&lt;/h2&gt;

&lt;p&gt;很多软件工程师对 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 的印象还停留在“兼容 Office 的办公软件”。但如果你从自动化角度重新审视，&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 其实提供了三层能力：客户端 JS 宏、开放 API/WebOffice、以及可与 AI 服务组合的扩展接口。它们可以让 docx、xlsx、pptx 不再只是静态文件，而是流水线中的输入、处理节点和输出。&lt;/p&gt;

&lt;p&gt;如果你想快速搭建实验环境，可以从 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS官网&lt;/a&gt; 了解版本与开发文档，再通过 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS下载&lt;/a&gt; 安装最新版 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; Office。本文不讨论安装细节，而是聚焦工程实现：如何用 JS 宏、开放 API 和 AI 把办公文档变成自动化流水线。&lt;/p&gt;

&lt;h2&gt;
  
  
  2. 环境与基础概念
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; Office 客户端：支持 JS 宏，适合本地批量处理、格式转换、报表生成。&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放 API / WebOffice：适合在线编辑、嵌入、回调、权限控制、服务端集成。&lt;/li&gt;
&lt;li&gt;AI 服务：负责摘要、分类、抽取、生成、审核，通常由后端调用。&lt;/li&gt;
&lt;li&gt;自动化触发：定时任务、文件监听、Webhook、消息队列。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;一个典型流水线可以拆成：触发 -&amp;gt; 读取/解析 -&amp;gt; AI 处理 -&amp;gt; 回写/生成 -&amp;gt; 通知/归档。&lt;/p&gt;

&lt;h2&gt;
  
  
  3. JS 宏：客户端自动化的第一站
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 的 JS 宏让熟悉 JavaScript 的工程师可以直接操作文档对象模型。常见对象包括 Application、ActiveDocument、ActiveSheet、Range、Cells、Selection 等。你可以把它理解成一套面向办公文档的 DOM。&lt;/p&gt;

&lt;h3&gt;
  
  
  3.1 批量替换文档内容
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;batchReplace&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;doc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ActiveDocument&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;finds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;旧公司名&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;旧产品名&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;replaces&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;新公司名&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;新产品名&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;finds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Find&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="nx"&gt;finds&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;replaces&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Save&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;这段代码适合合同、标书、周报模板的批量更新。工程上建议把替换规则放进配置表或 JSON 文件，而不是硬编码。&lt;/p&gt;

&lt;h3&gt;
  
  
  3.2 表格数据导出
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;exportSheetToCsv&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sheet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ActiveSheet&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;used&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;sheet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;UsedRange&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;lines&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;
  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="nx"&gt;used&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Rows&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Count&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;row&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;
    &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="nx"&gt;used&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Columns&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Count&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;row&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sheet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Cells&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nx"&gt;lines&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;row&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;C:/temp/export.csv&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fso&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ActiveXObject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Scripting.FileSystemObject&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;fso&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;CreateTextFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;lines&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fromCharCode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)));&lt;/span&gt;
  &lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Close&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;这里用 &lt;code&gt;String.fromCharCode(10)&lt;/code&gt; 避免不同平台换行符问题。生产环境要加异常处理、文件锁和日志。&lt;/p&gt;

&lt;h3&gt;
  
  
  3.3 JS 宏的适用边界
&lt;/h3&gt;

&lt;p&gt;JS 宏适合客户端、单机或受控桌面环境。它不适合直接暴露给不可信用户，也不适合作为高并发服务端方案。宏的权限、签名、版本兼容和错误恢复都需要工程化设计。&lt;/p&gt;

&lt;h2&gt;
  
  
  4. 开放 API 与 WebOffice：服务端与在线协作
&lt;/h2&gt;

&lt;p&gt;当文档需要多人协作、在线预览、服务端批量处理时，&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放 API 和 WebOffice 更合适。你可以把 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 的在线编辑能力嵌入自有系统，通过回调拿到保存、重命名、权限变更等事件，再交给后端流水线处理。&lt;/p&gt;

&lt;p&gt;典型集成模式：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;前端从业务系统申请文档访问凭证。&lt;/li&gt;
&lt;li&gt;通过 iframe 或 SDK 嵌入 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; WebOffice。&lt;/li&gt;
&lt;li&gt;用户在线编辑，&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 触发保存回调。&lt;/li&gt;
&lt;li&gt;后端拉取最新文件，执行校验、AI 分析、归档。&lt;/li&gt;
&lt;li&gt;处理结果回写文档或通知用户。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;伪代码示例：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// 前端：嵌入并监听保存事件&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://wwo.wps.cn/office/s/your-file-id&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;edit&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;onSave&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/api/wps/save&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;服务端要做签名校验、appSecret 保护、回调幂等和文件版本管理。不要把密钥写进前端代码。对于批量转换、提取文本、生成 PDF 等任务，可以封装成内部文档服务，向上层提供稳定 API。&lt;/p&gt;

&lt;h2&gt;
  
  
  5. AI 接入：让文档可理解、可生成
&lt;/h2&gt;

&lt;p&gt;AI 的价值不是简单聊天，而是嵌入流水线。常见场景：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;合同审核：抽取甲乙方、金额、付款节点、违约条款，标记风险。&lt;/li&gt;
&lt;li&gt;会议纪要：把录音转写文本整理成结构化纪要，再写入 docx。&lt;/li&gt;
&lt;li&gt;表格清洗：对行业分类、地址、公司名做标准化。&lt;/li&gt;
&lt;li&gt;报告生成：根据数据库和模板生成周报、月报、经营分析。&lt;/li&gt;
&lt;li&gt;PPT 大纲：从长文档生成演示大纲和备注。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;在 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放 API 后端或独立服务中调用大模型：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;summarize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://api.example.com/v1/chat/completions&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Authorization&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Bearer &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;AI_KEY&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;gpt-4o-mini&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;请总结以下内容：&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;text&lt;/span&gt; &lt;span class="p"&gt;}]&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;工程化建议：为 AI 调用加超时、重试、限流、脱敏和审计。对关键结论保留人工复核。把提示词版本化，把输入输出存入日志，便于回溯。&lt;/p&gt;

&lt;h2&gt;
  
  
  6. 组合成流水线：一个可落地的架构
&lt;/h2&gt;

&lt;p&gt;下面是一个合同审核流水线的简化设计：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;触发：用户在业务系统上传合同，或监听共享目录的新文件。&lt;/li&gt;
&lt;li&gt;解析：后端调用 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放 API 获取文本、结构、批注和元数据。&lt;/li&gt;
&lt;li&gt;AI 审核：调用大模型抽取关键条款，输出风险等级和建议。&lt;/li&gt;
&lt;li&gt;回写：通过 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; API 在文档中插入批注，或生成审核报告 docx。&lt;/li&gt;
&lt;li&gt;通知：邮件、企业 IM、工单系统推送结果。&lt;/li&gt;
&lt;li&gt;归档：原文件、报告、AI 日志写入对象存储和数据库。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;如果处理本地文件，可以用 JS 宏做预处理：统一格式、清理空白、拆分表格、导出中间 CSV。再由 Node.js 或 Python 服务消费这些中间产物。这样客户端宏负责“最后一公里”的文档操作，服务端负责编排、AI 和持久化。&lt;/p&gt;

&lt;h2&gt;
  
  
  7. 工程化注意事项
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;权限与安全：appSecret、访问令牌、宏签名、最小权限原则。&lt;/li&gt;
&lt;li&gt;版本兼容：不同 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 版本对 API 和宏的支持可能有差异，要建立回归测试。&lt;/li&gt;
&lt;li&gt;错误处理：超时、重试、幂等、死信队列，避免流水线卡死。&lt;/li&gt;
&lt;li&gt;性能：批量读取和批量写入，避免逐单元格操作；大文件考虑分片或异步任务。&lt;/li&gt;
&lt;li&gt;可观测性：日志、指标、链路追踪，记录文档 ID、任务 ID、AI 请求 ID。&lt;/li&gt;
&lt;li&gt;合规：敏感数据脱敏，AI 调用范围受控，保留审计记录。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8. 总结
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 不止是 Office。对软件工程师来说，它是一个可编程的文档平台：JS 宏适合客户端自动化，开放 API 和 WebOffice 适合服务端与在线协作，AI 则让文档具备理解和生成能力。三者组合，就能把合同、报表、周报、标书等办公文档变成自动化流水线。&lt;/p&gt;

&lt;p&gt;如果你准备开始，建议从 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS官网&lt;/a&gt; 获取最新开发文档，通过 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS下载&lt;/a&gt; 安装 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; Office 做本地验证，然后先用一个最小场景跑通：读取文档 -&amp;gt; AI 处理 -&amp;gt; 回写报告。跑通之后，再逐步加入队列、权限、监控和失败恢复，最终形成稳定可靠的文档自动化系统。&lt;/p&gt;

</description>
      <category>wps</category>
      <category>jsmacros</category>
      <category>openapi</category>
      <category>aiautomation</category>
    </item>
    <item>
      <title>拆解美图秀秀：亿级图像 App 的端侧 AI 推理、渲染管线与性能优化实战</title>
      <dc:creator>Zhang Zhemin</dc:creator>
      <pubDate>Fri, 18 Sep 2026 02:45:07 +0000</pubDate>
      <link>https://dev.to/zhang_zhemin_22ab34ce2f74/chai-jie-mei-tu-xiu-xiu-yi-ji-tu-xiang-app-de-duan-ce-ai-tui-li-xuan-ran-guan-xian-yu-xing-neng-you-hua-shi-zhan-58mi</link>
      <guid>https://dev.to/zhang_zhemin_22ab34ce2f74/chai-jie-mei-tu-xiu-xiu-yi-ji-tu-xiang-app-de-duan-ce-ai-tui-li-xuan-ran-guan-xian-yu-xing-neng-you-hua-shi-zhan-58mi</guid>
      <description>&lt;h1&gt;
  
  
  拆解&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;：亿级图像 App 的端侧 AI 推理、渲染管线与性能优化实战
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;作为亿级图像 App，长期面对海量设备、复杂场景与实时体验的三重约束。本文从端侧 AI 推理、渲染管线和性能优化三个维度，拆解其工程实践。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  1. 为什么端侧 AI 是必选项
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;隐私：人脸、人像、身体等图像数据不出端。&lt;/li&gt;
&lt;li&gt;延迟：实时预览要求 30fps/60fps，端云往返不可接受。&lt;/li&gt;
&lt;li&gt;成本：亿级用户如果每次编辑都上云，GPU 成本巨大。&lt;/li&gt;
&lt;li&gt;可用性：弱网、离线、海外网络差异。&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀官网&lt;/a&gt;提供的能力介绍与&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀下载&lt;/a&gt;入口，也侧面反映了端侧能力是核心竞争力。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. 端侧 AI 推理架构
&lt;/h2&gt;

&lt;h3&gt;
  
  
  2.1 模型轻量化
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;骨干网络：MobileNetV3、ShuffleNetV2、RepVGG、轻量 Transformer。&lt;/li&gt;
&lt;li&gt;训练侧：知识蒸馏、剪枝、量化感知训练、NAS。&lt;/li&gt;
&lt;li&gt;部署侧：FP16、INT8、混合量化，敏感层保留 FP16。&lt;/li&gt;
&lt;li&gt;任务：人像分割、头发分割、皮肤检测、关键点、超分、去噪、风格迁移。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2.2 推理引擎选型
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Android：NCNN、MNN、TNN、ONNX Runtime Mobile、NNAPI。&lt;/li&gt;
&lt;li&gt;iOS：Core ML、Metal Performance Shaders、BNNS。&lt;/li&gt;
&lt;li&gt;自研调度：CPU/GPU/NPU 自动回退，算子融合，内存池，纹理互操作。&lt;/li&gt;
&lt;li&gt;对&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;这类亿级图像 App，机型覆盖比单点性能更重要。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2.3 预处理与后处理
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;预处理：YUV/RGBA 转换、归一化、resize，尽量 GPU 或 NEON。&lt;/li&gt;
&lt;li&gt;后处理：mask 阈值、羽化、引导滤波、色彩空间还原。&lt;/li&gt;
&lt;li&gt;避免 CPU-GPU 频繁拷贝，使用共享纹理、AHardwareBuffer、IOSurface。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. 渲染管线拆解
&lt;/h2&gt;

&lt;h3&gt;
  
  
  3.1 管线阶段
&lt;/h3&gt;

&lt;p&gt;相机采集 -&amp;gt; SurfaceTexture -&amp;gt; 美颜/AI 推理 -&amp;gt; 滤镜 LUT -&amp;gt; 合成 -&amp;gt; 显示/编码。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;预览链路：低延迟，丢帧策略。&lt;/li&gt;
&lt;li&gt;编辑链路：高画质，分块处理。&lt;/li&gt;
&lt;li&gt;导出链路：离屏渲染，编码器同步。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3.2 图形 API
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;OpenGL ES 覆盖广，Metal/Vulkan 性能更好。&lt;/li&gt;
&lt;li&gt;离屏 FBO、双缓冲/三缓冲，避免 GPU 等待。&lt;/li&gt;
&lt;li&gt;Shader 实现磨皮、美白、锐化、肤色保护、LUT 滤镜。&lt;/li&gt;
&lt;li&gt;AI mask 作为纹理输入，与美颜结果做 alpha 混合。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3.3 视频场景
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;MediaCodec/AVFoundation 硬编硬解。&lt;/li&gt;
&lt;li&gt;零拷贝：Surface 输入输出。&lt;/li&gt;
&lt;li&gt;时间戳同步：音视频、特效帧。&lt;/li&gt;
&lt;li&gt;动态分辨率：根据设备性能调整处理尺寸。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. 性能优化实战
&lt;/h2&gt;

&lt;h3&gt;
  
  
  4.1 内存
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Bitmap/纹理池化，避免频繁创建。&lt;/li&gt;
&lt;li&gt;大图分块，按需加载。&lt;/li&gt;
&lt;li&gt;模型权重 mmap，减少启动峰值。&lt;/li&gt;
&lt;li&gt;内存水位监控，低内存降级。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4.2 线程与任务图
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;渲染线程、推理线程、IO 线程分离。&lt;/li&gt;
&lt;li&gt;任务图依赖：采集 -&amp;gt; 推理 -&amp;gt; 渲染 -&amp;gt; 编码。&lt;/li&gt;
&lt;li&gt;优先级：预览 &amp;gt; 编辑 &amp;gt; 后台导出。&lt;/li&gt;
&lt;li&gt;防止主线程阻塞，使用 Choreographer 对齐 VSync。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4.3 功耗与温控
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;动态帧率：静态场景降帧。&lt;/li&gt;
&lt;li&gt;按需推理：无人脸时跳过分割。&lt;/li&gt;
&lt;li&gt;模型缓存：相同参数复用。&lt;/li&gt;
&lt;li&gt;温控降级：NPU -&amp;gt; GPU -&amp;gt; CPU，或降低分辨率。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4.4 启动与包体
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;so 延迟加载，按功能拆分。&lt;/li&gt;
&lt;li&gt;资源预加载与懒加载结合。&lt;/li&gt;
&lt;li&gt;模型按机型下发，减少包体。&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀下载&lt;/a&gt;包体与首次启动体验需要平衡。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4.5 监控与归因
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;APM：帧率、卡顿、内存、CPU、GPU、功耗。&lt;/li&gt;
&lt;li&gt;端侧 Trace：Perfetto、Instruments。&lt;/li&gt;
&lt;li&gt;机型分级：高端、中端、低端策略。&lt;/li&gt;
&lt;li&gt;灰度与远程配置：快速回滚。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. 一个端侧美颜链路示例
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;相机输出 YUV。&lt;/li&gt;
&lt;li&gt;GPU 转 RGBA，上传纹理。&lt;/li&gt;
&lt;li&gt;轻量人脸检测，输出关键点。&lt;/li&gt;
&lt;li&gt;人像分割，输出 mask。&lt;/li&gt;
&lt;li&gt;磨皮/美白 shader，结合 mask 保护五官。&lt;/li&gt;
&lt;li&gt;LUT 滤镜，风格化。&lt;/li&gt;
&lt;li&gt;渲染到屏幕，或送入编码器。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;关键点：每一步都可降级；每一步都可并行；每一步都避免大拷贝。&lt;/p&gt;

&lt;h2&gt;
  
  
  6. 工程化与兼容性
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;多端一致：iOS、Android、HarmonyOS、Web。&lt;/li&gt;
&lt;li&gt;测试：黄金图、PSNR/SSIM、主观评测。&lt;/li&gt;
&lt;li&gt;性能基准：冷启动、首帧、导出耗时、内存峰值。&lt;/li&gt;
&lt;li&gt;隐私合规：端侧处理，数据不出端。&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀官网&lt;/a&gt;是了解版本能力与&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀下载&lt;/a&gt;的重要入口，工程上也要保证不同渠道包一致。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  7. 未来展望
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;端侧生成式 AI：Stable Diffusion、LoRA、ControlNet 轻量化。&lt;/li&gt;
&lt;li&gt;神经渲染：NeRF、3D 人像、实时风格化。&lt;/li&gt;
&lt;li&gt;NPU 普及：异构计算调度更关键。&lt;/li&gt;
&lt;li&gt;端云协同：端侧实时预览，云侧高画质增强。&lt;/li&gt;
&lt;li&gt;对&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;这类亿级图像 App，性能优化不是单点技巧，而是架构、算法、工程、数据闭环的系统工程。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8. 结语
&lt;/h2&gt;

&lt;p&gt;端侧 AI 推理、渲染管线与性能优化，决定了&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;在亿级设备上的体验下限。只有把模型、引擎、图形、内存、功耗、监控做成闭环，才能在复杂机型上稳定交付。若想体验最新端侧能力，可通过&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀官网&lt;/a&gt;了解详情，或在各大应用商店完成&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀下载&lt;/a&gt;。&lt;/p&gt;

</description>
      <category>ondeviceai</category>
      <category>renderingpipeline</category>
      <category>performanceoptimization</category>
      <category>mobileimageprocessing</category>
    </item>
    <item>
      <title>从宏到 AI Agent：用 WPS 开放平台构建企业级文档自动化流水线</title>
      <dc:creator>Zhang Zhemin</dc:creator>
      <pubDate>Thu, 17 Sep 2026 16:55:18 +0000</pubDate>
      <link>https://dev.to/zhang_zhemin_22ab34ce2f74/cong-hong-dao-ai-agentyong-wps-kai-fang-ping-tai-gou-jian-qi-ye-ji-wen-dang-zi-dong-hua-liu-shui-xian-4kee</link>
      <guid>https://dev.to/zhang_zhemin_22ab34ce2f74/cong-hong-dao-ai-agentyong-wps-kai-fang-ping-tai-gou-jian-qi-ye-ji-wen-dang-zi-dong-hua-liu-shui-xian-4kee</guid>
      <description>&lt;h1&gt;
  
  
  从宏到 AI Agent：用 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放平台构建企业级文档自动化流水线
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. 背景
&lt;/h2&gt;

&lt;p&gt;过去，企业文档自动化主要依赖宏：VBA、JSA、&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 加载项。宏能完成批量替换、格式整理、导出 PDF，但通常运行在单机，难审计、难扩展。面对合同、财报、投标、知识库等场景，宏很快遇到瓶颈。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放平台把文档能力扩展到云端：上传、下载、转换、预览、编辑、权限、Webhook、插件 JSAPI 等。结合 AI Agent，可以把“人找功能”变成“Agent 编排工具”。&lt;/p&gt;

&lt;p&gt;建议先访问 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS官网&lt;/a&gt; 了解开放平台能力，并通过 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS下载&lt;/a&gt; 安装最新版 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 客户端，保证本地 JSAPI 与云文档 API 版本匹配。&lt;/p&gt;

&lt;h2&gt;
  
  
  2. 总体架构
&lt;/h2&gt;

&lt;p&gt;流水线分五层：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;触发层：定时任务、Webhook、企业 IM、邮件、表单。&lt;/li&gt;
&lt;li&gt;接入层：&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 云文档、&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 客户端、WebOffice 嵌入页。&lt;/li&gt;
&lt;li&gt;编排层：AI Agent、工作流引擎、规则引擎。&lt;/li&gt;
&lt;li&gt;工具层：&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放平台 API、&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; JSAPI 宏、Python 服务、OCR、向量检索。&lt;/li&gt;
&lt;li&gt;数据层：对象存储、PostgreSQL、Redis、向量数据库、审计日志。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;核心原则：宏负责客户端交互和轻量格式操作，服务端负责业务逻辑、权限、审计和 AI 编排。&lt;/p&gt;

&lt;h2&gt;
  
  
  3. 从宏到 Agent 的演进
&lt;/h2&gt;

&lt;h3&gt;
  
  
  3.1 宏时代
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;优点：贴近文档对象模型，操作 Range、Table、Shape 方便。&lt;/li&gt;
&lt;li&gt;缺点：版本分散、难以测试、无法集中治理、权限粗放。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3.2 API 时代
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;通过 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放平台 REST API 管理文件、权限、转换。&lt;/li&gt;
&lt;li&gt;通过 WebOffice 嵌入实现多人协作。&lt;/li&gt;
&lt;li&gt;服务端可做模板渲染、批量导出、归档。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3.3 Agent 时代
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;LLM 负责理解意图、拆解任务、选择工具。&lt;/li&gt;
&lt;li&gt;Agent 调用 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; API 和宏工具，完成写入、修订、导出。&lt;/li&gt;
&lt;li&gt;加入 RAG、规则校验、人工审批，形成闭环。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. 关键工具设计
&lt;/h2&gt;

&lt;p&gt;把 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 能力封装成 Agent 可调用的原子工具：&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;工具&lt;/th&gt;
&lt;th&gt;作用&lt;/th&gt;
&lt;th&gt;实现&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;get_document&lt;/td&gt;
&lt;td&gt;获取文档元数据&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放平台 API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;extract_content&lt;/td&gt;
&lt;td&gt;提取正文、表格、批注&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; API + Python 解析&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;replace_placeholders&lt;/td&gt;
&lt;td&gt;替换模板变量&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; JSAPI 宏&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;update_document&lt;/td&gt;
&lt;td&gt;写回云文档&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放平台 API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;export_pdf&lt;/td&gt;
&lt;td&gt;导出 PDF&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; JSAPI 或云转换&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;audit_log&lt;/td&gt;
&lt;td&gt;记录操作&lt;/td&gt;
&lt;td&gt;服务端日志&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;工具定义要幂等，入参包含 request_id，失败可重试。&lt;/p&gt;

&lt;h2&gt;
  
  
  5. 示例：Python 调用 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放平台
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="err"&gt;[&lt;/span&gt;&lt;span class="nc"&gt;WPS&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;wps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;app_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;app_secret&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;base&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://open.wps.cn/api/v1&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;app_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;app_id&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;app_secret&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;app_secret&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_token&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;app_id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;app_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;app_secret&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;app_secret&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/oauth/token&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;raise_for_status&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;access_token&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;download_file&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;file_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;save_path&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Bearer &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;token&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/files/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;file_id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/download&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;raise_for_status&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;save_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;wb&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;生产环境需要处理 token 刷新、限流、重试和密钥托管。&lt;/p&gt;

&lt;h2&gt;
  
  
  6. 示例：&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; JSA 宏批量替换
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;batchReplaceAndExport&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;wps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;WpsApplication&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;doc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ActiveDocument&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;find&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Find&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;find&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;{{company}}&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;find&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Replacement&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;示例科技有限公司&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;find&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ExportAsFixedFormat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;output.pdf&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;宏适合做最后一公里：套模板、更新域、导出。业务规则不要写死在宏里。&lt;/p&gt;

&lt;h2&gt;
  
  
  7. AI Agent 编排
&lt;/h2&gt;

&lt;p&gt;Agent 工作流：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;接收任务：审查合同、生成周报、汇总财报。&lt;/li&gt;
&lt;li&gt;规划：确定需要的文档、工具、审批节点。&lt;/li&gt;
&lt;li&gt;执行：调用 extract_content、search_knowledge、update_document。&lt;/li&gt;
&lt;li&gt;校验：规则引擎检查金额、日期、条款。&lt;/li&gt;
&lt;li&gt;交付：导出 PDF、发送邮件、归档到 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 云文档。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;伪代码：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;run_contract_agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;doc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;wps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;download&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;file_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;extract_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;risks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;llm_review&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;rules&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;contract_rules&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;revised&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;llm_generate_revision&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;risks&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;wps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update_document&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;file_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;revised&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;wps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;export_pdf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;file_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;notify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;owner&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;risks&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  8. 企业级保障
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;权限：OAuth2、最小权限、文档水印、访问审计。&lt;/li&gt;
&lt;li&gt;安全：私有化部署、数据脱敏、密钥管理、传输加密。&lt;/li&gt;
&lt;li&gt;稳定性：幂等、重试、死信队列、限流、熔断。&lt;/li&gt;
&lt;li&gt;可观测：日志、指标、链路追踪、&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; API 配额监控。&lt;/li&gt;
&lt;li&gt;合规：操作留痕、版本快照、审批流。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  9. 典型场景
&lt;/h2&gt;

&lt;h3&gt;
  
  
  合同审查
&lt;/h3&gt;

&lt;p&gt;上传到 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 云文档，Agent 提取条款，比对模板，标注风险，生成修订版，人工审批后归档。&lt;/p&gt;

&lt;h3&gt;
  
  
  财务报表
&lt;/h3&gt;

&lt;p&gt;从 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 表格抽取数据，校验勾稽关系，生成分析文字，回写批注，导出 PDF 和 PPT。&lt;/p&gt;

&lt;h3&gt;
  
  
  知识库问答
&lt;/h3&gt;

&lt;p&gt;把 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 文档切片入向量库，Agent 检索后生成答案，并可自动创建 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 文档。&lt;/p&gt;

&lt;h2&gt;
  
  
  10. 最佳实践
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;宏只做客户端 UI 和格式操作。&lt;/li&gt;
&lt;li&gt;服务端统一封装 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放平台调用。&lt;/li&gt;
&lt;li&gt;Agent 工具原子化、可测试、可回滚。&lt;/li&gt;
&lt;li&gt;模板和业务规则分离。&lt;/li&gt;
&lt;li&gt;所有写操作记录审计日志。&lt;/li&gt;
&lt;li&gt;从 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS官网&lt;/a&gt; 获取最新 API 文档，通过 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS下载&lt;/a&gt; 更新客户端。&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  11. 结语
&lt;/h2&gt;

&lt;p&gt;从宏到 AI Agent，不是简单替换，而是把文档自动化升级为可编排、可治理、可扩展的企业能力。&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放平台提供文档底座，AI Agent 提供理解与决策，二者结合可以构建真正落地的企业级文档自动化流水线。&lt;/p&gt;

</description>
      <category>wpsopenplatform</category>
      <category>agents</category>
      <category>documentautomation</category>
      <category>enterpriseworkflow</category>
    </item>
    <item>
      <title>从 JS 宏到 AI Agent：高级软件工程师视角下的 WPS 开放生态与协同架构</title>
      <dc:creator>Zhang Zhemin</dc:creator>
      <pubDate>Thu, 17 Sep 2026 08:45:20 +0000</pubDate>
      <link>https://dev.to/zhang_zhemin_22ab34ce2f74/cong-js-hong-dao-ai-agentgao-ji-ruan-jian-gong-cheng-shi-shi-jiao-xia-de-wps-kai-fang-sheng-tai-yu-xie-tong-jia-gou-53gp</link>
      <guid>https://dev.to/zhang_zhemin_22ab34ce2f74/cong-js-hong-dao-ai-agentgao-ji-ruan-jian-gong-cheng-shi-shi-jiao-xia-de-wps-kai-fang-sheng-tai-yu-xie-tong-jia-gou-53gp</guid>
      <description>&lt;h1&gt;
  
  
  从 JS 宏到 AI Agent：高级软件工程师视角下的 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放生态与协同架构
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 已经从单机办公套件演进为可编程、可协同、可智能化的开放平台。对于高级软件工程师而言，理解 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 的扩展点、运行时边界和协同模型，比单纯会写几个 JS 宏更重要。本文从 JS 宏出发，途经加载项、云文档与协同架构，最终讨论 AI Agent 如何成为办公自动化的新编排层。需要说明的是，体验这些能力的前提是先从 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS官网&lt;/a&gt; 获取最新的 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS下载&lt;/a&gt;，并在开发者模式中启用相应接口。&lt;/p&gt;

&lt;h2&gt;
  
  
  1. &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放生态全景
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 的开放生态大致可分为四层：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;宿主层：文字、表格、演示、PDF 等应用，负责文档模型、渲染、输入输出和权限校验。&lt;/li&gt;
&lt;li&gt;扩展层：JS 宏、Web 加载项、云文档插件、&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; AI 技能。&lt;/li&gt;
&lt;li&gt;服务层：&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 云文档、开放平台 API、OAuth、协同网关、消息推送。&lt;/li&gt;
&lt;li&gt;智能层：AI Agent、大模型、向量检索、工具调用编排。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;从 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS官网&lt;/a&gt; 完成 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS下载&lt;/a&gt; 后，开发者可以直接在应用内打开 JS 宏编辑器，也可以用 Web 技术编写加载项。前者适合轻量自动化，后者适合产品化交付。&lt;/p&gt;

&lt;h2&gt;
  
  
  2. JS 宏：脚本化自动化的起点
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; JS 宏是许多工程师接触 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放能力的第一站。它基于 JavaScript，暴露文档对象模型，例如 Application、ActiveDocument、Range、Cells 等。通过宏，可以完成批量格式化、数据清洗、报表生成、文件导出等任务。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;formatReport&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;doc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ActiveDocument&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;range&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;range&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;季度报告&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;range&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Style&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;标题 1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;SaveAs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;report.docx&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;这段代码展示了宏的基本模式：获取宿主对象、操作文档模型、执行保存。它的优势是低门槛、即时反馈、无需部署。但局限也很明显：强依赖桌面宿主、进程内运行、协同能力弱、权限模型粗糙、难以做复杂 UI 和网络集成。因此，JS 宏更适合确定性、短流程的自动化。&lt;/p&gt;

&lt;h2&gt;
  
  
  3. 从宏到加载项：Web 技术栈与开放 API
&lt;/h2&gt;

&lt;p&gt;当自动化需要跨平台、可部署、可更新时，&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 加载项是更合适的选择。加载项通常由 HTML、CSS、JavaScript 构建，运行在 WebView 或类似容器中，通过桥接层与 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 宿主通信。典型能力包括：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;自定义功能区按钮和任务窗格。&lt;/li&gt;
&lt;li&gt;读写文档内容、选区、批注、书签。&lt;/li&gt;
&lt;li&gt;调用 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放平台 API，访问云文档、用户信息和协作事件。&lt;/li&gt;
&lt;li&gt;使用 OAuth 完成授权，按最小权限访问资源。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;架构上，加载项的关键是跨进程通信。宿主进程与 WebView 之间通常通过消息通道、RPC 或 SDK 封装进行交互。高级工程师需要关注：消息幂等、超时重试、版本兼容、权限声明和安全沙箱。相比 JS 宏，加载项更接近真正的软件产品，但复杂度也更高。&lt;/p&gt;

&lt;h2&gt;
  
  
  4. 协同架构：从文件锁到实时协同
&lt;/h2&gt;

&lt;p&gt;传统办公协同依赖共享盘、文件锁和人工合并，冲突频繁。&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 云文档代表的现代协同架构，通常包含以下组件：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;文档模型：将段落、表格、样式、批注等抽象为可操作对象。&lt;/li&gt;
&lt;li&gt;操作日志：记录插入、删除、格式化等增量操作。&lt;/li&gt;
&lt;li&gt;同步协议：基于 WebSocket 或长连接推送变更。&lt;/li&gt;
&lt;li&gt;冲突合并：使用 OT 或 CRDT 等算法实现最终一致性。&lt;/li&gt;
&lt;li&gt;权限与审计：控制查看、编辑、评论、分享、水印和溯源。&lt;/li&gt;
&lt;li&gt;Presence：展示在线用户、光标位置、选区范围。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;客户端侧通常维护本地副本和离线队列，网络恢复后补发操作。服务端则负责排序、合并、持久化和广播。对开发者而言，协同场景下的接口设计必须考虑幂等性、版本向量、因果顺序和冲突解决策略。否则，一个简单的批量更新就可能在多人编辑时产生覆盖。&lt;/p&gt;

&lt;h2&gt;
  
  
  5. AI Agent 时代的 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt;：从工具到智能体
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; AI 的出现，让办公自动化从“写脚本”走向“说需求”。但 AI Agent 并不是替代 JS 宏，而是站在更高层进行编排。一个典型的 Agent 架构可以拆成：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;感知：读取文档上下文、用户意图、选区、表格数据和协同状态。&lt;/li&gt;
&lt;li&gt;规划：把自然语言目标拆解为步骤，例如读取数据、清洗、生成图表、写入文档、发送邮件。&lt;/li&gt;
&lt;li&gt;工具调用：调用 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; API、JS 宏、云文档接口、邮件服务或外部系统。&lt;/li&gt;
&lt;li&gt;记忆：保存会话、组织知识、向量检索历史文档。&lt;/li&gt;
&lt;li&gt;执行：在受控沙箱中运行确定性操作，并返回结果。&lt;/li&gt;
&lt;li&gt;反思：检查输出是否符合格式、权限和业务规则。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;例如，用户说“把销售数据生成月度分析报告并发送给团队”。Agent 可以规划为：读取表格 -&amp;gt; 调用 JS 宏清洗数据 -&amp;gt; 生成图表 -&amp;gt; 写入 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 文字文档 -&amp;gt; 导出 PDF -&amp;gt; 调用邮件 API。这里 LLM 负责规划和自然语言理解，JS 宏负责精确、可重复的文档操作，&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 云 API 负责协同与分发。两者是互补关系。&lt;/p&gt;

&lt;h2&gt;
  
  
  6. 高级软件工程师的实践建议
&lt;/h2&gt;

&lt;p&gt;如果你准备在 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 生态中构建系统，可以从以下角度入手：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;从 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS官网&lt;/a&gt; 获取最新 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS下载&lt;/a&gt;，确保 API 和开发者能力可用。&lt;/li&gt;
&lt;li&gt;抽象适配层，把 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; JS API 封装成领域服务，避免业务代码直接依赖宿主对象。&lt;/li&gt;
&lt;li&gt;事件驱动设计，监听文档打开、保存、选区变化、协同变更等事件。&lt;/li&gt;
&lt;li&gt;协同兼容，所有写操作尽量幂等，并携带版本或操作 ID。&lt;/li&gt;
&lt;li&gt;AI 集成采用工具调用 schema，明确输入输出、权限和失败回退。&lt;/li&gt;
&lt;li&gt;性能优化关注跨进程 RPC、批量操作、缓存和懒加载。&lt;/li&gt;
&lt;li&gt;测试覆盖模拟宿主、契约测试、协同操作回放和权限边界。&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  7. 未来展望
&lt;/h2&gt;

&lt;p&gt;从 JS 宏到加载项，再到云协同与 AI Agent，&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放生态正在形成一条清晰的演进路径：个人自动化 -&amp;gt; 团队协同 -&amp;gt; 组织智能。未来可能出现更多标准化工具调用协议、多 Agent 协作框架，以及面向文档、表格、演示、审批的垂直智能体。安全、权限、审计和可观测性会成为规模化落地的关键。&lt;/p&gt;

&lt;h2&gt;
  
  
  结论
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 不只是一个办公软件，更是一个可编程、可协同、可智能化的平台。对高级软件工程师来说，JS 宏是理解宿主模型的入口，加载项和开放 API 是产品化手段，协同架构是分布式系统问题，AI Agent 则是新一代编排层。通过 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS官网&lt;/a&gt; 完成 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS下载&lt;/a&gt;，从宏开始，逐步构建加载项、云协同和智能体能力，是一条务实且具有扩展性的技术路线。&lt;/p&gt;

</description>
      <category>wps</category>
      <category>javascript</category>
      <category>cloudcollaboration</category>
      <category>agents</category>
    </item>
    <item>
      <title>从美图秀秀看 AIGC 应用工程化：端侧推理、实时渲染与端云协同实战</title>
      <dc:creator>Zhang Zhemin</dc:creator>
      <pubDate>Thu, 17 Sep 2026 06:15:18 +0000</pubDate>
      <link>https://dev.to/zhang_zhemin_22ab34ce2f74/cong-mei-tu-xiu-xiu-kan-aigc-ying-yong-gong-cheng-hua-duan-ce-tui-li-shi-shi-xuan-ran-yu-duan-yun-xie-tong-shi-zhan-5ef2</link>
      <guid>https://dev.to/zhang_zhemin_22ab34ce2f74/cong-mei-tu-xiu-xiu-kan-aigc-ying-yong-gong-cheng-hua-duan-ce-tui-li-shi-shi-xuan-ran-yu-duan-yun-xie-tong-shi-zhan-5ef2</guid>
      <description>&lt;h1&gt;
  
  
  从&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;看 AIGC 应用工程化：端侧推理、实时渲染与端云协同实战
&lt;/h1&gt;

&lt;h2&gt;
  
  
  一、背景：AIGC 产品化的核心矛盾
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;这类影像应用，用户期待的是按下快门或点击按钮后立刻看到效果。AIGC 模型虽然强大，但大模型推理成本高、延迟大、功耗高，直接放在端侧或全部放云端都不现实。于是，端云协同成为 AIGC 应用工程化的主线：端侧负责低延迟、隐私敏感、轻量推理与实时渲染；云端负责重生成、大模型、批量任务与模型更新。用户可以通过&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀官网&lt;/a&gt;了解功能矩阵，也可以通过应用商店完成&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀下载&lt;/a&gt;，但真正决定体验的，是背后的工程架构。&lt;/p&gt;

&lt;h2&gt;
  
  
  二、总体架构：端侧、云侧与任务编排
&lt;/h2&gt;

&lt;p&gt;一个典型的 AIGC 影像应用可以拆成四层：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;UI 与交互层：相机、相册、参数面板、进度反馈。&lt;/li&gt;
&lt;li&gt;任务编排层：识别任务类型、设备能力、网络状态、电量与温控。&lt;/li&gt;
&lt;li&gt;端侧推理层：人脸关键点、分割、超分、风格迁移、轻量扩散。&lt;/li&gt;
&lt;li&gt;实时渲染层：GPU Shader、LUT、美颜、滤镜、合成与显示。&lt;/li&gt;
&lt;li&gt;云端服务层：大模型推理、模型分发、任务队列、安全审核。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;任务编排层的核心是路由：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;任务轻量&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;设备支持&lt;/span&gt; &lt;span class="n"&gt;NPU&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;端侧推理&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;网络良好&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;任务复杂&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;云端推理&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;端侧降级或排队&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;这里的关键是让用户无感知地获得最佳效果，而不是让用户理解端侧还是云端。&lt;/p&gt;

&lt;h2&gt;
  
  
  三、端侧推理工程化
&lt;/h2&gt;

&lt;p&gt;端侧推理的目标是低延迟、低功耗、可离线。常见手段包括：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;模型压缩：INT8 量化、FP16、通道剪枝、知识蒸馏、LoRA 热插拔。&lt;/li&gt;
&lt;li&gt;推理引擎：MNN、NCNN、TFLite、ONNX Runtime、Core ML、NNAPI、Vulkan。&lt;/li&gt;
&lt;li&gt;算子优化：算子融合、内存池、NEON、GPU Delegate、NPU 调度。&lt;/li&gt;
&lt;li&gt;动态模型：根据设备评分选择不同分辨率或不同 backbone。&lt;/li&gt;
&lt;li&gt;缓存与预热：模型常驻、线程池、首次推理预热。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;伪代码：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;runLocalAIGC&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;deviceScore&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;deviceScore&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="m"&gt;0.8&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;localDiffusionHigh&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;deviceScore&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;localDiffusionLite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;localFilterOnly&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;端侧推理不是追求最大模型，而是追求在目标设备上的稳定帧率和可接受效果。&lt;/p&gt;

&lt;h2&gt;
  
  
  四、实时渲染与推理融合
&lt;/h2&gt;

&lt;p&gt;AIGC 效果最终要落到渲染管线。实时渲染通常包含：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;采集与上传：相机纹理、PBO、双缓冲。&lt;/li&gt;
&lt;li&gt;GPU 处理：OpenGL ES、Vulkan、Metal。&lt;/li&gt;
&lt;li&gt;Shader 效果：磨皮、美白、LUT、光照、风格化、贴纸。&lt;/li&gt;
&lt;li&gt;推理结果融合：分割 mask 作为 alpha，关键点驱动网格变形，深度图辅助虚化。&lt;/li&gt;
&lt;li&gt;显示与编码：帧同步、掉帧补偿、屏幕刷新率适配。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;例如，人像分割得到 mask 后，在 fragment shader 中混合背景虚化与前景美颜：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight glsl"&gt;&lt;code&gt;&lt;span class="n"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mix&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;backgroundBlur&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;foregroundBeauty&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;mask&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;实时渲染要求每帧在 16ms 或 33ms 内完成，因此推理与渲染必须异步流水线化，避免阻塞 UI 线程。&lt;/p&gt;

&lt;h2&gt;
  
  
  五、端云协同实战
&lt;/h2&gt;

&lt;p&gt;端云协同不是简单的本地失败再上云，而是按任务粒度拆分：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;端侧预处理：缩放、裁剪、人脸对齐、轻量分割。&lt;/li&gt;
&lt;li&gt;云端生成：大模型推理、AI 写真、AI 消除、画质修复。&lt;/li&gt;
&lt;li&gt;端侧后处理：超分、色彩校正、融合渲染、水印与合成。&lt;/li&gt;
&lt;li&gt;结果回传：压缩传输、断点续传、任务排队。&lt;/li&gt;
&lt;li&gt;缓存复用：相同参数与 seed 的结果缓存，降低重复成本。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;降级策略：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;弱网：只上传缩略图或关键区域。&lt;/li&gt;
&lt;li&gt;低电量：关闭云端任务，使用端侧滤镜。&lt;/li&gt;
&lt;li&gt;高温：降低分辨率与帧率。&lt;/li&gt;
&lt;li&gt;云端超时：返回端侧快速结果，后台继续生成。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;一致性策略：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;固定随机种子与模型版本。&lt;/li&gt;
&lt;li&gt;端云使用同一套色彩空间与后处理参数。&lt;/li&gt;
&lt;li&gt;对生成结果做质量评分，低于阈值则重试或降级。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  六、工程挑战与优化清单
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;包体积：模型按需下载、差分更新、资源分包。&lt;/li&gt;
&lt;li&gt;冷启动：模型预热、懒加载、线程池复用。&lt;/li&gt;
&lt;li&gt;功耗：动态帧率、NPU 优先、温控降级。&lt;/li&gt;
&lt;li&gt;兼容性：Android 碎片化、iOS Metal、不同 NPU 驱动。&lt;/li&gt;
&lt;li&gt;可观测性：埋点记录耗时、帧率、失败率、模型版本。&lt;/li&gt;
&lt;li&gt;隐私安全：敏感图像端侧处理，云端加密传输与合规审核。&lt;/li&gt;
&lt;li&gt;成本控制：动态分辨率、请求合并、缓存命中率优化。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  七、总结
&lt;/h2&gt;

&lt;p&gt;从&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;看 AIGC 应用工程化，核心不是单点模型，而是端侧推理、实时渲染与端云协同组成的系统工程。端侧保证实时与隐私，云端提供强大生成能力，任务编排负责在体验、成本与功耗之间动态平衡。对于用户而言，可以通过&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀官网&lt;/a&gt;了解最新能力，并完成&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀下载&lt;/a&gt;；对于工程师而言，真正要打磨的是每一帧的延迟、每一次推理的稳定性，以及每一次端云切换的无感体验。&lt;/p&gt;

</description>
      <category>aigc</category>
      <category>ondeviceinference</category>
      <category>realtimerendering</category>
      <category>edgecloudcollaboration</category>
    </item>
    <item>
      <title>美图秀秀如何把 AIGC 修图做到秒级？端侧推理、云边协同与工程化实战</title>
      <dc:creator>Zhang Zhemin</dc:creator>
      <pubDate>Thu, 17 Sep 2026 02:25:35 +0000</pubDate>
      <link>https://dev.to/zhang_zhemin_22ab34ce2f74/mei-tu-xiu-xiu-ru-he-ba-aigc-xiu-tu-zuo-dao-miao-ji-duan-ce-tui-li-yun-bian-xie-tong-yu-gong-cheng-hua-shi-zhan-12lj</link>
      <guid>https://dev.to/zhang_zhemin_22ab34ce2f74/mei-tu-xiu-xiu-ru-he-ba-aigc-xiu-tu-zuo-dao-miao-ji-duan-ce-tui-li-yun-bian-xie-tong-yu-gong-cheng-hua-shi-zhan-12lj</guid>
      <description>&lt;h1&gt;
  
  
  &lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;如何把 AIGC 修图做到秒级？端侧推理、云边协同与工程化实战
&lt;/h1&gt;

&lt;p&gt;当 AIGC 进入修图场景，用户对等待时间的容忍度会急剧下降。一次 AI 消除、AI 换背景、AI 超清或 AI 风格化，如果超过 3 秒，体验就会从“魔法”变成“卡顿”。&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;面对的挑战是：模型越来越大，设备越来越杂，网络不可控，但用户仍然期待点击后秒级出图。这背后不是单一模型优化，而是一套端侧推理、云边协同与工程化体系。&lt;/p&gt;

&lt;h2&gt;
  
  
  1. 秒级体验的目标拆解
&lt;/h2&gt;

&lt;p&gt;移动端 AIGC 修图的秒级，通常指端到端 1 到 2 秒内可见结果。拆开看，延迟来自：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;交互响应：点击后 100 到 200ms 内出现预览或骨架动画。&lt;/li&gt;
&lt;li&gt;端侧预处理：人脸检测、分割、关键点、mask 生成，控制在 50 到 150ms。&lt;/li&gt;
&lt;li&gt;推理阶段：端侧轻量模型 100 到 300ms，边缘节点 300 到 800ms，中心云 800ms 到 1.5s。&lt;/li&gt;
&lt;li&gt;后处理与渲染：融合、调色、超分、纹理恢复，控制在 100 到 300ms。&lt;/li&gt;
&lt;li&gt;网络与排队：弱网、高峰、冷启动是最大变量。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;因此，&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;不能只靠云，也不能把所有大模型塞进手机。更合理的路径是：高频、轻量、隐私敏感的能力端侧闭环；重模型、突发算力、复杂生成走云边协同；再用工程化把链路延迟、稳定性、成本压下来。&lt;/p&gt;

&lt;h2&gt;
  
  
  2. 端侧推理：让高频能力本地闭环
&lt;/h2&gt;

&lt;p&gt;端侧推理是秒级体验的第一道防线。对于 AI 美颜、去瑕疵、画质增强、轻量超分、局部修复预览，端侧可以在无网络、低延迟的前提下完成。&lt;/p&gt;

&lt;h3&gt;
  
  
  2.1 模型轻量化
&lt;/h3&gt;

&lt;p&gt;常见手段包括：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;剪枝：去掉冗余通道，降低参数量和计算量。&lt;/li&gt;
&lt;li&gt;蒸馏：用大模型指导小模型，保留关键生成能力。&lt;/li&gt;
&lt;li&gt;量化：FP16、INT8 甚至混合量化，在精度损失可控时提升速度。&lt;/li&gt;
&lt;li&gt;算子融合：Conv、BN、ReLU 融合，减少 kernel launch 和内存访问。&lt;/li&gt;
&lt;li&gt;动态 shape：根据输入分辨率选择不同分支，避免固定大 shape 浪费算力。&lt;/li&gt;
&lt;li&gt;条件缓存：对 LoRA、ControlNet、文本 embedding 等条件做缓存复用。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;在&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;的修图链路里，端侧模型通常不追求一次生成最终高清图，而是负责快速预览、mask 生成、轻量修复和结果融合。高清细节可以由后续云边协同补齐。&lt;/p&gt;

&lt;h3&gt;
  
  
  2.2 推理引擎与硬件适配
&lt;/h3&gt;

&lt;p&gt;移动端硬件碎片化严重，端侧推理需要适配多种后端：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Android：NNAPI、GPU delegate、Vulkan、OpenCL、厂商 NPU SDK。&lt;/li&gt;
&lt;li&gt;iOS：Core ML、Metal Performance Shaders、ANE。&lt;/li&gt;
&lt;li&gt;通用 fallback：CPU 算子兜底，保证不崩、不白屏。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;工程上要做到算子覆盖度检测、动态回退、内存池、零拷贝、线程调度和功耗控制。例如启动时探测设备能力，选择最优后端；NPU 不支持某算子时自动切 GPU 或 CPU；大核跑重算子，小核跑预处理，避免主线程阻塞。&lt;/p&gt;

&lt;h3&gt;
  
  
  2.3 渐进式渲染
&lt;/h3&gt;

&lt;p&gt;端侧推理最有效的体验优化之一是渐进式渲染：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;先以低分辨率生成预览，100 到 300ms 内上屏。&lt;/li&gt;
&lt;li&gt;用户看到效果后，再进行高清推理或云端精修。&lt;/li&gt;
&lt;li&gt;最终结果回来时，平滑替换预览图，减少等待焦虑。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;这种方式把“首帧可见”和“最终质量”拆开，用户感知延迟大幅降低。&lt;/p&gt;

&lt;h2&gt;
  
  
  3. 云边协同：重模型与突发算力
&lt;/h2&gt;

&lt;p&gt;端侧再强，也受限于内存、功耗和芯片差异。AIGC 修图中的大模型、复杂风格化、超高分辨率修复，仍然需要云端或边缘节点。&lt;/p&gt;

&lt;p&gt;一个典型架构分成三层：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;端侧：低延迟、轻量、隐私敏感、离线可用。&lt;/li&gt;
&lt;li&gt;边缘节点：区域就近接入，承载中量模型和冷启动加速。&lt;/li&gt;
&lt;li&gt;中心云：大模型、批量任务、复杂生成、模型训练与更新。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;请求进入时，调度器根据任务类型、设备等级、网络 RTT、边缘负载、用户优先级和成本策略做路由。轻任务直接端侧完成；中任务优先边缘；重任务回中心云。&lt;/p&gt;

&lt;p&gt;上传与传输优化同样关键：ROI 裁剪、WebP/AVIF 压缩、分片上传、差分上传、结果缓存、CDN 边缘缓存。很多时候上传时间比推理还长，只上传需要修复的区域，才能把端到端延迟打下来。&lt;/p&gt;

&lt;p&gt;云边协同最难的是体验一致性。可以采用“端侧代理模型 + 云端精修模型”的组合：端侧先跑一个轻量代理模型，快速给出近似结果；云端返回后，端侧对结果做融合、对齐和细节替换；如果云端超时，保留端侧结果，保证可用性。&lt;/p&gt;

&lt;h2&gt;
  
  
  4. 工程化实战：从模型到上线
&lt;/h2&gt;

&lt;p&gt;秒级体验不是实验室指标，而是线上系统工程。&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;这类产品需要把模型、端、边、云、发布、监控串成流水线。&lt;/p&gt;

&lt;h3&gt;
  
  
  4.1 模型仓库与多后端编译
&lt;/h3&gt;

&lt;p&gt;建议以 ONNX 或统一中间表示为源，向不同后端编译：端侧 Core ML、NNAPI、TensorRT、MNN、TFLite；边缘 TensorRT、OpenVINO、ONNX Runtime；中心云 TensorRT、PyTorch、自研推理服务。每个模型版本都要记录输入输出、预处理、后处理、量化参数、算子兼容性、设备白名单。&lt;/p&gt;

&lt;h3&gt;
  
  
  4.2 真实设备压测
&lt;/h3&gt;

&lt;p&gt;模拟器不够，必须上真机农场。关键指标包括：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;延迟：P50、P95、P99，而不只是平均值。&lt;/li&gt;
&lt;li&gt;内存峰值：避免 OOM 和后台被杀。&lt;/li&gt;
&lt;li&gt;温度与耗电：连续修图 10 分钟是否降频。&lt;/li&gt;
&lt;li&gt;首次加载：模型下载、解压、初始化时间。&lt;/li&gt;
&lt;li&gt;弱网表现：高 RTT、丢包、切换网络。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;只有把 P99 压下来，用户才真正觉得“秒级”。&lt;/p&gt;

&lt;h3&gt;
  
  
  4.3 灰度发布与降级
&lt;/h3&gt;

&lt;p&gt;AIGC 模型更新风险高，需要按设备、地区、用户分桶灰度；模型分包下发，支持增量更新；异常自动回滚，保留上一稳定版本；多级降级：端侧失败走边缘，边缘失败走中心，中心失败走传统滤镜；同时用埋点和 TraceId 做从点击到出图的全链路追踪。&lt;/p&gt;

&lt;h2&gt;
  
  
  5. 关键优化：把 AIGC 修图压到秒级
&lt;/h2&gt;

&lt;p&gt;扩散模型通常需要多步采样。要秒级，必须减少步数：使用 LCM、Turbo、DMD 等少步采样方法；将大模型蒸馏到 1 到 4 步；在潜空间低分辨率生成，再做超分和细节恢复；对条件分支做缓存，避免重复编码。&lt;/p&gt;

&lt;p&gt;云端推理服务要处理高并发，可以引入动态批处理、优先级队列、抢占与超时、GPU/CPU/NPU 异构并行、KV Cache 与特征缓存。端侧和云端结果也可以融合：端侧生成 mask 和低清结果，云端只做 ROI 精修；端侧负责色彩、亮度、基础美颜，云端负责生成式纹理；云端返回 alpha、mask、残差，端侧做轻量融合。&lt;/p&gt;

&lt;h2&gt;
  
  
  6. 一次 AI 消除请求的秒级路径
&lt;/h2&gt;

&lt;p&gt;假设用户完成&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀下载&lt;/a&gt;并打开应用，导入一张照片，使用 AI 消除功能：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;端侧检测：人脸、物体、语义分割，生成候选 mask，约 80ms。&lt;/li&gt;
&lt;li&gt;用户涂抹：端侧实时扩展 mask，显示预览，约 30ms。&lt;/li&gt;
&lt;li&gt;端侧代理模型：低分辨率修复，快速上屏，约 200ms。&lt;/li&gt;
&lt;li&gt;任务路由：网络良好且边缘有容量，发送 ROI 到边缘节点。&lt;/li&gt;
&lt;li&gt;边缘推理：中量修复模型生成结果，约 500ms。&lt;/li&gt;
&lt;li&gt;结果回传：压缩图回端，端侧融合与细节恢复，约 150ms。&lt;/li&gt;
&lt;li&gt;最终替换：高清结果平滑替换预览，整体约 1 秒左右。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;如果边缘拥塞，则回中心云；如果网络弱，则保留端侧结果并提示可稍后高清。用户始终有反馈，不会卡死。&lt;/p&gt;

&lt;h2&gt;
  
  
  7. 总结
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;把 AIGC 修图做到秒级，靠的不是单点模型加速，而是端侧推理、云边协同与工程化的组合拳：端侧负责低延迟、高频、隐私敏感能力；云边协同负责重模型、突发算力和高质量生成；工程化负责模型编译、灰度、监控、降级和成本控制；体验上采用渐进式渲染和端云融合，让首帧先到、高清后到。&lt;/p&gt;

&lt;p&gt;如果你想体验这些 AIGC 修图能力，可以通过&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀官网&lt;/a&gt;了解产品信息，完成&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀下载&lt;/a&gt;后，在手机端尝试 AI 消除、AI 超清、AI 风格化等功能。秒级体验的背后，是一整套从芯片到云端的系统优化。&lt;/p&gt;

</description>
      <category>aigc</category>
      <category>ondeviceinference</category>
      <category>cloudedgecollaboration</category>
      <category>lowlatencyoptimization</category>
    </item>
    <item>
      <title>从 VBA 到 AI Agent：用 WPS 开放平台、JS 宏与 WebOffice API 构建下一代办公自动化工作流</title>
      <dc:creator>Zhang Zhemin</dc:creator>
      <pubDate>Thu, 17 Sep 2026 00:15:04 +0000</pubDate>
      <link>https://dev.to/zhang_zhemin_22ab34ce2f74/cong-vba-dao-ai-agentyong-wps-kai-fang-ping-tai-js-hong-yu-weboffice-api-gou-jian-xia-dai-ban-gong-zi-dong-hua-gong-zuo-liu-d0p</link>
      <guid>https://dev.to/zhang_zhemin_22ab34ce2f74/cong-vba-dao-ai-agentyong-wps-kai-fang-ping-tai-js-hong-yu-weboffice-api-gou-jian-xia-dai-ban-gong-zi-dong-hua-gong-zuo-liu-d0p</guid>
      <description>&lt;h1&gt;
  
  
  从 VBA 到 AI Agent：用 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放平台、JS 宏与 WebOffice API 构建下一代办公自动化工作流
&lt;/h1&gt;

&lt;p&gt;过去二十年，VBA 是企业办公自动化的默认答案。但随着 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放平台、JS 宏和 WebOffice API 的成熟，我们有机会把脚本升级为可维护、可协作、可智能决策的 AI Agent 工作流。本文从工程视角拆解迁移路径，并给出可落地的架构与代码。&lt;/p&gt;

&lt;h2&gt;
  
  
  1. 为什么 VBA 不够用了
&lt;/h2&gt;

&lt;p&gt;VBA 优点：成熟、直接、能操作文档对象模型。局限：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;运行时绑定桌面客户端，难以云端化&lt;/li&gt;
&lt;li&gt;代码分散在文档中，版本管理困难&lt;/li&gt;
&lt;li&gt;跨平台与多端协同弱&lt;/li&gt;
&lt;li&gt;难以安全接入大模型与外部 API&lt;/li&gt;
&lt;li&gt;事件驱动和异步能力有限&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;而 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 生态提供了更现代的替代：JS 宏在客户端内运行，&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放平台提供云文档、权限、事件回调，WebOffice API 则把文档能力嵌入 Web 应用。&lt;/p&gt;

&lt;h2&gt;
  
  
  2. &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; JS 宏：从 Sub 到 async/await
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; JS 宏使用 JavaScript 语法操作文档。相比 VBA，它天然支持模块化、Promise、JSON、fetch（视环境）等能力。你可以从 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS官网&lt;/a&gt; 获取最新版 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt;，完成 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS下载&lt;/a&gt; 后启用 JS 宏。&lt;/p&gt;

&lt;p&gt;简单示例：读取表格并生成汇总。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// [WPS](https://www.wps.com/) JS 宏示例：遍历工作表并统计&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;summarize&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sheet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ActiveSheet&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;used&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;sheet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;UsedRange&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="nx"&gt;used&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Rows&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Count&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;sheet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Cells&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;Value2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;number&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;total&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nx"&gt;sheet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Cells&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;used&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Rows&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Count&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;Value2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;total&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;total&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;这段代码可以在 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 表格中直接运行。实际工程中，建议把业务逻辑拆成多个 js 模块，通过 &lt;code&gt;import&lt;/code&gt; 或统一入口函数加载。&lt;/p&gt;

&lt;h2&gt;
  
  
  3. &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放平台与 WebOffice API
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放平台提供身份认证、云文档、文件管理、事件订阅、Webhook 等能力。WebOffice API 则允许你在浏览器中嵌入在线文档，并调用文档对象模型。&lt;/p&gt;

&lt;p&gt;典型架构：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;前端通过 WebOffice API 加载云文档&lt;/li&gt;
&lt;li&gt;后端通过 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放平台获取 access_token&lt;/li&gt;
&lt;li&gt;业务服务订阅文档事件，如保存、审批、评论&lt;/li&gt;
&lt;li&gt;AI Agent 通过函数调用读写文档、生成内容、触发流程&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;示例：WebOffice 初始化。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;'weboffice-container'&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;'https://your-wps-open-platform-sdk.js'&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;WebOfficeSDK&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;init&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;officeType&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;w&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;appId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;your-app-id&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;fileId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;your-file-id&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;token&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;your-token&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;container&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;weboffice-container&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;注意：生产环境不要在前端硬编码 token，应由后端签发短期凭证。&lt;/p&gt;

&lt;h2&gt;
  
  
  4. 构建 AI Agent 工作流
&lt;/h2&gt;

&lt;p&gt;下一代办公自动化不是“写死脚本”，而是“目标驱动 + 工具调用”。Agent 负责理解意图、拆解任务、调用工具、校验结果。&lt;/p&gt;

&lt;p&gt;推荐分层：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;交互层：&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 客户端、WebOffice 页面、聊天入口&lt;/li&gt;
&lt;li&gt;Agent 层：意图识别、计划、记忆、函数调用&lt;/li&gt;
&lt;li&gt;工具层：JS 宏、WebOffice API、&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放平台 API、数据库、邮件&lt;/li&gt;
&lt;li&gt;文档层：&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 云文档、本地文件、表格、演示、PDF&lt;/li&gt;
&lt;li&gt;安全层：OAuth、审计、权限、脱敏&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;一个 Agent 工具定义示例（伪 JSON Schema）：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;tools&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;readSheetRange&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;读取 [WPS](https://www.wps.com/) 表格指定区域&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;parameters&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;object&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;fileId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="na"&gt;range&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;fileId&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;range&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;writeSheetRange&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;写入 [WPS](https://www.wps.com/) 表格指定区域&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;parameters&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;object&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;fileId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="na"&gt;range&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="na"&gt;values&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;array&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;fileId&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;range&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;values&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agent 执行流程：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;用户说：把本周销售表汇总，并生成周报。&lt;/li&gt;
&lt;li&gt;Agent 调用 &lt;code&gt;readSheetRange&lt;/code&gt; 读取数据。&lt;/li&gt;
&lt;li&gt;Agent 调用计算工具聚合。&lt;/li&gt;
&lt;li&gt;Agent 调用 WebOffice API 写入汇总表。&lt;/li&gt;
&lt;li&gt;Agent 调用 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放平台 API 创建新文档或发送通知。&lt;/li&gt;
&lt;li&gt;Agent 返回结果并记录审计日志。&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  5. 从 VBA 迁移到 JS 宏的工程策略
&lt;/h2&gt;

&lt;p&gt;不要一次性重写。建议：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;先封装 VBA 中的稳定函数为 JS 宏工具&lt;/li&gt;
&lt;li&gt;把硬编码路径改为配置项&lt;/li&gt;
&lt;li&gt;把同步逻辑改为异步任务&lt;/li&gt;
&lt;li&gt;引入单元测试与日志&lt;/li&gt;
&lt;li&gt;用 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放平台事件替代轮询&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;迁移对照：&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;VBA&lt;/th&gt;
&lt;th&gt;
&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; JS 宏 / WebOffice&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sub / Function&lt;/td&gt;
&lt;td&gt;function / async function&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ThisWorkbook&lt;/td&gt;
&lt;td&gt;Application.ActiveWorkbook&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Range('A1')&lt;/td&gt;
&lt;td&gt;sheet.Range('A1')&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MsgBox&lt;/td&gt;
&lt;td&gt;Application.Alert 或前端 UI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;On Error&lt;/td&gt;
&lt;td&gt;try/catch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;本地文件&lt;/td&gt;
&lt;td&gt;云文档 + 开放平台&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  6. 安全与合规清单
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;最小权限：只申请必要的云文档 scope&lt;/li&gt;
&lt;li&gt;短期 token：避免长期凭证泄露&lt;/li&gt;
&lt;li&gt;审计日志：记录 Agent 的每次工具调用&lt;/li&gt;
&lt;li&gt;数据脱敏：敏感字段进入模型前先过滤&lt;/li&gt;
&lt;li&gt;人工确认：高风险写操作需要二次确认&lt;/li&gt;
&lt;li&gt;版本回滚：保留文档历史版本&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  7. 性能与部署建议
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;批量读写：减少跨进程或跨网络调用&lt;/li&gt;
&lt;li&gt;缓存元数据：文件 ID、表结构、权限&lt;/li&gt;
&lt;li&gt;异步队列：耗时任务交给消息队列&lt;/li&gt;
&lt;li&gt;可观测性：指标、日志、链路追踪&lt;/li&gt;
&lt;li&gt;多端一致：WebOffice 与 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 客户端行为对齐&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8. 结语
&lt;/h2&gt;

&lt;p&gt;从 VBA 到 AI Agent，不是简单换语言，而是把办公自动化从“宏”升级为“工作流平台”。&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放平台、JS 宏与 WebOffice API 提供了连接文档、数据和智能决策的桥梁。如果你准备开始，建议先访问 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS官网&lt;/a&gt; 完成 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS下载&lt;/a&gt;，再从一个小的 JS 宏工具开始，逐步接入 Agent 工具层。下一代办公自动化，属于能理解目标并可靠执行的工作流。&lt;/p&gt;

</description>
      <category>vba</category>
      <category>agents</category>
      <category>wpsopenplatform</category>
      <category>webofficeapi</category>
    </item>
    <item>
      <title>美图秀秀的端侧 AI 修图实战：模型量化、异构计算与跨端渲染性能优化</title>
      <dc:creator>Zhang Zhemin</dc:creator>
      <pubDate>Wed, 16 Sep 2026 20:46:13 +0000</pubDate>
      <link>https://dev.to/zhang_zhemin_22ab34ce2f74/mei-tu-xiu-xiu-de-duan-ce-ai-xiu-tu-shi-zhan-mo-xing-liang-hua-yi-gou-ji-suan-yu-kua-duan-xuan-ran-xing-neng-you-hua-121n</link>
      <guid>https://dev.to/zhang_zhemin_22ab34ce2f74/mei-tu-xiu-xiu-de-duan-ce-ai-xiu-tu-shi-zhan-mo-xing-liang-hua-yi-gou-ji-suan-yu-kua-duan-xuan-ran-xing-neng-you-hua-121n</guid>
      <description>&lt;h1&gt;
  
  
  &lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;的端侧 AI 修图实战：模型量化、异构计算与跨端渲染性能优化
&lt;/h1&gt;

&lt;p&gt;端侧 AI 修图正在成为影像类应用的核心竞争力。对&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;而言，用户期待的是即拍即修、离线可用、隐私不出端、效果自然且耗电可控。本文从工程视角拆解&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;在端侧 AI 修图中的关键路径：模型量化、异构计算与跨端渲染性能优化。无论用户从&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀官网&lt;/a&gt;了解功能，还是通过&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀下载&lt;/a&gt;安装到手机，端侧推理质量都会直接决定修图体验。&lt;/p&gt;

&lt;h2&gt;
  
  
  1. 为什么端侧 AI 修图难做
&lt;/h2&gt;

&lt;p&gt;端侧环境有三个约束：算力碎片化、内存带宽有限、功耗与温控严格。云端可以堆 GPU，端侧却要在中低端机型上跑人像分割、超分、去噪、肤色美化、妆容迁移等模型。&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;需要覆盖 Android 与 iOS，硬件横跨高通、联发科、麒麟、苹果 A/M 系列，图形 API 又包括 Vulkan、Metal、OpenGL ES。因此，端侧 AI 修图不是单点模型问题，而是模型、调度、渲染、内存、功耗的系统工程。&lt;/p&gt;

&lt;h2&gt;
  
  
  2. 端侧 AI 修图整体架构
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;的端侧修图管线可以抽象为四层：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;模型层：按功能拆分为检测、分割、增强、生成等模型，支持 FP16、INT8 与混合精度版本。&lt;/li&gt;
&lt;li&gt;推理层：封装 TFLite、NNAPI、QNN、Core ML、MNN、ONNX Runtime 等后端，统一算子与张量接口。&lt;/li&gt;
&lt;li&gt;调度层：根据设备能力、温度、电量、分辨率选择 CPU、GPU、NPU 或 DSP。&lt;/li&gt;
&lt;li&gt;渲染层：通过统一渲染抽象对接 Vulkan、Metal、OpenGL ES，完成纹理上传、着色器执行、帧图合成与显示。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这套架构的目标是：同一套业务代码，在不同设备上自动选择最优路径，并在性能不足时无感降级。&lt;/p&gt;

&lt;h2&gt;
  
  
  3. 模型量化：精度、速度与包体体积的平衡
&lt;/h2&gt;

&lt;p&gt;模型量化是端侧 AI 修图的第一杠杆。以人像分割与超分为例，FP32 模型精度高，但内存占用和计算量都大。&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;通常采用以下策略：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;训练后量化 PTQ：用校准集统计激活分布，将权重和激活量化为 INT8。优点是落地快，适合检测、分割等对精度容忍度较高的模型。&lt;/li&gt;
&lt;li&gt;量化感知训练 QAT：在训练阶段插入伪量化节点，让模型学习量化误差。适合超分、肤色美化等对细节敏感的模型。&lt;/li&gt;
&lt;li&gt;混合精度：敏感层保留 FP16 或 FP32，卷积主干用 INT8；首尾层常保留高精度，减少色偏和伪影。&lt;/li&gt;
&lt;li&gt;通道级量化：对权重做 per-channel scale，减少通道间动态范围差异带来的精度损失。&lt;/li&gt;
&lt;li&gt;算子融合与常量折叠：将 Conv+BN+ReLU 融合，减少访存和调度开销。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;在&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;的工程实践中，量化不是“一压了之”。我们会为每个模型建立精度基线，包括 PSNR、SSIM、LPIPS，以及人脸区域的主观评分。只有量化后主观效果不明显下降，才允许进入&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀下载&lt;/a&gt;包或模型热更新通道。对于高端机，可以下发 FP16 模型；对于中低端机，下发 INT8 模型，从而兼顾效果与速度。&lt;/p&gt;

&lt;h2&gt;
  
  
  4. 异构计算：让 CPU、GPU、NPU 各司其职
&lt;/h2&gt;

&lt;p&gt;端侧 AI 推理不能只依赖 CPU。CPU 通用但能效比低，GPU 并行强但功耗高，NPU 性能好但算子覆盖和兼容性参差。&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;的异构调度通常遵循以下原则：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;算子级回退：优先把 Conv、DepthwiseConv、MatMul 等大算子交给 NPU/GPU，把 Shape、Gather、NonMaxSuppression 等碎片化算子留在 CPU。&lt;/li&gt;
&lt;li&gt;后端优先级：Android 上优先尝试 NNAPI、QNN、MNN Vulkan/OpenCL；iOS 上优先 Core ML 与 Metal Performance Shaders。&lt;/li&gt;
&lt;li&gt;零拷贝与共享内存：通过 DMA-BUF、ION、Metal texture 与 CVPixelBuffer，让相机、推理、渲染共享纹理，减少 GPU-CPU 拷贝。&lt;/li&gt;
&lt;li&gt;异步流水线：把预处理、推理、后处理、渲染拆成多 stage，利用双缓冲和三缓冲隐藏延迟。&lt;/li&gt;
&lt;li&gt;动态降级：当温度超过阈值或帧率不足时，自动降低模型分辨率、跳帧或切换轻量模型。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;举例来说，一张人像照片进入&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;后，人脸检测可以在 CPU 上快速完成，人像分割交给 NPU，超分与去噪交给 GPU，最终美颜滤镜在渲染管线中完成。这样既利用了 NPU 的能效，又避免了 GPU 频繁切换带来的带宽浪费。&lt;/p&gt;

&lt;h2&gt;
  
  
  5. 跨端渲染性能优化：从纹理到帧图
&lt;/h2&gt;

&lt;p&gt;跨端渲染是端侧修图的另一条主线。&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;需要同时处理相机预览、图片编辑、视频美颜等场景，渲染压力差异很大。优化手段包括：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;统一渲染抽象：上层业务不直接调用 Vulkan、Metal 或 OpenGL ES，而是通过 RenderGraph 描述依赖关系，由后端生成具体命令。&lt;/li&gt;
&lt;li&gt;着色器预编译与缓存：将美颜、滤镜、磨皮、锐化等着色器提前编译，按设备 GPU 型号缓存 SPIR-V、Metal Library 或 GL Program。&lt;/li&gt;
&lt;li&gt;纹理压缩：使用 ASTC、ETC2、PVRTC 减少显存占用和带宽；对中间帧图使用合适格式，避免每帧重新上传。&lt;/li&gt;
&lt;li&gt;帧图复用：建立纹理池与帧图池，复用离屏 RenderTarget，减少分配与回收导致的卡顿。&lt;/li&gt;
&lt;li&gt;多线程渲染：将 UI 线程、RenderThread、算法线程解耦，使用 Fence 与 Semaphore 同步 GPU 与 CPU。&lt;/li&gt;
&lt;li&gt;动态分辨率：预览场景优先保证 30/60 FPS，编辑场景优先保证输出画质；根据设备等级动态调整中间帧分辨率。&lt;/li&gt;
&lt;li&gt;色彩管理：统一 sRGB、Display P3 与线性空间，避免滤镜叠加后偏色。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;在跨端场景中，最怕的是“算法等渲染、渲染等算法”。&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;通过流水线并行，让第 N 帧渲染时，第 N+1 帧已经在推理，从而提升整体吞吐。对于视频美颜，还会采用 GPU 端轻量美化 + NPU 端关键点检测的组合，减少每帧全量推理。&lt;/p&gt;

&lt;h2&gt;
  
  
  6. 实战指标与案例
&lt;/h2&gt;

&lt;p&gt;以一个中端 Android 机型为例，输入 1080P 人像照片，目标是在 300ms 内完成美颜、磨皮、亮眼、瘦脸与背景虚化。优化前：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;人脸检测 80ms，人像分割 220ms，超分 350ms，渲染 120ms，总耗时约 770ms。&lt;/li&gt;
&lt;li&gt;内存峰值 420MB，连续编辑 10 分钟后机身温度上升 7℃。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;优化后：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;人脸检测 INT8 化，耗时降至 35ms。&lt;/li&gt;
&lt;li&gt;人像分割使用 NPU + 通道级量化，耗时降至 90ms。&lt;/li&gt;
&lt;li&gt;超分改为 GPU FP16，并对非人脸区域降分辨率处理，耗时降至 160ms。&lt;/li&gt;
&lt;li&gt;渲染侧使用纹理池与帧图复用，耗时降至 60ms。&lt;/li&gt;
&lt;li&gt;总耗时约 345ms，内存峰值 280MB，温升降低约 40%。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这类优化不是一次性的。&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;会通过灰度发布、AB 测试和端侧埋点，持续观察不同机型、不同系统版本下的崩溃率、耗时分布与功耗曲线。用户从&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀官网&lt;/a&gt;获取&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀下载&lt;/a&gt;链接后，安装包中的模型版本与热更新策略也会影响首次体验。因此，模型压缩、下载策略与端侧缓存必须协同设计。&lt;/p&gt;

&lt;h2&gt;
  
  
  7. 工程化与稳定性
&lt;/h2&gt;

&lt;p&gt;端侧 AI 修图的稳定性同样重要：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;设备白名单与黑名单：对已知有问题的驱动或 NPU 固件，直接走 CPU/GPU 回退。&lt;/li&gt;
&lt;li&gt;模型热更新：按功能模块拆包，支持增量下载与校验，避免每次更新都发完整安装包。&lt;/li&gt;
&lt;li&gt;降级策略：当推理失败、内存不足或温度过高时，自动关闭高阶效果，保证基础修图可用。&lt;/li&gt;
&lt;li&gt;日志与指标：记录模型版本、后端类型、算子回退、首帧耗时、每帧耗时、内存峰值与崩溃堆栈。&lt;/li&gt;
&lt;li&gt;隐私保护：端侧处理原始图像，仅上传脱敏后的统计信息，符合隐私合规要求。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8. 总结
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;的端侧 AI 修图实战，本质是在效果、速度、功耗与兼容性之间寻找最优解。模型量化让大模型跑得动，异构计算让 CPU、GPU、NPU 协同工作，跨端渲染优化让每一帧都能稳定输出。对于用户而言，这些技术最终体现为：打开&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀&lt;/a&gt;，选择照片，几秒内获得自然、清晰、稳定的修图效果。无论是通过&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀官网&lt;/a&gt;了解能力，还是通过&lt;a href="https://pc.meitu.com/" rel="noopener noreferrer"&gt;美图秀秀下载&lt;/a&gt;安装体验，端侧 AI 修图都将是影像应用持续演进的关键方向。&lt;/p&gt;

</description>
      <category>ondeviceai</category>
      <category>modelquantization</category>
      <category>heterogeneouscomputing</category>
      <category>mobilerenderingoptimization</category>
    </item>
    <item>
      <title>软件工程师的 WPS 进阶指南：用 JS 宏、开放 API 与 AI 打造文档自动化流水线</title>
      <dc:creator>Zhang Zhemin</dc:creator>
      <pubDate>Wed, 16 Sep 2026 20:45:23 +0000</pubDate>
      <link>https://dev.to/zhang_zhemin_22ab34ce2f74/ruan-jian-gong-cheng-shi-de-wps-jin-jie-zhi-nan-yong-js-hong-kai-fang-api-yu-ai-da-zao-wen-dang-zi-dong-hua-liu-shui-xian-317n</link>
      <guid>https://dev.to/zhang_zhemin_22ab34ce2f74/ruan-jian-gong-cheng-shi-de-wps-jin-jie-zhi-nan-yong-js-hong-kai-fang-api-yu-ai-da-zao-wen-dang-zi-dong-hua-liu-shui-xian-317n</guid>
      <description>&lt;h1&gt;
  
  
  软件工程师的 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 进阶指南：用 JS 宏、开放 API 与 AI 打造文档自动化流水线
&lt;/h1&gt;

&lt;h2&gt;
  
  
  0. 为什么是 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt;？
&lt;/h2&gt;

&lt;p&gt;作为软件工程师，文档自动化不只是 Office 的替代。&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 在兼容性、JS 宏、开放 API、跨端能力上提供了可编程入口。从 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS官网&lt;/a&gt; 完成 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS下载&lt;/a&gt; 后，开启开发者模式，就能把重复的合同、周报、报表、发票、标书生成流程工程化。&lt;/p&gt;

&lt;h2&gt;
  
  
  1. 总体架构：一条可观测的文档流水线
&lt;/h2&gt;

&lt;p&gt;触发层 -&amp;gt; 数据层 -&amp;gt; 模板层 -&amp;gt; 渲染层 -&amp;gt; AI 层 -&amp;gt; 审核层 -&amp;gt; 分发层。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;触发层：Webhook、定时任务、CI/CD、表单。&lt;/li&gt;
&lt;li&gt;数据层：MySQL/PostgreSQL/Redis/S3。&lt;/li&gt;
&lt;li&gt;模板层：&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 文档、XLSX、PPTX。&lt;/li&gt;
&lt;li&gt;渲染层：&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; JS 宏、&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放 API。&lt;/li&gt;
&lt;li&gt;AI 层：LLM 摘要、分类、风险审查、字段抽取。&lt;/li&gt;
&lt;li&gt;审核层：规则引擎 + 人工复核。&lt;/li&gt;
&lt;li&gt;分发层：PDF、邮件、OA、归档。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. 环境准备
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; Office：从 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS官网&lt;/a&gt; 获取最新版 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS下载&lt;/a&gt;，安装后开启开发者选项。&lt;/li&gt;
&lt;li&gt;开启 JS 宏：工具 -&amp;gt; 开发工具 -&amp;gt; JS 宏编辑器。&lt;/li&gt;
&lt;li&gt;Node.js / Python 用于调度和 API。&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放平台账号，申请 AppID/AppSecret。&lt;/li&gt;
&lt;li&gt;可选：Git、Docker、RabbitMQ、MinIO。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. JS 宏：把 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 变成可编程文档引擎
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; JS 宏基于 JavaScript，可操作 Application、ActiveDocument、Range、Tables、Shapes、Bookmarks。示例：批量替换并导出 PDF。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;batchReplaceAndExport&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;doc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ActiveDocument&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;find&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Find&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;find&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;{{project_name}}&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;find&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Replacement&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;[WPS](https://www.wps.com/) 自动化流水线&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;find&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ExportAsFixedFormat&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;OutputFileName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;D:/out/contract.pdf&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;ExportFormat&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;17&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;类似地，可以用宏从 Excel 读取数据，批量生成 Word 合同，再写回日志表。关键是：把宏当成函数，输入 JSON，输出文件路径和状态。&lt;/p&gt;

&lt;h2&gt;
  
  
  4. 开放 API：让文档能力进入后端服务
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放 API 适合在线编辑、文件管理、权限控制、回调通知。典型流程：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;服务端创建文档，返回 file_id。&lt;/li&gt;
&lt;li&gt;前端通过 WebOffice 嵌入编辑。&lt;/li&gt;
&lt;li&gt;保存时触发回调。&lt;/li&gt;
&lt;li&gt;后端拉取版本，进入 AI 审核。&lt;/li&gt;
&lt;li&gt;审核通过后导出 PDF 并归档。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;伪代码：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;wps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;files&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;weekly-report.docx&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;folder&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/auto/reports&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;wps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;office&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getEditUrl&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;u_1001&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;permission&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;write&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;工程要点：幂等创建、令牌刷新、回调验签、限流重试、审计日志。&lt;/p&gt;

&lt;h2&gt;
  
  
  5. AI 接入：文档不只是生成，还要理解
&lt;/h2&gt;

&lt;p&gt;把 LLM 放在渲染之后、分发之前：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;字段抽取：从合同/发票提取甲乙方、金额、日期。&lt;/li&gt;
&lt;li&gt;风险审查：识别缺失条款、异常金额、前后矛盾。&lt;/li&gt;
&lt;li&gt;摘要生成：为长文生成摘要和待办。&lt;/li&gt;
&lt;li&gt;格式修复：统一标题层级、编号、术语。&lt;/li&gt;
&lt;li&gt;多语言：生成中英双语版本。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;伪代码：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;extract_text_from_wps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file_path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;请以 JSON 返回合同风险、缺失条款和修改建议：&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;llm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;invoke&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;risk_score&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;send_to_human_review&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file_path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;注意：敏感文档应做脱敏、私有化部署或使用合规模型；提示词和输出都要记录版本。&lt;/p&gt;

&lt;h2&gt;
  
  
  6. 实战：合同自动化流水线
&lt;/h2&gt;

&lt;p&gt;场景：销售提交订单 -&amp;gt; 系统生成合同 -&amp;gt; AI 审查 -&amp;gt; 法务复核 -&amp;gt; 电子签 -&amp;gt; 归档。&lt;/p&gt;

&lt;p&gt;步骤：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;监听订单事件。&lt;/li&gt;
&lt;li&gt;从数据库取客户、金额、条款。&lt;/li&gt;
&lt;li&gt;调用 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 开放 API 或 JS 宏填充模板。&lt;/li&gt;
&lt;li&gt;导出 docx/pdf。&lt;/li&gt;
&lt;li&gt;调用 AI 做风险审查。&lt;/li&gt;
&lt;li&gt;通过则发送签署，不通过则创建人工任务。&lt;/li&gt;
&lt;li&gt;归档到对象存储，记录哈希和版本。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;关键代码思路：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;模板占位符：{{customer_name}}、{{amount}}、{{sign_date}}&lt;/li&gt;
&lt;li&gt;渲染器：&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; JS 宏 / 开放 API&lt;/li&gt;
&lt;li&gt;状态机：pending -&amp;gt; generated -&amp;gt; ai_review -&amp;gt; approved -&amp;gt; signed -&amp;gt; archived&lt;/li&gt;
&lt;li&gt;幂等键：order_id + template_version&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  7. 工程化清单
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;版本控制：模板、宏、提示词全部 Git 管理。&lt;/li&gt;
&lt;li&gt;可观测性：结构化日志、指标、链路追踪。&lt;/li&gt;
&lt;li&gt;安全：最小权限、密钥管理、回调验签、宏签名。&lt;/li&gt;
&lt;li&gt;测试：模板快照测试、AI 输出 schema 校验、回归样本。&lt;/li&gt;
&lt;li&gt;容错：重试、死信队列、人工兜底。&lt;/li&gt;
&lt;li&gt;成本：批量合并、缓存、模型分级。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8. 常见坑
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;JS 宏 API 与浏览器 JS 不同，需要查 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 文档。&lt;/li&gt;
&lt;li&gt;路径分隔符、编码、字体在 Windows/Linux 有差异。&lt;/li&gt;
&lt;li&gt;开放 API 有频率限制，批量任务要排队。&lt;/li&gt;
&lt;li&gt;AI 输出不稳定，必须 JSON Schema 校验。&lt;/li&gt;
&lt;li&gt;文档宏安全策略可能阻止运行，需要企业策略配置。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  9. 结语
&lt;/h2&gt;

&lt;p&gt;对软件工程师而言，&lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS&lt;/a&gt; 不只是一个办公软件，而是一个可嵌入、可编程、可扩展的文档运行时。从 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS官网&lt;/a&gt; 获取 &lt;a href="https://www.wps.com/" rel="noopener noreferrer"&gt;WPS下载&lt;/a&gt; 并开启 JS 宏，结合开放 API 与 AI，你可以把合同、报表、周报、标书等文档流程变成可测试、可观测、可回滚的自动化流水线。下一步：选一个高频文档场景，先做最小闭环，再逐步接入 AI 审核和开放 API。&lt;/p&gt;

</description>
      <category>wps</category>
      <category>javascriptmacros</category>
      <category>openapi</category>
      <category>aiautomation</category>
    </item>
  </channel>
</rss>
