> **2.1.26 本地入口**：统一常用配置模板覆盖飞书、HTTP、AI API、外部 MCP。运行窗口按具名用途选择、新增、编辑原配置；手动、批量、定时共用 Tool 绑定。邮箱、笔记、网站账号同样绑定原资料，网页版 AI 会话仍在设置验证，无需配置的内置功能不新增条目。运行窗口不能代确认权限，不支持混合不同资源类型的单个用途。参考 `../releases/2.1.26-local.md` 与帮助中心功能说明中的统一声明示例。

> **2.1.25 本地入口**：飞书并入统一常用配置编辑器的内置模板，取消独立新增卡片及内置的脚本可读授权码模板。运行窗对已声明飞书用途的 Tool 提供选择、新增、编辑同一份配置；不复制密钥到 variables/input。旧直接参数脚本须修改源码，不能自动转为受保护绑定。详见 `../releases/2.1.25-local.md`。

> **2.1.15 本地入口**：个人中心的表格、接口与服务、常用参数统一为“常用配置”。资源原类型和凭据边界保留：普通参数对脚本可见，飞书/HTTP/AI/MCP 私密连接由插件代用。脚本设置列出申请的能力，以“允许上述功能权限”确认；不是添加一份资源。数据中心 BI 仅读取既有本机报告，不能触发其他脚本。

> **2.1.14 本地入口说明**：脚本设置的“使用的资源”更名为“账号与服务”。这里按用途选择已有邮箱、AI 接口、表格或网站账号，只保存关联，不复制资料。普通运行参数仍在常用配置维护，无需资源的内置功能无需填写关联。网站书签与账号分类共用原账号；实际填充始终使用账号中确认的 HTTPS 登录来源。

> **2.1.13 本地预览现行规则**：云盘保存属于内置文件能力，不再在个人中心新增“云盘回传”资源，也无需绑定保存用途。脚本声明 `file.save`，调用时传入当前任务的 `tempBlobId`、`filename`、`destination`（auto/local/baidu/webdav）和 `keepLocal`。网盘授权及默认备份目标在设置维护；auto 无已选目标时保存本机。已有保存预设只留在旧配置中查看、修改或删除，不作为新绑定候选。MCP 部署与连接统一通过设置的“我的 Cloudflare”，执行密钥自动保存，客户端配置仅含调用密钥。本节覆盖下方历史云盘资源与手动连接说明。

> **2.1.11 本地预览网络约束**：后台沙箱中的联网使用 `SellerFeeds.fetch`／`SellerFeeds.net` 或声明并绑定的内置服务；原生 fetch、XHR、WebSocket、WebRTC、外部脚本/框架等不能用来绕过网络桥。HTTP／Token／AI／外部 MCP 共用管理地址保护。基础网络跳转不得把自定义请求头或正文转给另一来源；无此类内容的 GET 仍逐跳检查网站授权。个人资料与凭据不直接交给脚本。页面脚本的宿主原生网络不属于后台沙箱保证。此规则覆盖下方旧示例中直接使用原生网络的历史写法。

> **2.1.9 本地预览现行规则**：停用 script.call／SellerFeeds.scripts.call，旧调用明确报错，不创建子任务；AI 必须在当前脚本中完成业务逻辑。个人中心原资源和用途绑定保留，新绑定不再把普通参数自动解释为 HTTP／表格连接。普通资源首屏只读取本机索引，摘要、同步状态及账号／验证码分开加载；敏感操作仍校验设备会话。旧记录不删除，个人数据 Worker 仍 v13，不代表官网已发布。此规则覆盖下方历史跨脚本调用说明。

> **2.1.8 本地预览现行规则**：个人中心以一套分类／混合分组视图直接使用和管理原资源，取消“常用页面／全部资源”两标签。新分组保存 typed ID 引用，共享编辑；旧独立副本保留。从分组移除不删除原资料。使用情况列出脚本／Tool／用途和分组。布局沿 organizer workspace，Worker v13 才同步混合分组，旧云保留本机待同步。显示偏好按账号保存在当前设备。脚本仍声明内置功能并直接绑定原资源，无凭据读取接口；下方历史入口和自动复制规则以此为准。官网稳定版仍为 2.1.4。

