实验性项目 WorkFly 完全由 AI 生成,可能存在缺陷或错误,仅供内部测试,非用友官方产品,不代表公司立场。
开发者中心WF API

WF API

面向新小程序的原生 SDK。接口由 src/shared/wf-api.ts 的 TSDoc 自动生成,与客户端实现保持同源。

一套接口,两种调用方式

全局对象 wf 对齐微信小程序的调用习惯。异步方法接受对象入参;传回调就走回调,不传时返回 Promise。同步方法以 Sync 结尾。

Manifest v2 · 可用

全局对象 wf(对标微信 wx)。异步方法接受单个对象入参,含可选 success / fail / complete 回调;都不传时返回 Promise(wx 全兼容双模)。同步方法以 Sync 结尾。

// 回调式(微信老代码把 wx 换成 wf 即可跑) wf.request({ url, success(res) {}, fail(err) {} }) // Promise 式(现代) const res = await wf.request({ url })

wf.* 是可移植标准面;wf.bip.* 只承载用友 BIP 生态扩展。机器可读版见 /api/wf-api.json

网络请求 1

数据存储 10

剪贴板 2

界面 7

系统 / 启动 5

wf.getLaunchOptionsSync同步获取当前运行实例首次创建时的启动参数。返回值在该实例生命周期内固定;面板标签与主侧边栏实例互不共享。wf.getEnterOptionsSync同步获取宿主最近一次进入当前运行实例的参数。首次创建时与 launch options 相同;后续 deeplink、 IM 或卡片再次进入会更新它。页内 Hash 导航不会改写本值,当前页面应读取 location.hashwf.getSystemInfoSync同步获取宿主系统信息(平台、主题、版本、语言)。wf.openApp从磁贴或会话卡片打开小程序完整页面。第三方只能打开自己。wf.createAppLink为当前小程序生成可复制、可发送的标准深链。仅允许 manifest 中 shareable: true 的路由; 宿主会校验应用 id、路由和参数,不接受调用方自行指定其它应用。

BIP 扩展 2

登录 1

原生能力面 8

wf.fireworks放烟花 🎆——在小程序自己页面上叠一层透明 canvas 放一束粒子动画,动画结束自动移除。 「页内 helper」:纯本地即时视觉、零 IPC、零权限,故是 §1.2 双模调用约定的合法例外—— 就是个同步 void 调用,无回调、无 Promise。传 target 元素 / 事件则炸在其上, 不传任何定位则落在鼠标指针最近位置(无记录则视口中心)。wf.notify发一条通知(经宿主统一通知中心,受用户的通知偏好、来源开关与免打扰时段约束—— 被拦下时静默不显)。需声明 notification,首次调用由宿主询问并记住选择。wf.schedule.createTodo新建一条待办 / 日程。需声明 schedule.write,每次调用都由宿主确认。wf.ocr.recognize识别图片中的文字与二维码,返回全文、逐行包围盒与二维码内容。wf.im.getChatContext读取当前会话上下文:标识、展示名、群成员(若有)与最近消息摘要。 须从 IM 入口打开(query 带 chatId)或显式传入 chatId。wf.im.getHistory分页读取会话历史(脱敏正文),供小程序本地筛选后再喂给 AI。wf.ai.complete一次文本补全;支持 onChunk 流式渲染。wf.ai.cancel取消进行中的 complete(按 requestId)。
api · 登录

wf.login 可用

获取一次性登录 code。对齐 wx.login:小程序把 code 交给自己的服务端换取业务会话; WorkFly 不向第三方暴露 yht_access_token 等宿主凭据。 需声明 identity.login,首次调用由宿主询问用户并记住选择。

签名

login(opts?: WxCallbacks<LoginResult>): Promise<LoginResult>

入参

仅可选回调入参(success / fail / complete),无业务字段。

回调 / 返回

回调入参说明
success?LoginResult & { errMsg }成功回调,errMsg 形如 login:ok
fail?{ errMsg }失败回调,errMsg 形如 login:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<LoginResult>(wx 全兼容双模)。

数据结构 LoginResult
字段类型说明
codestring第三方服务用来换取自身会话的一次性 code。

示例

const { code } = await wf.login()
api · 网络请求

wf.request 可用

发起 HTTP 请求(经主进程代理,绕 CORS、可直发任意头)。

签名

request(opts: WxAsync<RequestOptions, RequestResult>): Promise<RequestResult>

