跳到主要内容

连接器参考

本页定义连接器的约定:manifest 字段、权限、配置 schema、SDK 生命周期、文档字段、state、本地验证和发布。入门教程见构建连接器。

Manifest​

manifest.json 用来向 Gety 声明连接器。Gety 会在用户安装连接器时读取 manifest 并保存这份副本。要修改已安装连接器的 manifest,请从本地文件夹重新安装,或发布新版本。

字段必填说明
id是稳定的连接器 ID。必须匹配 ^[a-z0-9][a-z0-9_-]*$:以小写字母或数字开头,后面可使用小写字母、数字、_ 或 -。不能使用大写字母、点号,也不能以 _ 或 - 开头。Gety 通过 ID 识别已安装的连接器,因此发布后不要再修改它。
name是Gety 连接器列表和安装对话框中显示的名称。
version是连接器的 SemVer 版本。
min_gety_app_version是连接器要求的最低 Gety 应用版本,使用 SemVer。更低版本的 Gety 会拒绝安装。manifest 使用 permissions 或 sync_version 时,请设为 0.7.0 或更高。
entry是连接器根目录内构建入口的相对路径,通常是 dist/main.js。
capabilities是非空数组,声明 Gety 支持的集成能力。轮询型数据来源声明 ["data-source"];这是当前唯一支持的值。未知值会被拒绝。
description否安装对话框中显示的简短描述。
author否作者对象,可包含 name、email 和 url,均为可选,例如 { "name": "Gety" }。
icon否连接器根目录内 PNG 或 SVG 图标的相对路径。Gety 会在连接器列表和安装对话框中显示它。
schedule否同步计划。省略时,Gety 每 600 秒同步一次。见 Schedule。
config否配置表单 schema。见配置字段。
doc_link否声明文档如何打开。见 Doc link。
schema.extra_gety_indexed_fields否让额外的 metadata 字段可搜索。见索引字段。
permissions否连接器可以做什么。对象表示在沙箱中运行;省略或设为 "unrestricted" 表示以完全权限运行。不能为 null。见权限。
sync_version否正整数,省略时为 1。新版本无法接着旧版本已同步的结果继续时,请调高它。见版本与更新。

entry 和 icon 必须位于连接器根目录内。manifest 中出现未知字段会被拒绝。

Schedule​

schedule 控制 Gety 如何轮询来源。用户安装后可以修改。

形式行为
{ "strategy": "manual" }Gety 不会自动轮询。用户仍可点击更多操作(⋯)→ 立即同步。
{ "strategy": "interval", "interval_seconds": 3600 }每隔 interval_seconds 秒轮询一次。低于 60 的值会按 60 处理。
{ "strategy": "daily", "time": "09:00" }每天在 time 指定的本地时间轮询一次。支持 HH:mm 和 HH:mm:ss。

配置字段​

config.fields 是有序数组。每个字段都会在 Gety 的安装和配置界面中渲染为一个输入项,并成为 this.config 上带类型的属性。

属性必填说明
id是字段键,会成为生成的 ManifestConfig 类型上的属性。
title是UI 中显示的标签。
type是输入类型。可选值为 text、password、number、checkbox、dropdown 或 directory。
description否显示在字段下方的说明文字。
placeholder否文本类输入框的占位文本。
required否是否必填,默认为 false。
default_value否字段为空时的预填值。值的类型必须与字段类型匹配;number 字段的默认值必须是整数,例如 0.5 会被拒绝。
optionsdropdown 必填有序数组,形如 { "value": "...", "label": "..." }。

字段类型:

类型适合用途
text单行文本,例如 URL 或用户名。
passwordAPI key 和 token。值会在 UI 中遮蔽。
number数值。
checkbox布尔开关。
dropdown从有序 options 中选择一个固定值。
directory通过选择器选中的本地文件夹路径。
处理 API key

API key 和 token 应使用 type: "password"。本地验证时,示例 runner 会把字段 ID 映射为环境变量:将字段路径转为大写,先尝试带 GETY_CONFIG_ 前缀的名称,再尝试不带前缀的名称:

  • api_key 会先读取 GETY_CONFIG_API_KEY,再读取 API_KEY。
  • auth.api_key 会先读取 GETY_CONFIG_AUTH_API_KEY,再读取 AUTH_API_KEY。

doc_link 为整个连接器统一声明文档如何打开。