> **2.1.7 本地预览现行规则**：个人中心统一维护资料、连接与普通参数。脚本声明内置功能、具名用途和业务输入，用户直接绑定原资源，不新增个人资料引用配置。旧引用和旧接口兼容，旧章节中的“配置中心再建引用”仅用于理解历史版本，不适用于新操作。此补充优先于下方历史入口规则，本地更新不代表官网已发布。

# 内置 SDK、配置用途绑定与 AI 开发公约（2.1.9 本地预览）

当前本地预览为 2.1.9。个人中心统一管理原资料、连接和普通参数，脚本直接按用途绑定原资源。内置功能无需新增模块实例；旧引用配置继续兼容。

## 邮件与个人资料：给 AI 的调用公约

邮箱连接及密码等原资料在个人中心维护，脚本在“使用的资源”按用途直接绑定原 ID。不得把用户邮箱、Token 或配置 ID 写死在可分享源码。邮件筛选**在脚本调用参数中**填写，不要求用户在邮箱或配置中心配置这些条件。同一邮箱可绑定多个脚本用途，用途名在脚本声明中定义，无需创建独立引用配置。

| 查询参数 | 含义 |
| --- | --- |
| `from` / `to` | 发件人 / 收件人，忽略大小写的包含匹配 |
| `subject` | 主题包含文字，忽略大小写 |
| `folder` | 服务返回的实际文件夹 ID；不是界面的中文显示名称，省略时查询该邮箱本机所有文件夹 |
| `after` / `before` | ISO 时间字符串，按邮件收到时间过滤，包含边界；明确时区，如 `new Date(...).toISOString()` |
| `unread` / `hasAttachments` | 可选布尔条件；未填写不筛选 |
| `refresh` | 默认 false 查询本机摘要；true 先收取远端摘要再筛选，不自动下载正文 |
| `limit` / `offset` | 1–500，默认 30；offset 为扫描位置，下一页使用返回的 nextOffset，不能简单加 limit |

查询返回 `{messages,nextOffset,source:"local"}`，摘要不含正文或凭据。远端刷新最多 20 页，每页 50；超上限报错，应缩小时间范围。省略 after 的远端刷新范围是最近 30 天；本机旧邮件不会被清空。读取正文使用返回的真实 messageId；已下载正文复用本机缓存。邮件内容仍只在本机或用户主动备份的云盘，不写入官方或个人 Cloudflare。

验证码示例（业务需核实发件人/时间/主题，不盲目取任意数字）：

```javascript
// 元数据中声明 mail.query/mail.message，并给同一 mail 槽位声明两个操作：
// @sellerfeeds-modules {"enabled":true,"operations":["mail.query","mail.message"],"slots":[{"name":"verification_mail","title":"接收验证码的邮箱","operations":["mail.query","mail.message"]}]}
const after = new Date(Date.now() - 10 * 60 * 1000).toISOString();
const result = await SellerFeeds.sdk.call('mail.query', {
  slot: 'verification_mail', from: 'noreply@example.com', subject: '验证码',
  after, before: new Date().toISOString(), limit: 10, refresh: true
});
const candidates = [...result.messages].sort((a,b) => Date.parse(b.date) - Date.parse(a.date));
let code = null;
for (const message of candidates) {
  const body = await SellerFeeds.sdk.call('mail.message', {slot:'verification_mail', messageId:message.id});
  const match = String(body.text || '').match(/(?:^|\D)([0-9]{6})(?!\d)/);
  if (match) { code = match[1]; break; }
}
if (!code) throw new Error('指定发件人、主题和时间内没有找到验证码');
// 使用后不要把验证码或整封私信写入业务报告；返回不含敏感内容的执行摘要。
```

发信：`SellerFeeds.sdk.call('mail.send',{slot:'sender_mail',to,cc?,bcc?,subject,text})`，文字正文必填，发送需另声明 mail.send。accepted 是服务商接受，不等于实际投递成功；不得盲目重发。附件读取用 mail.attachment 返回当前任务的 tempBlobId；保存文件在任务结束前完成。网页版 AI 基础调用保持 webAi.chat 声明与本机会话验收，不自动开标签。