入参

参数类型说明
urlstring目标 URL。
method?'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS'HTTP 方法,默认 GET。
header?Record<string, string>请求头。
data?string | Record<string, unknown>请求体;对象会自动 JSON 序列化并补 Content-Type: application/json。
dataType?'json' | 'text'响应体解析方式,默认 'json'(自动 JSON.parse)。
timeout?number超时毫秒数。

回调 / 返回

回调入参说明
success?RequestResult & { errMsg }成功回调,errMsg 形如 request:ok
fail?{ errMsg }失败回调,errMsg 形如 request:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<RequestResult>(wx 全兼容双模)。

数据结构 RequestResult
字段类型说明
dataunknown响应体(dataType:'json' 时为解析后的对象)。
statusCodenumberHTTP 状态码。
headerRecord<string, string>响应头。

示例

const res = await wf.request({ url: 'https://api.example.com/items', method: 'GET' }) console.log(res.statusCode, res.data)
api · 数据存储

wf.setStorage 可用

写入本地存储。encrypt:true 时加密落盘(Vault)。

签名

setStorage(opts: WxAsync<SetStorageOptions, void>): Promise<void>

入参

参数类型说明
keystring键名。
dataunknown值,任意可 JSON 序列化的数据。
encrypt?boolean为 true 时加密落盘(走宿主 Vault),需声明 vault 权限。默认 false(明文)。

回调 / 返回

回调入参说明
success?void & { errMsg }成功回调,errMsg 形如 setStorage:ok
fail?{ errMsg }失败回调,errMsg 形如 setStorage:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<void>(wx 全兼容双模)。

示例

await wf.setStorage({ key: 'items', data: list }) // encrypt:true 走加密存储(需 vault 权限) await wf.setStorage({ key: 'token', data: token, encrypt: true })
api · 数据存储

wf.getStorage 可用

读取本地存储。

签名

getStorage(opts: WxAsync<GetStorageOptions, { data: unknown }>): Promise<{ data: unknown }>

入参

参数类型说明
keystring键名。
encrypt?boolean与写入时一致:true 从加密存储读。默认 false。

回调 / 返回

回调入参说明
success?{ data: unknown } & { errMsg }成功回调,errMsg 形如 getStorage:ok
fail?{ errMsg }失败回调,errMsg 形如 getStorage:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<{ data: unknown }>(wx 全兼容双模)。

示例

const { data } = await wf.getStorage({ key: 'items' })
api · 数据存储

wf.removeStorage 可用

删除指定键。

签名

removeStorage(opts: WxAsync<{ key: string }, void>): Promise<void>

入参

入参:{ key: string }

回调 / 返回

回调入参说明
success?void & { errMsg }成功回调,errMsg 形如 removeStorage:ok
fail?{ errMsg }失败回调,errMsg 形如 removeStorage:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<void>(wx 全兼容双模)。

示例

await wf.removeStorage({ key: 'items' })
api · 数据存储

wf.clearStorage 可用

清空本小程序的全部存储。

签名

clearStorage(opts?: WxCallbacks<void>): Promise<void>

入参

仅可选回调入参(success / fail / complete),无业务字段。

回调 / 返回

回调入参说明
success?void & { errMsg }成功回调,errMsg 形如 clearStorage:ok
fail?{ errMsg }失败回调,errMsg 形如 clearStorage:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<void>(wx 全兼容双模)。

示例

await wf.clearStorage()
api · 数据存储

wf.getStorageInfo 可用

获取存储概况。

签名

getStorageInfo(opts?: WxCallbacks<StorageInfo>): Promise<StorageInfo>

入参

仅可选回调入参(success / fail / complete),无业务字段。

回调 / 返回

回调入参说明
success?StorageInfo & { errMsg }成功回调,errMsg 形如 getStorageInfo:ok
fail?{ errMsg }失败回调,errMsg 形如 getStorageInfo:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<StorageInfo>(wx 全兼容双模)。

数据结构 StorageInfo
字段类型说明
keysstring[]当前所有键名。
currentSizenumber当前占用(KB,估算)。
limitSizenumber上限(KB)。

示例

const { keys, currentSize, limitSize } = await wf.getStorageInfo()
api · 数据存储

wf.setStorageSync 可用

同步写入本地存储。

签名

setStorageSync(key: string, data: unknown, encrypt?: boolean): void

入参