{ "kind": "url", "field": "url" }
属性说明
kindurl 打开浏览器链接;file 打开本地文件路径。
field从哪个文档字段或 metadata 键读取链接值。

解析规则:

  • field 可以是核心文档字段(id、parent_id、title、content 或 doc_type),也可以是直接的 metadata 键。
  • "field": "url" 会读取 metadata.url。请使用直接键,不要写成 "metadata.url" 这样的点路径。
  • 值缺失、为空或不是字符串时,该文档没有链接。
  • url 链接会在浏览器中打开。Gety 不会抓取其内容。
  • file 链接必须是稳定的本地路径,不能是临时缓存文件。

打开、展示和复制操作由 doc_link 决定,而不是 content_format。content_format 只控制 Gety 如何渲染文本预览。

为保护用户,以下链接 Gety 会拒绝打开:

  • 指向任何连接器目录中的文件,包括连接器自己的数据目录和代码。请链接到来源服务或用户自己的文件。
  • 指向不存在的文件。
  • 带主机名、而不是本地路径的 file: URL,例如 file://server/share/doc.txt。
  • 在 Windows 上,指向不在本地卷上的文件。

这些规则适用于所有解析为本地文件的链接,无论 kind 是 file 还是 url。file 链接的打开文件所在目录不受影响。

索引字段​

Gety 始终索引 title 和 content。schema.extra_gety_indexed_fields 可以让额外的 metadata 键参与搜索。每一项都需要同时提供 field 和 strategy:

{
"schema": {
"extra_gety_indexed_fields": [
{ "field": "status", "strategy": "fast_text" }
]
}
}
策略适合用途
fast_text短值,需要精确、子串、模糊或拼音匹配,例如名称、标签、文件夹、状态。
full_text较长文本,需要 SQLite FTS5 关键词搜索、BM25 排名和分词。
semantic需要按语义匹配的文本。依赖 embedding 模型。

权限​

permissions 决定连接器进程可以做什么。每次安装前,Gety 都会在应用和 gety connector install 中向用户展示它,用户之后也可以查看。权限需要 Gety 0.7.0 或更高版本,因此声明了权限的 manifest 必须把 min_gety_app_version 设为 0.7.0 或更高。

{
"min_gety_app_version": "0.7.0",
"permissions": {
"net": [
"api.notion.com",
"*.notion.so",
"files.example.com:8443",
{ "config_field": "base_url" }
],
"read": [
"~/.codex/sessions",
{
"path": "~/Library/Application Support/Google/Chrome",
"os": ["macos"]
},
{ "config_field": "export_dir" }
],
"env": ["ACME_LOG_LEVEL"],
"run": ["git"]
}
}

模式​

permissions模式
对象,包括 {}沙箱。 连接器获得基础授权,以及其中列出的权限。其他一律拒绝。
省略,或 "unrestricted"完全权限。 连接器不在沙箱中运行,可以做用户能做的任何事。Gety 会显示红色警告,并请用户再次确认。

条目​

键条目
net"*"(任意主机);host 或 host:port;*.domain(该域名及其所有子域名,不能带端口);IPv4 地址或 [IPv6] 地址,可以带端口。主机名使用小写 ASCII;国际化域名请写成 punycode。写主机名,不要写 URL。
read"~" 或 "~/dir/…",授予该文件夹及其下的所有内容。{ "path": "~/…", "os": ["macos", "windows", "linux"] } 只在列出的系统上生效。不接受绝对路径。
env连接器可以读取的环境变量名。
run连接器可以启动的程序名,不带路径。见运行程序。
{ "config_field": "<id>" }从配置字段取得授权:net 中引用 text 字段(URL 或 host[:port]),read 中引用 directory 字段。值为空时不授予任何权限。不能引用密码字段。

用户安装连接器或保存配置时,Gety 会检查取自配置字段的值:net 的值必须是不含通配符的 URL 或 host[:port],只授予其中的主机和显式写出的端口;read 的值必须是绝对路径。用户修改该字段后,授权随新值变化,不再重新审查。

~ 指 Gety 传入的用户主目录。请使用 this.homeDir 和 this.expandHome(path),不要从环境变量读取 HOME:那需要 env 授权,而且可能与 Gety 授权的目录不一致。

env 授予的是读取变量的权限,而不是访问变量所指位置的权限。如果某个位置可能变化,例如某个工具支持自己的 *_HOME 变量,请让用户在 directory 配置字段中选择它,并在 read 中用 { "config_field": "<id>" } 授权。