网站引用使用 `website.read` 返回 `{title,site,description}`，不返回关联账号 ID 或密码。账号填充 `account.fill` 与验证码代填 `account.totp` 只能操作本任务的精确 HTTPS 页面；后台任务不选私人标签页。笔记引用 note.read/note.write 只读写那一条，笔记正文是脚本可见结果，不应把凭据写在普通笔记中。

> 个人空间组件 ＋ 直接新增网站/关联账号、笔记、两步验证或邮箱，保存后加入当前组件。网站支持横向卡片和图标导航。个人中心的全部资源直接维护原资料；也管理 HTTP、AI API、外部 MCP、飞书和云盘回传。设置只管理全局连接和浏览器设置。网页版 AI 默认内置，无总开关，但本机连接、网站权限和真实能力验收仍须完成。
>
> 下载的 AI 开发文档包含公开开发公约全文及专题说明、27 项 SDK 接口、可运行示例与所选配置的脱敏契约；离线可读，不只给 AI 一组引用。用户配置的实际地址、参数值、默认值、密钥和资源 ID 不导出。
>
> 云盘回传配置绑定 `file.save` 用途，脚本传当前任务的 `tempBlobId` 和文件名；配置决定 destination/keepLocal，调用输入不能改写配置的保存策略。无用途的直接 `file.save` 调用保持原规则，auto 没有目标时保存本机。

## 1. 产品结构与现行规则

用户配置已有服务和常用参数，AI编写业务脚本，插件提供预制函数及凭据代用。配置中心管理HTTP完整模板及飞书连接/映射，继续普通参数的编辑、复用和固定绑定。脚本设置→使用的资源显示用途和可选原资源，按账号和Tool保存具名用途。已有AI/MCP/邮箱/网页版AI/网站账号/笔记直接复用，不创建重复服务实例。已存在2.1.0额外配置仍可使用/编辑，不静默删除。

移除模块库与组合动作日常导航和编辑入口，不删除旧生成脚本/定义/本机执行数据；历史运行器保留兼容。业务条件、循环和顺序由AI在JavaScript中编写。这里的SDK是预制功能库，不是可视化工作流。

## 2. 声明与身份边界

```text
// @sellerfeeds-modules {"enabled":true,"operations":["table.feishu.read","table.feishu.append"],"slots":[{"name":"orders","title":"订单来源与结果表","operations":["table.feishu.read","table.feishu.append"]}]}
```

旧字符串slots兼容。新对象槽位记录name/title/operations；同槽位只可切换同资源类型并且声明允许的操作。operations均须注册，作用域在真实活动任务/Tool/账号下，核对启用状态、已确认签名及非MAIN；不信任脚本自报身份。扩权更新重新确认。槽位匹配ID而非显示名，配置删除/冲突/类型变化停止，不偷偷换资源。

绑定直接引用现有配置中心或服务，不复制凭据。网站填充/验证码仍只由插件填当前精确HTTPS顶层同源表单，脚本不读取密码/种子/验证码，后台不能选择私人标签页；恶意网页可观察填入DOM的值，不作绝对隔离承诺。

## 3. 接口

```javascript
await SellerFeeds.tables.read({slot:'orders',pageSize:100,maxRecords:500});
await SellerFeeds.tables.fields({slot:'orders'});
await SellerFeeds.tables.append({slot:'orders',rows:[{SKU:'示例',数量:1}]});
await SellerFeeds.tables.update({slot:'orders',records:[{recordId:'recExample',fields:{状态:'已处理'}}]});
await SellerFeeds.http.request({slot:'product_query',variables:{id:'123'}});
await SellerFeeds.sdk.call('mail.query',{slot:'orders_mail',subject:'订单',limit:20,refresh:false});
await SellerFeeds.sdk.call('ai.chat',{slot:'analysis',messages:[{role:'user',content:'分析示例数据'}]});
await SellerFeeds.sdk.call('mcp.call',{slot:'external_tool',name:'已声明工具名',arguments:{}});
await SellerFeeds.sdk.call('data.json.parse',{text:'{"items":[1,2]}'});
```

sdk.call(operation,{slot?,...input})是统一入口；modules.call(alias,input,operation?)保留，旧ai/mail/mcp/webAi/files/credentials接口不改参数格式。注册表提供27项操作及标准Schema，真实可用接口以导出的开发文档为准。直接数据/文件功能不需槽位。MCP模板固定Tool时不得改名；直接绑定已有MCP服务时显式传name，仍受脚本MCP声明约束。邮件正文/附件单独读取，附件返回任务专属tempBlobId，任务内保存后再结束。