参数类型
keystring
dataunknown
encrypt?boolean

回调 / 返回

同步方法,直接返回 void;失败抛异常,无回调。

示例

wf.setStorageSync('count', 1) // 第三参数 encrypt:true 加密落盘 wf.setStorageSync('token', token, true)
api · 数据存储

wf.getStorageSync 可用

同步读取本地存储。

签名

getStorageSync(key: string, encrypt?: boolean): unknown

入参

参数类型
keystring
encrypt?boolean

回调 / 返回

同步方法,直接返回 unknown;失败抛异常,无回调。

示例

const count = wf.getStorageSync('count')
api · 数据存储

wf.removeStorageSync 可用

同步删除指定键。

签名

removeStorageSync(key: string): void

入参

参数类型
keystring

回调 / 返回

同步方法,直接返回 void;失败抛异常,无回调。

示例

wf.removeStorageSync('count')
api · 数据存储

wf.clearStorageSync 可用

同步清空全部存储。

签名

clearStorageSync(): void

入参

无入参。

回调 / 返回

同步方法,直接返回 void;失败抛异常,无回调。

示例

wf.clearStorageSync()
api · 数据存储

wf.getStorageInfoSync 可用

同步获取存储概况。

签名

getStorageInfoSync(): StorageInfo

入参

无入参。

回调 / 返回

同步方法,直接返回 StorageInfo;失败抛异常,无回调。

数据结构 StorageInfo
字段类型说明
keysstring[]当前所有键名。
currentSizenumber当前占用(KB,估算)。
limitSizenumber上限(KB)。

示例

const { keys, currentSize, limitSize } = wf.getStorageInfoSync()
api · 剪贴板

wf.setClipboardData 可用

写入系统剪贴板。

签名

setClipboardData(opts: WxAsync<SetClipboardDataOptions, void>): Promise<void>

入参

参数类型说明
datastring写入剪贴板的文本。

回调 / 返回

回调入参说明
success?void & { errMsg }成功回调,errMsg 形如 setClipboardData:ok
fail?{ errMsg }失败回调,errMsg 形如 setClipboardData:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<void>(wx 全兼容双模)。

示例

await wf.setClipboardData({ data: 'Hello WorkFly' })
api · 剪贴板

wf.getClipboardData 可用

读取系统剪贴板文本。

签名

getClipboardData(opts?: WxCallbacks<{ data: string }>): Promise<{ data: string }>

入参

仅可选回调入参(success / fail / complete),无业务字段。

回调 / 返回

回调入参说明
success?{ data: string } & { errMsg }成功回调,errMsg 形如 getClipboardData:ok
fail?{ errMsg }失败回调,errMsg 形如 getClipboardData:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<{ data: string }>(wx 全兼容双模)。

示例

const { data } = await wf.getClipboardData()
api · 界面

wf.showToast 可用

显示消息提示框。

签名

showToast(opts: WxAsync<ToastOptions, void>): Promise<void>

入参

参数类型说明
titlestring提示文案。
icon?'success' | 'error' | 'loading' | 'none'图标,默认 success。
duration?number停留毫秒数,默认 1500。
mask?boolean是否显示透明蒙层防穿透,默认 false。

回调 / 返回

回调入参说明
success?void & { errMsg }成功回调,errMsg 形如 showToast:ok
fail?{ errMsg }失败回调,errMsg 形如 showToast:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<void>(wx 全兼容双模)。

示例

await wf.showToast({ title: '已保存', icon: 'success' })
api · 界面

wf.hideToast 可用

隐藏消息提示框。

签名

hideToast(opts?: WxCallbacks<void>): Promise<void>

入参

仅可选回调入参(success / fail / complete),无业务字段。

回调 / 返回

回调入参说明
success?void & { errMsg }成功回调,errMsg 形如 hideToast:ok
fail?{ errMsg }失败回调,errMsg 形如 hideToast:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<void>(wx 全兼容双模)。

示例

await wf.hideToast()
api · 界面

wf.showLoading 可用

显示加载提示框(需配对 hideLoading)。

签名

showLoading(opts: WxAsync<LoadingOptions, void>): Promise<void>

入参

参数类型说明
titlestring加载文案。
mask?boolean是否显示蒙层,默认 false。

回调 / 返回

回调入参说明
success?void & { errMsg }成功回调,errMsg 形如 showLoading:ok
fail?{ errMsg }失败回调,errMsg 形如 showLoading:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<void>(wx 全兼容双模)。