以下任意一项会让连接器成为高风险连接器,用户需要再次确认安装:

  • net 中的 "*",或 *.com 这样的单段通配符
  • 任何 run 条目
  • read 中的 "~"

运行程序​

连接器运行的程序不受沙箱限制,因此 run 条目等同于完全权限。

连接器启动时,Gety 通过 PATH 解析每个 run 名称,只允许启动解析得到的那个确切路径;同一个程序位于其他路径,或者通过符号链接的目标路径启动,都会被拒绝。在 PATH 中找不到的名称不授予任何权限。在 macOS 上,从访达启动的应用只有最小的 PATH,因此 Gety 会在缺少时追加 /opt/homebrew/bin 和 /usr/local/bin。shell 启动时才加入的目录(例如 nvm 或 Volta 的目录)不在这个 PATH 中,用它们安装的程序找不到。请让用户把程序链接到上述目录之一,或者让连接器以完全权限运行。

基础授权​

每个沙箱连接器无需声明即可:

  • 读写自己的数据目录 this.dataDir。它也是工作目录,内容在多次同步之间和版本切换后都会保留。
  • 读写一个临时目录(TMPDIR、TMP、TEMP),每次同步后删除。
  • 读取基本系统信息:用户主目录、CPU 数量、内存、系统版本、运行时间、平均负载和磁盘使用情况。
  • 读取自己的代码。

每个连接器还拥有自己独立的 localStorage、Cache API 和模块缓存,不与其他连接器共享。权限审查不会列出基础授权。

在沙箱中,写入上述目录以外的位置、ffi、主机名、网络接口以及用户或组 ID 始终不可用。需要它们的连接器必须以完全权限运行。

权限错误​

沙箱拒绝某项访问时,同步会以固定格式的消息失败,例如:

permission denied: net access to "api.example.com:443" is not granted by the connector's manifest

write、sys、ffi 和 import 访问会改为报告 is not available to sandboxed connectors,因为没有任何 manifest 条目能授予它们。请在 permissions 中补上缺少的条目,或从代码中去掉这项访问。

  • fetch 的每一跳重定向都会检查,因此重定向目标和 CDN 主机也要声明。
  • node:http 等 Node 兼容 API 把被拒绝的主机报告为 getaddrinfo EPERM <host>,不会指明权限。请优先使用 fetch。
  • 读取未授权的环境变量不会失败:Deno.env.get 返回 undefined,就像该变量未设置一样。

限制​

  • 沙箱连接器不能在运行时导入远程(https:)或 npm: 模块。请把依赖打包进连接器文件夹。
  • 连接器写出的文件不能通过文档链接打开。见 Doc link。

SDK 生命周期​

连接器是一个默认导出的类,继承 Connector<Config, State>。

import { Connector, type PollResult, del, upsert } from '@gety-ai/connector-sdk';
import type { ManifestConfig } from './gen/manifest.d.ts';

type State = {
cursor?: string;
};

export default class MyConnector extends Connector<ManifestConfig, State> {
async onLoad(): Promise<void> {
// Optional. Runs once in a fresh runtime process before poll().
}

async *poll(): AsyncGenerator<PollResult, void, unknown> {
let cursor = this.lastState?.cursor;

for await (const page of fetchPages(this.config.api_key, cursor, this.signal)) {
yield {
updates: page.items.map((item) => upsert(toDoc(item))),
state: { cursor: page.next_cursor },
};
cursor = page.next_cursor;
}
}
}
成员说明
this.configGety 安装或配置表单注入的带类型配置,结构由 config.fields 决定。
this.lastState上一次成功轮询最后产出的 state。首次运行时为 null。
this.signalAbortSignal。Gety 停止轮询时(例如用户禁用或重启连接器)会触发中止。请传给 fetch。
this.dataDir连接器数据目录的绝对路径,内容在多次轮询之间保留。
this.homeDir用户主目录的绝对路径,与 Gety 解析 permissions.read 中 ~ 的方式一致。
this.expandHome(path)把开头的 ~ 解析为 this.homeDir。其他路径原样返回。
onLoad()可选,可为 async。每个全新的运行时进程中,在 poll() 前运行一次。
poll()必填的 async generator,产出 PollResult 批次。