## 4. 直接参数与普通常用配置

以下 direct 接口属于显式直接传参能力，不是新版内置飞书配置流程。历史飞书 baseUrl/baseToken 分组不再由运行窗录入或自动回填，旧脚本须改用具名用途。其他直接传入的凭据仍是脚本可见的。writeOnly仅用于密码框和报告摘要脱敏，不保证隔离。无需新安全区界面；保存配置与用途绑定是两个可配合的操作。

```text
// @connect https://base-api.feishu.cn/*
// @sellerfeeds-modules {"enabled":true,"operations":["table.feishu.read"],"slots":[],"direct":["table.feishu.read"]}
```

```javascript
await SellerFeeds.tables.read({connection:{tableUrl:input.tableUrl,authorizationCode:input.authorizationCode},maxRecords:100});
```

direct只开放HTTP和飞书操作，安装预览/扩权确认可见，仍核对脚本match/connect和浏览器已授权origin。HTTP直接调用用connection传完整模板，variables传业务参数。绑定失败不得自动降级为直接凭据。两种来源同时提供时拒绝，不允许绑定资源里的地址、Key被脚本覆盖。没有读取任意保存凭据API。

## 5. 配置中心格式与参数

历史普通参数曾提供“飞书表格读写配置”模板：baseUrl、baseToken、columns、taskField、businessFields（2.1.25不再作为新增模板；旧记录保留）。读取只需baseUrl/baseToken；追加需要其余查重映射。也接受feishu对象下tableUrl/authorizationCode；历史脚本的feishu_url/feishu_token兼容。HTTP配置中心条目可使用http对象或顶层完整模板；输入Schema描述业务变量，query/headers/body以{{input.xxx}}引用，私密变量以{{secrets.xxx}}引用。

```json
{"http":{"url":"https://api.example.com/products/{{input.id}}","method":"POST","secretHeaders":{"Authorization":"Bearer <用户填写>"},"query":{},"headers":{},"bodyType":"json","body":{"id":"{{input.id}}"},"inputSchema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"responseType":"json","timeoutMs":60000}}
```

配置中心原存储、备份和账号规则不重写，不因SDK升级自动加密迁移或删值。新增服务模板采用原components-v2本机加密与用户个人数据Worker v9同步；旧云接口不改。完整模板同步需用户更新自己的Worker v9，本轮未代部署。普通网盘只保存新增服务引用索引，配置中心条目沿原配置备份。官方不保管SDK模板；用户Worker处理明文，不能宣传零知识。

## 6. 飞书真实返回与写入

read支持官方列表filter字符串、sort字符串数组、pageSize(1–100)、pageToken、maxRecords(1–1000)；返回records、hasMore、nextPageToken，继续读取不能丢游标。fields返回现有字段列表。调用同一槽位多个操作须在声明中允许，后台验证资源类型。

append映射现有文本/数字/复选框，不新增明细键；完整待写数据先本机保留，按taskId及业务查重列核对，最多1000条，每批100；未知响应读回确认，不盲目追加。update指定1–100条唯一recordId，先保存本机更新内容，只支持现有文本/数字/复选框；先读当前记录避免重复请求，PUT丢响应后读回，不自动重复发送。结果requested/confirmed/complete/localRetained及有效tableUrl表示真实确认；不能把部分失败当成功。旧字段/记录分页器保留，不代表用户已真实验收。