示例

await wf.showLoading({ title: '加载中…' }) // 完成后务必配对 hideLoading await wf.hideLoading()
api · 界面

wf.hideLoading 可用

隐藏加载提示框。

签名

hideLoading(opts?: WxCallbacks<void>): Promise<void>

入参

仅可选回调入参(success / fail / complete),无业务字段。

回调 / 返回

回调入参说明
success?void & { errMsg }成功回调,errMsg 形如 hideLoading:ok
fail?{ errMsg }失败回调,errMsg 形如 hideLoading:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<void>(wx 全兼容双模)。

示例

await wf.hideLoading()
api · 界面

wf.showModal 可用

显示模态对话框。

签名

showModal(opts: WxAsync<ModalOptions, ModalResult>): Promise<ModalResult>

入参

参数类型说明
title?string标题。
content?string正文内容。
showCancel?boolean是否显示取消按钮,默认 true。
cancelText?string取消按钮文案,默认「取消」。
confirmText?string确认按钮文案,默认「确定」。

回调 / 返回

回调入参说明
success?ModalResult & { errMsg }成功回调,errMsg 形如 showModal:ok
fail?{ errMsg }失败回调,errMsg 形如 showModal:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<ModalResult>(wx 全兼容双模)。

数据结构 ModalResult
字段类型说明
confirmboolean用户点了确认。
cancelboolean用户点了取消(或蒙层关闭)。

示例