生命周期要点:

  • 每次计划轮询都会启动一个新的连接器运行时进程。
  • 类字段不会跨轮询保留。需要持久化的数据应放入 state,或写入 this.dataDir 中的文件。

运行时限制​

  • 空闲超时。 一次轮询如果 10 分钟内没有向 Gety 发送任何内容,就会被视为卡住并取消。产出的批次和控制台输出都算在内。执行耗时操作时,请产出一个批次,或者低频输出一行进度,例如 console.info("still syncing...")。不要高频输出日志。
  • 取消。 Gety 停止轮询时,this.signal 会触发中止。请在耗时操作中检查它,把它传给 fetch(),并释放临时文件等资源。取消首先是协作式的;如果连接器 5 秒后仍未退出,Gety 会终止进程。
  • 消息大小。 SDK 会把过大的批次拆成多条较小的消息。每个单独的文档更新必须小于 16 MiB。
  • state 大小。 下一次轮询启动时会同时带上配置和 state,两者合计不能超过 16 MiB。产出的 state 超出这一限制时,轮询失败。

WireDoc 字段​

用 upsert(doc) 创建或更新文档,用 del(id) 删除文档。

upsert({
id: issue.id,
title: issue.title,
content: markdown,
content_format: 'markdown',
doc_type: 'linear:issue',
doc_updated_at: issue.updatedAt,
original_file_size: markdown.length,
metadata: {
url: issue.url,
created_at: issue.createdAt,
status: issue.status,
},
});
字段必填说明
id是稳定的文档 ID,多次轮询之间保持不变。
title是文档标题。始终会被索引。
content否Gety 用来索引和预览的文本。
content_format否plaintext(默认)或 markdown。markdown 会在文本预览中启用 Markdown 渲染。它只控制渲染方式,不代表来源类型,也不决定文档如何打开。只有真正的 Markdown 内容才应使用 markdown。
doc_type否外部记录通常写成 <namespace>:<type>,例如 linear:issue。只有文档确实像文件、并且需要按文件扩展名展示时,才使用 file:<ext>。不要为了得到 Markdown 预览就把外部记录标成文件;应设置真实的记录类型,并用 content_format 控制渲染。
doc_updated_at否来源文档的更新时间,必须是带 Z 或偏移量的 RFC 3339 时间。不要使用索引时间。
parent_id否父文档 ID,用于层级关系。
hide_from_search否从搜索结果中隐藏文档,但保留它用于父级或关系数据。
original_file_size否字节大小,用于展示。
metadata否任意键值映射。metadata.url 是常用链接目标。metadata.created_at 如果存在,必须是 RFC 3339 字符串,否则轮询会失败。额外键可通过 schema.extra_gety_indexed_fields 参与搜索。

只有 id 和 title 必填;未设置的其他字段不会发送给 Gety。Gety 只保留 content 的前 10 MB(按 UTF-8 字节计),其余部分会被截断。请按分页或分块产出,不要产出巨大的单个文档或 metadata。

Poll 和 state​

poll() 产出 PollResult 批次。每个批次包含 updates 和可选的 state 检查点。

yield {
updates: [
upsert(docA),
upsert(docB),
del(staleId),
],
state: { cursor: page.next_cursor },
};

只有整次轮询成功后,Gety 才会保存这次轮询最后产出的 state,它会成为下次轮询的 lastState。如果轮询失败或被取消,下次轮询会从上一次成功轮询的 state 重新开始。失败的那次轮询中的部分更新可能已经被索引,因为 Gety 会把一个批次分成有限大小的单元写入,而不是作为单个事务。

规则:

  • 让更新可以安全重放。 从同一个 state 再次运行轮询,最终必须得到相同的文档。请根据 lastState 和稳定的文档 ID 生成更新。
  • 先产出更新,再提交检查点。 每批中的 state 应表示该批更新之后到达的进度。
  • 不要提前推进 state。 不要为尚未产出的文档产出 state。
  • 只根据真实信号删除。 只有来源明确表明文档已消失或离开范围时,才调用 del(id)。
  • 在可恢复的边界产出。 远程 API 通常按分页或持久游标产出;本地枚举则按文件或分块产出。
  • 谨慎处理时间戳游标。 保留足够 state,避免漏掉时间戳相同的更新。
  • 保持 state 精简。 state 中只保存游标,不保存数据。较大的数据请放在 this.dataDir 中。
  • 分页或流式处理来源。 SDK 会把过大的批次拆成多条较小的消息,但连接器仍应分页或流式处理来源数据,不要把所有数据都留在内存里。