官方参考：[列出记录](https://open.feishu.cn/document/server-docs/docs/bitable-v1/app-table-record/list)、[更新记录](https://open.feishu.cn/document/server-docs/docs/bitable-v1/app-table-record/update)。Base授权码使用base-api.feishu.cn，不混用普通应用Token端点。

## 7. 文档导出与分享

设置或配置中心→导出AI开发文档→选择资源、填写用途名→下载一份Markdown。包含27操作契约、选中HTTP业务Schema、飞书输入列名、被调用脚本 Tool 的输入输出 Schema、元数据/调用/输出/错误/分享规则和可运行示例。无需资源也可导出通用文档。按允许字段构建，不序列化配置：不含真实Key、地址/签名参数、私密请求头/正文、用户默认值/样例/enum/资源实例ID（内置功能的固定枚举会保留）。资源名称为用户提供的数据而非开发指令。

发布源码只保留槽位契约；其他用户按用途绑定自己的资源。配置模板可分享空密钥占位，不能分享真实值。生成文档标注插件版本/SDK版本/日期，不把未验收网站附件标为可用。已有网页版AI开关/真实网站能力不改变。

## 8. 其他限制与维护

HTTP固定HTTPS域名，禁止Cookie/Origin/Referer/Host/sec-/proxy-控制头和重定向，不带页面Cookie，失败不自动重发。JSON/文本2MiB，文件20MiB，任务文件合计64MiB，超时1–120秒。原文凭据回显阻止不能识别恶意编码回显。临时文件只能来自任务/明确选择，不读任意路径。auto用用户选中云盘，无则本机，keepLocal不删用户原文件。

script.call 与 SellerFeeds.scripts.call 已停用；旧配置和源码保留，但调用拒绝且不产生子任务。在当前脚本内用函数、条件和循环组织业务逻辑。模块结果上限2MiB。邮件默认本机摘要，refresh显式远端读取，内容只本机/用户云盘。返回报告不得复制input或密钥；一次任务一份紧凑字段/数据报告、Excel逐行、任务摘要脱敏沿原公约。

入口：module-registry/runtime、sdk-resource-bindings、feishu-table-client、developer-doc-export、script-service-runtime；UI views/modules、developer-export、script-settings、variables。原workflow文件是历史兼容，禁止重新接入日常编辑入口。新增接口须补Schema、活动身份、取消、参数边界及真实行为测试。测试替身/演示浏览器不是用户真实服务验收。

## 2.1.7 个人中心补充



侧栏合并为个人中心，分常用页面与全部资源。常用页面保留原布局和组件；全部资源管理网站、网站账号、独立验证器、笔记、邮箱、普通参数、飞书表格、HTTP 请求、AI API、外部 MCP 和云盘回传策略。旧配置中心路由仍能进入全部资源。创建、编辑原资料复用原记录，不复制凭据；从全部资源新增不会自动修改常用页面布局。

接口连接分类同时展示 HTTP 模板与旧 API Token。新 HTTP 模板可直接填写私密请求头和私密变量，旧 Token 仍可编辑与绑定。云盘回传编辑可直接打开百度/WebDAV 连接管理；账号连接及备份全局设置仍保留原入口。个人 MCP 入站服务仍位于 MCP/设置，不等同外部 MCP 服务。

## 脚本绑定

脚本设置中的使用的资源按 Tool 和具名用途直接选择个人中心原资料。用途旁可新增资源，保存并关闭编辑后返回并选中新资源；其他未保存选择保留，点击保存选择才写入绑定。取消返回时不创建资源或引用。无需另建邮箱/笔记/网站/账号/验证器引用配置；旧引用条目在全部资源的旧引用分类保留，原脚本继续解析。

同一飞书表连接可用于已声明的读取、字段、追加和更新操作，选择器按资源去重，不复制授权码。追加前仍核对查重字段和映射。未声明的操作不能通过同资源类型扩权。独立验证器必须有精确 HTTPS 关联才可用于脚本代填，未关联项仅供个人使用。

普通参数沿原参数集存储和备份。运行窗先提供脚本默认值，再由所选参数集预填，明确的单次输入保留；运行不反写参数集。参数值、授权读取的笔记与邮件内容对脚本可见，密码、种子、连接密钥由插件代用。没有新增插件内通用业务数据库。

## 兼容与边界

原 ID、Warden、organizer、邮箱、AI/MCP、components-v2、参数存储及备份边界保留，不合库、不迁移 D1、不改 Secret。个人数据云继续 v12 能力探测及旧协议回退。普通网盘快照仍不包含所有私密资源，统一入口不能解释为统一完整备份。

删除原资料使其绑定失效；删除网站保留关联账号，删除邮箱连接保留本机邮件；删除旧引用只删引用。索引只输出公开元数据，不输出正文、网址、邮箱地址或凭据。账号切换、冲突、资源删除和源码声明变化仍受后台复核。

本机资源枚举保留已有效的 Warden 会话，不把在线会话降为离线；不因打开选择器自动发起云端恢复或注册。