const { confirm } = await wf.showModal({ title: '删除', content: '确定删除?' }) if (confirm) { // 执行删除 }
api · 界面

wf.showActionSheet 可用

显示底部操作菜单。

签名

showActionSheet( opts: WxAsync<ActionSheetOptions, { tapIndex: number }> ): Promise<{ tapIndex: number }>

入参

参数类型说明
itemListstring[]选项文案列表。
itemColor?string选项文字颜色。

回调 / 返回

回调入参说明
success?{ tapIndex: number } & { errMsg }成功回调,errMsg 形如 showActionSheet:ok
fail?{ errMsg }失败回调,errMsg 形如 showActionSheet:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<{ tapIndex: number }>(wx 全兼容双模)。

示例

const { tapIndex } = await wf.showActionSheet({ itemList: ['编辑', '删除'] })
api · 界面

wf.previewImage 可用

全屏预览图片(复用宿主看图窗口)。

签名

previewImage(opts: WxAsync<PreviewImageOptions, void>): Promise<void>

入参

参数类型说明
urlsstring[]要预览的图片地址列表。
current?string当前显示的图片地址,默认 urls[0]。

回调 / 返回

回调入参说明
success?void & { errMsg }成功回调,errMsg 形如 previewImage:ok
fail?{ errMsg }失败回调,errMsg 形如 previewImage:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<void>(wx 全兼容双模)。

示例

await wf.previewImage({ urls: ['https://example.com/a.png', 'https://example.com/b.png'] })
api · 系统 / 启动

wf.getLaunchOptionsSync 可用

同步获取当前运行实例首次创建时的启动参数。返回值在该实例生命周期内固定;面板标签与主侧边栏实例互不共享。

签名

getLaunchOptionsSync(): LaunchOptions

入参

无入参。

回调 / 返回

同步方法,直接返回 LaunchOptions;失败抛异常,无回调。

数据结构 LaunchOptions
字段类型说明
pathstring对应一次宿主进入的应用内路径;routing.mode=none 时为空字符串。当前页以 location.hash 为准。
queryRecord<string, unknown>该次宿主进入携带的参数(deeplink / 剪贴板提示 / IM 内容匹配带入,如 { curl })。
scenestring当前值包括 panel / standalone / spotlight / im / agent / deeplink / miniapp / mcp;应用须兼容未知新值。

示例

const { path, query, scene } = wf.getLaunchOptionsSync() // query 带入 deeplink / 剪贴板 / IM 内容匹配的参数
api · 系统 / 启动

wf.getEnterOptionsSync 可用

同步获取宿主最近一次进入当前运行实例的参数。首次创建时与 launch options 相同;后续 deeplink、 IM 或卡片再次进入会更新它。页内 Hash 导航不会改写本值,当前页面应读取 location.hash

签名

getEnterOptionsSync(): LaunchOptions

入参

无入参。

回调 / 返回

同步方法,直接返回 LaunchOptions;失败抛异常,无回调。

数据结构 LaunchOptions
字段类型说明
pathstring对应一次宿主进入的应用内路径;routing.mode=none 时为空字符串。当前页以 location.hash 为准。
queryRecord<string, unknown>该次宿主进入携带的参数(deeplink / 剪贴板提示 / IM 内容匹配带入,如 { curl })。
scenestring当前值包括 panel / standalone / spotlight / im / agent / deeplink / miniapp / mcp;应用须兼容未知新值。

示例

const opts = wf.getEnterOptionsSync()
api · 系统 / 启动

wf.getSystemInfoSync 可用

同步获取宿主系统信息(平台、主题、版本、语言)。

签名

getSystemInfoSync(): SystemInfo

入参

无入参。

回调 / 返回

同步方法,直接返回 SystemInfo;失败抛异常,无回调。

数据结构 SystemInfo
字段类型说明
platform'workfly'宿主平台标识,固定 'workfly'。
theme'dark' | 'light'当前主题,跟随宿主暗 / 亮。
versionstring宿主应用版本。
languagestring界面语言(如 'zh-CN')。

示例

const { platform, theme, version, language } = wf.getSystemInfoSync()
api · 系统 / 启动

wf.openApp 可用

从磁贴或会话卡片打开小程序完整页面。第三方只能打开自己。

签名

openApp(opts?: WxAsync<OpenAppOptions, void>): Promise<void>

入参

参数类型说明
appId?string目标小程序 id;省略时为调用方自己。第三方只能打开自己。
path?string目标应用内部路径。
query?Record<string, unknown>启动参数。

回调 / 返回

回调入参说明
success?void & { errMsg }成功回调,errMsg 形如 openApp:ok
fail?{ errMsg }失败回调,errMsg 形如 openApp:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<void>(wx 全兼容双模)。

示例

api · 系统 / 启动

wf.createAppLink 可用

为当前小程序生成可复制、可发送的标准深链。仅允许 manifest 中 shareable: true 的路由; 宿主会校验应用 id、路由和参数,不接受调用方自行指定其它应用。

签名

createAppLink( opts?: WxAsync<CreateAppLinkOptions, CreateAppLinkResult> ): Promise<CreateAppLinkResult>

入参

参数类型说明
path?string目标应用内部路径;省略时使用 manifest 的 defaultPath。
query?Record<string, unknown>写入链接查询串的可序列化参数。

回调 / 返回

回调入参说明
success?CreateAppLinkResult & { errMsg }成功回调,errMsg 形如 createAppLink:ok
fail?{ errMsg }失败回调,errMsg 形如 createAppLink:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<CreateAppLinkResult>(wx 全兼容双模)。

数据结构 CreateAppLinkResult
字段类型说明
urlstring标准 workfly://app/<appId>/<route>?query 深链。

示例

api · 原生能力面

wf.fireworks 可用

放烟花 🎆——在小程序自己页面上叠一层透明 canvas 放一束粒子动画,动画结束自动移除。 「页内 helper」:纯本地即时视觉、零 IPC、零权限,故是 §1.2 双模调用约定的合法例外—— 就是个同步 void 调用,无回调、无 Promise。传 target 元素 / 事件则炸在其上, 不传任何定位则落在鼠标指针最近位置(无记录则视口中心)。

签名

fireworks(opts?: FireworksOptions): void

入参

参数类型说明
target?string | Element | EventCSS 选择器 / 元素 / 事件源 → 在其矩形中心(或事件坐标)炸开。
x?number显式视口 X 坐标(覆盖 target)。
y?number显式视口 Y 坐标(覆盖 target)。
count?number连发几束,默认 1(上限 5)。
duration?number单束时长 ms,默认约 1200(上限 4000)。
colors?string[]调色板,缺省内置喜庆色。

回调 / 返回

同步方法,直接返回 void;失败抛异常,无回调。

示例

// 按钮点击处放一束 btn.addEventListener('click', (e) => wf.fireworks(e)) // 在某元素中心连放三束喜庆色 wf.fireworks({ target: '#trophy', count: 3 })
api · 原生能力面

wf.notify 可用

发一条通知(经宿主统一通知中心,受用户的通知偏好、来源开关与免打扰时段约束—— 被拦下时静默不显)。需声明 notification,首次调用由宿主询问并记住选择。

签名

notify(opts: WxAsync<NotifyOptions, void>): Promise<void>

入参

参数类型说明
titlestring通知标题。
body?string通知正文(可选)。

回调 / 返回

回调入参说明
success?void & { errMsg }成功回调,errMsg 形如 notify:ok
fail?{ errMsg }失败回调,errMsg 形如 notify:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<void>(wx 全兼容双模)。

示例

await wf.notify({ title: '部署完成', body: 'prod 环境已上线' })
api · 原生能力面

wf.schedule.createTodo 可用

新建一条待办 / 日程。需声明 schedule.write,每次调用都由宿主确认。

签名

createTodo(opts: WxAsync<CreateTodoOptions, CreateTodoResult>): Promise<CreateTodoResult>

入参

参数类型说明
titlestring待办标题。
at?string一次性绝对时间 YYYY-MM-DDTHH:mm;与 cron 二选一,都不给则默认今天 09:00。
cron?string周期性 cron(5 段,如 0 9 * * 1=每周一 9 点);与 at 二选一。
note?string备注 / 上下文(便于回看这条待办从哪来)。

回调 / 返回

回调入参说明
success?CreateTodoResult & { errMsg }成功回调,errMsg 形如 createTodo:ok
fail?{ errMsg }失败回调,errMsg 形如 createTodo:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<CreateTodoResult>(wx 全兼容双模)。

数据结构 CreateTodoResult
字段类型说明
todoIdstring新建待办 id。

示例

const { todoId } = await wf.schedule.createTodo({ title: '复盘部署结果', at: '2026-07-01T09:00' })
api · 原生能力面

wf.ocr.recognize 可用

识别图片中的文字与二维码,返回全文、逐行包围盒与二维码内容。

签名

recognize(opts: WxAsync<OcrRecognizeOptions, OcrRecognizeResult>): Promise<OcrRecognizeResult>

入参

参数类型说明
imagestring图片来源:http(s) URL 或 data URL(base64)。 不支持本地文件路径——沙箱不开放宿主文件系统;本地选图请经 <input type="file"> 转成 data URL。
languages?string[]识别语言优先级(BCP-47,如 ['zh-Hans','en-US']);默认自动。

回调 / 返回

回调入参说明
success?OcrRecognizeResult & { errMsg }成功回调,errMsg 形如 recognize:ok
fail?{ errMsg }失败回调,errMsg 形如 recognize:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<OcrRecognizeResult>(wx 全兼容双模)。

数据结构 OcrRecognizeResult
字段类型说明
textstring按版面阅读顺序还原的全文(多列 / 表单的键值配对已复原)。
linesOcrRecognizeLine[]逐行明细(文本 + 置信度 + 归一化包围盒)。
barcodesstring[]图中二维码的解码结果(无码为空数组;单图最多解出一个)。
providerstring识别引擎:macOS 为 vision,其余平台为 paddle

示例

const { text, lines, barcodes } = await wf.ocr.recognize({ image: dataUrl }) console.log(text, barcodes)
api · 原生能力面

wf.im.getChatContext 可用

读取当前会话上下文:标识、展示名、群成员(若有)与最近消息摘要。 须从 IM 入口打开(query 带 chatId)或显式传入 chatId。

签名

getChatContext( opts?: WxAsync<GetChatContextOptions, GetChatContextResult> ): Promise<GetChatContextResult>

入参

参数类型说明
chatId?string会话 id(shortId)。省略时从当前运行实例的 launch/enter query.chatId 读取 (从 IM 工具栏 / 标题栏 / 消息菜单入口打开时由宿主注入)。
limit?number最近消息条数,默认 20,上限 50。

回调 / 返回

回调入参说明
success?GetChatContextResult & { errMsg }成功回调,errMsg 形如 getChatContext:ok
fail?{ errMsg }失败回调,errMsg 形如 getChatContext:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<GetChatContextResult>(wx 全兼容双模)。

数据结构 GetChatContextResult
字段类型说明
chatIdstring
chatType'chat' | 'groupchat' | string
peerNamestring
peerId?string
members?ChatContextMember[]
recentMessagesChatContextMessage[]

示例

const ctx = await wf.im.getChatContext() console.log(ctx.peerName, ctx.recentMessages.length)
api · 原生能力面

wf.im.getHistory 可用

分页读取会话历史(脱敏正文),供小程序本地筛选后再喂给 AI。

签名

getHistory(opts?: WxAsync<GetHistoryOptions, GetHistoryResult>): Promise<GetHistoryResult>

入参

参数类型说明
chatId?string会话 id;省略时从 launch query 读取。若传入须与入口会话一致。
limit?number条数,默认 50,上限 200。
before?number分页游标:只取 dateline 严格小于该值的更早消息。

回调 / 返回

回调入参说明
success?GetHistoryResult & { errMsg }成功回调,errMsg 形如 getHistory:ok
fail?{ errMsg }失败回调,errMsg 形如 getHistory:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<GetHistoryResult>(wx 全兼容双模)。

数据结构 GetHistoryResult
字段类型说明
chatIdstring
messagesHistoryMessage[]
hasMoreboolean
nextBefore?number下一页 before;无更多时省略。

示例

const page = await wf.im.getHistory({ limit: 80 }) const texts = page.messages.map((m) => m.text)
api · 原生能力面

wf.ai.complete 可用

一次文本补全;支持 onChunk 流式渲染。

签名

complete(opts: WxAsync<AiCompleteOptions, AiCompleteResult>): Promise<AiCompleteResult>

入参

参数类型说明
system?string系统提示(可选)。
messages?AiChatMessage[]多轮消息;与 prompt 至少提供其一。
prompt?string简写:单条 user 内容(可与 system 并用)。
temperature?number采样温度,宿主裁剪到 0–1.5。
requestId?string客户端生成的请求 id(用于流式事件过滤与 cancel)。 省略时由 SDK 自动生成。
onChunk?(delta: string) => void流式增量回调。
onMessage?(ev: AiStreamEvent) => void统一流式事件回调。

回调 / 返回

回调入参说明
success?AiCompleteResult & { errMsg }成功回调,errMsg 形如 complete:ok
fail?{ errMsg }失败回调,errMsg 形如 complete:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<AiCompleteResult>(wx 全兼容双模)。

数据结构 AiCompleteResult
字段类型说明
textstring完整助手文本。
requestIdstring本请求 id(cancel 时用)。

示例

const { text } = await wf.ai.complete({ system: '你是会议纪要助手', prompt: historyText, onChunk: (d) => append(d) })
api · 原生能力面

wf.ai.cancel 可用

取消进行中的 complete(按 requestId)。

签名

cancel(opts: WxAsync<AiCancelOptions, void>): Promise<void>

入参

参数类型说明
requestIdstring

回调 / 返回

回调入参说明
success?void & { errMsg }成功回调,errMsg 形如 cancel:ok
fail?{ errMsg }失败回调,errMsg 形如 cancel:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<void>(wx 全兼容双模)。

示例

api · BIP 扩展

wf.bip.rsaEncrypt 可用

RSA 公钥加密(wx 无等价的 BIP 生态扩展)。 当前服务 BIP 系 OAuth 握手:包内拼 clientSecret:秒级时间戳 后调用本方法得到 base64 密文,再走授权码链路。公钥由调用方传入,宿主不知用途。

签名

rsaEncrypt(opts: WxAsync<RsaEncryptOptions, RsaEncryptResult>): Promise<RsaEncryptResult>

入参

参数类型说明
publicKeystringPEM 格式公钥(调用方自带)。
datastring待加密明文。
padding?'pkcs1' | 'oaep'填充模式,默认 pkcs1(对齐 Java Cipher.getInstance("RSA"))。

回调 / 返回

回调入参说明
success?RsaEncryptResult & { errMsg }成功回调,errMsg 形如 rsaEncrypt:ok
fail?{ errMsg }失败回调,errMsg 形如 rsaEncrypt:fail <原因>
complete?{ errMsg }结束回调,成功失败都触发

三者都不传时返回 Promise<RsaEncryptResult>(wx 全兼容双模)。

数据结构 RsaEncryptResult
字段类型说明
datastringbase64 编码的密文。

示例

const { data } = await wf.bip.rsaEncrypt({ publicKey, data: 'secret:' + Math.floor(Date.now() / 1000) })
api · BIP 扩展

wf.card.onData 可用

监听宿主下发给 Manifest v1 sandbox 卡片的结构化数据。Manifest v2 React 卡片直接读取 WorkflyCardProps.data,不得使用本方法。返回取消监听函数。

签名

onData(listener: (data: unknown) => void): () => void

入参

参数类型
listener(data: unknown) => void

回调 / 返回

同步方法,直接返回 () => void;失败抛异常,无回调。

示例