验证​

安装前运行示例项目的验证任务:

deno task verify

verify 会运行 fix、check、test 和 build:

  • fix 运行格式化和 lint 修复。
  • check 生成配置类型并进行类型检查。
  • test 运行测试。
  • build 生成 Gety 加载的打包入口。

也可以单独运行各步骤:

deno task fix
deno task check
deno task test
deno task build

用本地 runner 演练真实生命周期:

cp .env.example .env
deno task runner -- --reset-state
deno task runner -- --polls 2

Runner 会像 Gety 一样运行每次轮询:使用全新的 Deno 进程,按 manifest 中的 permissions 在 Gety 的沙箱中运行;manifest 没有声明权限时,以完全权限运行。被拒绝的访问会让轮询失败,错误消息与 Gety 中显示的相同。--permissions '<json>' 可以在不修改 manifest 的情况下试用其他权限,--full-access 则不使用沙箱。this.dataDir 是 dev/.runner/data/,内容在多次运行之间保留。

与 Gety 一样,runner 只在轮询成功时保存 state,位置是 dev/.runner/state.json。--reset-state 会忽略该文件,便于测试干净的首次轮询。每次运行都会在 dev/runs/<timestamp>/ 下写入快照:

dev/runs/<timestamp>/
summary.json
state.before.json
state.after.json
updates.json
deletes.json
docs/
0001-<doc_type>__<doc_id>.md
0001-<doc_type>__<doc_id>.json

content_format: "markdown" 时内容文件为 .md,其他情况下为 .txt。文档没有内容时不会生成内容文件。配套 .json 文件始终会生成。请检查 ID 是否稳定、内容是否符合预期、metadata.url 是否正确、时间戳是否符合 RFC 3339、删除操作是否正确,以及前后 state 是否符合预期。

编辑 src/index.ts 后,运行 deno task build,再在 Gety 中点击更多操作(⋯)→ 重启加载新的 dist/main.js。

发布​

用户可以从 GitHub Release 或 npm 包安装已发布的连接器。Gety 从不根据源码构建,也从不调用 GitHub API。它只安装已发布的文件,记录下载内容的 SHA-256,并保存自己的一份代码副本。分步说明见发布连接器。

GitHub Release​

每个版本发布一个 Release。tag 是 manifest 中的 version,可以加 v 前缀(1.2.0 或 v1.2.0)。每个 Release 包含两个附件:

  • manifest.json,与代码包根目录中的 manifest.json 逐字节相同。用户确认前,Gety 只下载这个文件,并展示其中声明的权限。
  • <id>-<version>.zip,其中 id 和 version 取自 manifest。压缩包根目录就是连接器文件夹:manifest.json、入口文件,以及连接器运行时需要的其他所有文件(例如图标、source map 和数据文件),外面不要再套一层文件夹。

代码包限制:最大 100 MiB;解压后最多 20,000 个文件、500 MiB;不能包含符号链接;每个文件都必须以 stored 或 deflate 方式压缩。

用户确认后,Gety 会下载代码包并再次下载 manifest.json。只有代码包中的 manifest.json 与该附件逐字节相同,并且 id 和 version 与用户审查时一致,Gety 才会安装。请在仓库设置中开启 immutable releases,让已发布的 tag 及其附件无法再修改。

