OxideTerm 插件兼容性 是做什么的?
在分配兼容性边界之前,请阅读相关实现:
crates/oxideterm-plugin-manifest/src/registry.rs:目录发布和更正数据。crates/oxideterm-plugin-registry/src/registry.rs和compatibility.rs:版本选择、缓存需求和启动发现。crates/oxideterm-plugin-registry/src/install.rs:包安装检查。crates/oxideterm-gpui-app/src/workspace/plugin_entity.rs:刷新、激活门控和任务所有权。- 受变更影响的具体宿主 API、运行时或语法加载器。
crates/oxideterm-editor-syntax/src/plugin.rs和crates/oxideterm-gpui-editor/src/languages.rs,用于惰性语法加载和打开文档刷新。
宿主端契约
选择宿主和平台都支持的最高版本。仅当该兼容版本比已安装的插件更新时才提供更新;单独解释不兼容的更高版本。永远不要静默降级。
在应用升级和降级后,在启动时重新检查已安装的插件。对确切的插件 ID 和版本应用最新的缓存更正,而无需重写包文件。保留文件、设置和启用偏好,同时阻止不兼容的激活。保持启动刷新的绑定并归插件实体所有;离线启动使用最后一个有效的缓存。
官方客户端使用 v2 摘要目录,并为已安装的插件和当前市场页面加载校验和绑定历史。历史记录必须与其摘要身份、最新版本、有效宿主范围、大小和 SHA-256 匹配。保留冻结的 v1 端点、确切的快照历史记录、引用的资产和 v1 缓存读取器。所有后续的插件、版本和更正仅属于 v2;现有客户端必须升级宿主才能接收它们。新客户端仅获取 v2;失败时保留最后一个有效缓存,而不是用冻结的 v1 替换它。在发布需要它的宿主之前发布 v2。在替换紧凑的根缓存之前,保存已验证的原始历史记录;启动和手动安装必须为确切安装的版本解决更正。取消过期的页面请求,并丢弃来自另一个页面或目录快照的结果。目录维护和生成属于市场的每个插件源记录和发布自动化。
对于语言提取,请验证语法加载器、Tree-sitter ABI 和实际旧客户端行为。宿主范围无法替代这些检查。不要仅仅因为发布了新插件或应用版本而给旧插件分配上限。
从 2.2.2 开始,语言清单可以声明 displayName、grammarName、extensions 和字面 fileNames。新 ID 是动态的;不要为它们扩展旧版枚举或文件关联表。已发布的语言包保留其回退关联。目录声明取自已验证的存档,并绑定到 v2 历史记录,已安装的清单优先于兼容的目录提示。新声明需要 >=2.2.2;对旧版包的普通查询修复保持其现有的宿主范围。保持打开文档的重新检测、缺失插件路由和离线目录提示在 IDE、本地和 SFTP 预览中保持一致。
从 2.2.2 开始,语言包可以在 injections 中捆绑嵌入的语法。根据声明的校验和验证每个解析器、高亮查询和父选择器;选择器捕获 injection.content。文档拥有每个嵌入的解析器、其取消和释放。在编辑之间保留原始字节坐标,并将子高亮限制在包含区域,替换那里的父捕获,以便模板捕获不能隐藏脚本令牌。捆绑的语法对其父包是私有的,不注册单独的文件关联。
对于 ACP 代理提取,将 ACP 客户端、权限决策和进程所有权保留在宿主中。已发布的 acp 清单保持支持,并归一化为通用助手计划。新的助手清单声明特性 acp、协议 acp 和版本 1。代理直接通过 ACP stdio 通信;不要将它们的流量路由通过普通插件管理器。检查 registry.acp_agents、workspace/acp_plugins.rs 和 workspace/acp_workspace.rs 以了解启动门控、启动解析和清理。2.2.1 及更低版本的宿主无法加载此运行时。在将捆绑的适配器迁移到插件绑定时,保留现有的代理身份和用户选项。
已发布的 Mosh 清单使用 terminal-transport;新的助手清单声明特性 terminal-transport、协议 oxideterm-mosh 和版本 1。将 SSH 引导、终端渲染和本地预测保留在宿主中;UDP、SSP 和加密属于引擎插件。2.2.1 及更低版本的宿主无法加载它。检查 oxideterm-mosh 及其工作空间拥有的 MoshPluginSessions 以了解启动门控和在包替换之前进行进程退役。两个管道方向必须在输出背压下保持独立。RDP、VNC 和 Mosh 共享 remote-connections 目录类别。
协调发布
已发布的远程桌面清单使用 remote-desktop;新的助手清单声明特性 remote-desktop、协议 oxideterm-remote-desktop 和版本 1。两者都归一化为通用助手计划,位于普通插件管理器之外。将原生查看器、输入、凭据和 SSH 隧道所有权保留在宿主中。需要支持的 contributes.remoteDesktop.protocolVersion,并且仅解析受信任、启用、兼容的已安装可执行文件。在更新或删除其文件之前停止并回收助手进程;禁用自动重新连接,直到有兼容的提供者可用。提取助手时,保持现有的二进制 stdio 格式不变。2.2.1 及更低版本的宿主无法加载此运行时。
通用的 helper 清单需要宿主 2.2.2 及更高版本。在归一化它们时,保留已发布的清单种类、能力批准边界和协议负载。运行时计划统一不会将子所有权转移到插件管理器。FIDO 声明特性 ssh-authentication、协议 oxideterm-security-key 和版本 1;其认证任务拥有取消和回收。
插件创建、发布记录和兼容性更正属于 AnalyseDeCircuit/oxideterm-plugins 仓库。通过仓库标识而不是假定本地目录名称来定位其实际检出。阅读其 .agents/skills/oxideterm-plugin-release/SKILL.md 并使用其发布脚本。规范的技能也在以下位置提供:
当该技能或其脚本尚未发布时,请使用本地检出。当缺少所需工具时,不要发明替代的发布流程。仅宿主实现变更并不授权发布插件。
对于更改的行为,在拥有该行为的边界使用现有的注册表和插件实体测试。覆盖受影响的风险:兼容版本选择、升级/降级拒绝、更正恢复或离线启动。不要仅仅因为插件兼容性文件发生了更改而重新运行不相关的测试套件。