默认情况下,Gety 安装 GitHub 标记为 Latest 的 Release。预发布版本只能通过其 Release 链接(https://github.com/<owner>/<repo>/releases/tag/<tag>)或 --version 安装。

npm 包​

npm 包的 package.json 在 gety 对象中携带完整的 manifest:

{
"name": "@acme/gety-linear",
"version": "1.2.0",
"homepage": "https://github.com/acme/gety-linear#readme",
"files": ["dist/main.js", "icon.svg", "CHANGELOG.md"],
"gety": {
"id": "acme-linear",
"name": "Acme Linear",
"version": "1.2.0",
"min_gety_app_version": "0.7.0",
"entry": "dist/main.js",
"icon": "icon.svg",
"capabilities": ["data-source"],
"permissions": { "net": ["api.linear.app"] }
}
}
  • gety 是完整的 manifest,gety.version 必须等于包的 version,按 SemVer 比较,包括预发布和构建元数据。
  • files 必须包含入口文件,以及连接器运行时需要的其他所有文件。还要列出 CHANGELOG.md:设置了 files 后,npm 不会自动打包它。
  • 给 id 加上你自己的前缀(acme-linear,而不是 linear):ID 相同的连接器无法与你的连接器同时安装。
  • 包中的 manifest.json 不会被读取,只有 gety 有效。同时发布到 GitHub 和 npm 时,请把 manifest.json 作为唯一来源,并由它生成 gety 对象。
  • 把 homepage 设为介绍这个连接器的 URL。
  • 包必须是公开的。Gety 安装 latest dist-tag 指向的版本,或用户指定的确切版本(@acme/gety-linear@1.3.0-beta.1、https://www.npmjs.com/package/@acme/gety-linear/v/1.3.0-beta.1 或 --version)。不支持其他 dist-tag 和版本范围。

包的 tarball 与 GitHub 代码包限制相同:最大 100 MiB;解压后最多 20,000 个条目、500 MiB;只能包含 package/ 下的普通文件和文件夹,不能有符号链接或硬链接。registry 必须为它列出 sha512 integrity。

用户确认前,Gety 展示 registry 元数据中该版本 gety 对象声明的权限。用户确认后,Gety 下载 tarball,按 registry 的 integrity 校验;只有 tarball 中 package.json 的 gety 对象与用户审查的一致,Gety 才会安装。npm 不允许修改已发布的版本,因此修改权限就意味着发布新版本。

系统地区为中国大陆时,Gety 会先从 npmmirror 读取包,失败时再回退到 registry.npmjs.org。镜像通常会在几分钟内同步新版本。

版本与更新​

对于从 npm 安装的连接器,Gety 会检查 registry 中是否有新版本,并允许用户在应用中或用 gety connector update 切换到任意已发布的版本,无论更新还是更旧。一个版本只有在比已安装版本高、不是预发布版本、没有被弃用,并且能在用户的 Gety 上运行时,才会作为更新提供。latest dist-tag 不参与这一判断。从 GitHub 或本地文件夹安装的连接器没有版本管理。

调高 min_gety_app_version 不会让使用旧版 Gety 的用户无版本可用:他们会看到该版本需要更新的 Gety,并可以安装更旧的版本。

更新说明。 Gety 显示包根目录中的 CHANGELOG.md,按版本标题分节。## 1.2.0、## v1.2.0 和 ## [1.2.0] - 2026-07-14 都可以,代码块中的标题会被忽略。所有版本请使用相同级别的标题。一节在下一个同级或更高级别的标题处结束;如果该标题不是版本号(例如 ## Unreleased),它和它下面的内容都不会显示。空行之后的 --- 行也算作这样的标题,因此它后面的文字会被截掉。请在文件中保留旧版本的各节。Changesets 生成的就是这种格式。只显示前 1 MiB。

sync_version。 一个整数,省略时为 1。它是连接器已同步内容的格式版本:包括 state、文档 ID 和文档内容。如果新版本无法接着旧版本已同步的结果继续(例如 state 结构改变,或文档 ID 改变),请在这个版本中调高它。用户升级时,Gety 会删除该连接器的文档、清空同步状态,并从头同步。修改 extra_gety_indexed_fields 无需调高 sync_version,效果也相同。

降级总是会删除该连接器的文档并从头同步:不能指望旧版本读得懂新版本写入的 state。

撤回版本。 已发布的版本无法修改。要撤回有问题的版本,请将其弃用:

npm deprecate @acme/gety-linear@1.2.0 "Loses comments; use 1.2.1"

Gety 不会把已弃用的版本作为更新提供。用户仍能看到它,它会被标为已弃用并显示你的说明,用户也可以主动选择它。把 latest 指回旧版本并不能撤回更新的版本。

保留的内容。 连接器的数据目录(this.dataDir)和它的 localStorage 在版本切换后保留;只有需要重新同步时,同步状态才会被清空。用户的配置逐字段保留:id 和类型都不变的字段保留用户的值,包括密钥。类型改变的字段重置为新的默认值,被删除的字段会被移除,新字段使用其默认值。如果某个必填字段最终为空,或某个值不在新的选项中,用户需要在切换前填写。切换时,用户还需要审查新版本新增的权限。

精选列表​

发布在 npm 上的连接器可以在 gety-ai/gety-connectors 中登记,出现在 Gety 精选连接器的社区标签页中。见发布到精选列表和贡献指南。