Skip to content

Latest commit

 

History

History
279 lines (175 loc) · 31.9 KB

plugins.md

File metadata and controls

279 lines (175 loc) · 31.9 KB

插件协议 v1 与使用说明

v0.16.0 开始支持声明式 JSON 插件。每个插件可以安装多个工具,不需重新编译主程序;V1 只支持已提供的适配器,不是任意 Rust/Python/JS 代码执行平台。

Studio 资源接收候选

url-text-resource 候选把现有 devtools.transforms.url.encode(工具版本 1.0.2)适配为 Studio 的 text/plain 资源接收能力。它要求 resource.wasi.input.draft2 与 resource.input.types.v1@=1.0.0-preview.1,最多读取一项、8192 字节的用户授权 UTF-8 资源,并复用本机工具相同的 Rust URL 编码实现。当前候选包位于 release/plugin-candidates/url-text-resource-0.1.0-candidate-02/,SHA-256 文件收据位于旁边的 -verification.json。这是未签名的提供方候选,未获 Studio Host 接受;在隔离 profile 验证时,不要同时启用另一个注册相同 capability id 的 transforms 提供方。撤权、取消与过期 grant 的 Host 负例需由 Studio 单独验收。

文本候选 com.zicode.devtools.text/0.3.0 覆盖 JSON 1.2.0 的格式化、压缩和校验三个桌面操作,并保留 Base64 编解码、SHA-256 与 SQL 0.3.1 的通用方言格式化能力。SQL 只覆盖共享核心的默认通用格式,不覆盖桌面端方言、缩进和关键字大小写选项,因此在迁移表中标为部分覆盖。JSON 校验使用独立 devtools.text.json.validate,不再借用格式化操作;使用现有 compute.wasi.v1@=1.0.0-rc.1,单次仅接收明确输入的 UTF-8 文本,最多8192字节,无文件、网络或后台任务权限。候选与包外验证收据只证明提供方构建/测试,不表示 Studio Host 安装、PI 授权或生命周期已验收。没有签名私钥时保持 unsigned 目录,不生成 .zicode-plugin。

格式与检查候选

com.zicode.devtools.inspect/0.1.1 将颜色、YAML/JSON 双向转换、IPv4 CIDR、JWT 内容查看和 Unicode 检查/规范化接入一个分组 View,共 8 个操作。候选位于 release/plugin-candidates/inspect-0.1.1-candidate-01/,SHA-256 收据位于同目录层级的 inspect-0.1.1-candidate-01-verification.json。121 条 native/WASI 字节对照、Wasmtime 预算与冷启动、两主题实际 WASI View 和 schema 验证通过。JWT 不验证签名、有效期或可信度;CIDR 不扫描网络;NFKC 可能改变语义。unsigned 候选不表示 Studio Host/Pi/安装生命周期已验收,accepted capability 计数保持 0。

新版 com.zicode.devtools.inspect/0.1.2 在保持同一 WASM 与 8 个 capability 契约的基础上,增加 tool.open.v1@=1.0.0-preview.1 主 View 定位回调;有效 ID 只选择对应操作,未知 ID 返回 not_found,回调不调用能力。候选 release/plugin-candidates/inspect-0.1.2-candidate-01/ 配有包外逐文件收据及有效/未知/慢回调样例。实际浏览器轻量 SDK 桥在亮/暗主题通过;真实 Studio Host 安装、超时相关性、撤权与场景切换仍待 Studio 验收。旧 0.1.1 候选保持冻结,accepted capability 数仍为 0。

使用

  1. 在“插件与连接器”展开官方示例,安装本地文本配方、Ollama 或 OpenAI 兼容连接器;安装后默认停用。
  2. 查看工具用途和每个 HTTP 请求目标,点击启用。
  3. 在首页分类、搜索或 Ctrl K 中找到插件工具。可收藏,打开后进入最近和常用。
  4. 模型工具需要服务已启动和已有模型:先打开模型列表,再在问答工具输入实际模型名称。示例不会下载模型。
  5. 自定义插件使用“安装本地插件清单”,粘贴 JSON 文件路径,读取预览后安装。
  6. 首次使用远程更新前,从发布者官网、代码仓库等独立可信渠道取得 Ed25519 公钥。先核对软件显示的完整 SHA-256 指纹,再固定发布者名称和公钥。不要从待检查的同一地址取得公钥后直接信任。
  7. 明确填写 HTTPS 签名清单地址并点击“检查更新清单”。只有由本机已固定公钥签名的清单才会进入候选预览;检查任务可在后台任务中心取消。
  8. 也可手动填写已签名插件目录地址并点击“检查插件目录”。目录签名者和目录中每个插件的作者是独立信任主体;搜索目录后,只能获取作者公钥已单独固定的条目。
  9. 获取条目后,软件会重新获取该插件的签名清单,并逐项比对插件 ID、版本、作者指纹,再验清单签名。核对新增、移除和变化的工具及网络/操作声明后,才可手动确认安装或升级。
  10. 更新同 ID 插件时,升级保留上一份清单用于回滚,并自动停用新版本;重新启用前再次核对声明。

本机升级按插件版本的 major.minor.patch 数值比较,只接受更高版本且 ID 一致的清单。升级文件先完整写入暂存,再原子替换;若写入或替换失败,当前版本仍可用。回滚会交换当前版本与上一版本,回滚后同样停用,需重新审核。每个插件只保留最近一次升级前的版本。目录和清单检查只访问用户明确填写的地址,强制 HTTPS(本机回环测试允许 HTTP)、不使用代理、不跟随重定向、不接受地址中的凭据或查询参数,连接最多 5 秒、总计最多 20 秒,响应正文上限 256 KiB。目录签名与插件清单签名使用不同的签名域,目录签名不能代替条目作者签名;未经验证的网络响应不会作为插件安装候选。目录现支持宿主版本与插件清单 schema 协商;自动目录发现和隔离进程资源控制仍未实现。外部修改已安装文件后,刷新清单或重启会使原内容批准失效,需要重新启用。

远程清单签名与发布者信任

远程更新端点返回一个 JSON 签名信封。manifest 是原始插件 JSON 文件字节的标准 Base64;签名针对原始字节,不会先解析后重序列化。key_id 是 Ed25519 原始 32 字节公钥的 SHA-256 小写十六进制摘要;signature 是 Ed25519 签名的标准 Base64。

{
  "schema_version": 1,
  "key_id": "公钥 SHA-256 小写十六进制摘要",
  "manifest": "原始插件清单的 Base64",
  "signature": "签名的 Base64"
}

待签名消息为 UTF-8/字节前缀 ZiDevTools plugin manifest v1、一个 NUL 字节、随后紧接原始 JSON 清单字节。发布者应使用其 Ed25519 私钥签名;32 字节原始公钥以标准 Base64 输入软件。软件将已固定公钥保存在本机插件目录的 trusted-publishers.json,该文件只含名称、公钥和指纹,不含私钥。发布者轮换密钥时,应先通过独立可信渠道核对并固定新公钥,再发布新密钥签名的清单;旧密钥可在“插件发布者信任”中移除。移除只阻止后续验签,不会删除已安装插件。

固定公钥是用户对发布者身份的选择。HTTPS 保护传输,签名证明清单由相应私钥持有者签署;如果首次公钥本身从攻击者控制的渠道取得,签名不能补足这条信任链。手动导入本机 JSON 仍由用户主动预览和确认,不要求签名。

发布者可使用仓库内的开发命令生成密钥和签名信封:

cargo run --bin ZiDevToolsPluginSign -- keygen "我的插件" "D:\publisher\plugin-publisher.pk8"
cargo run --bin ZiDevToolsPluginSign -- sign "D:\publisher\plugin-publisher.pk8" "D:\publisher\plugin.json" "D:\publish\plugin-signed.json"
cargo run --bin ZiDevToolsPluginSign -- sign-catalog "D:\catalog\catalog-publisher.pk8" "D:\catalog\catalog.json" "D:\publish\catalog-signed.json"

keygen 只在新文件不存在时写入 PKCS#8 私钥,并打印供用户核对的公钥和 SHA-256 指纹;sign 与 sign-catalog 分别验证插件清单和目录后以新文件输出签名信封,不覆盖目标文件。私钥必须放在受保护的本地目录并离线备份,不能提交到仓库或上传到网站;网站只托管签名信封。该签名命令是开发期工具,不会加入桌面安装包。

手动签名插件目录

目录是 UTF-8 JSON,最多 256 项;插件 ID 不重复,版本使用 major.minor.patch,清单地址必须满足远程端点限制。publisher_id 是该插件作者公钥的完整 SHA-256 小写十六进制指纹。目录可由目录维护者签名,条目作者可由不同的人签名:

{
  "schema_version": 2,
  "entries": [{
    "plugin_id": "my-text-tools",
    "name": "我的文本工具",
    "version": "1.0.0",
    "description": "本地文本处理工具",
    "manifest_url": "https://plugins.example.test/my-text-tools.json",
    "publisher_id": "作者公钥 SHA-256 小写十六进制指纹",
    "host_app_version_req": ">=0.82.0-dev.1, <0.83.0",
    "plugin_manifest_schema_version": 1
  }]
}

目录签名信封沿用前述字段,其中 manifest Base64 字段承载目录原始 JSON,key_id 是目录签署者指纹;签名消息使用 ZiDevTools plugin catalog v1、一个 NUL 字节和目录原始 JSON 字节。目录 schema_version: 2 要求每项声明 host_app_version_req(SemVer 版本约束)和 plugin_manifest_schema_version。客户端按构建时应用版本及支持的清单 schema 计算兼容性:不兼容条目可以搜索和查看,但不能获取;缺少兼容声明的旧 schema 1 目录会明确标为“未声明”,仍需人工复核。预发布版本要在范围内显式写出预发布比较器,例如 >=0.82.0-dev.1, <0.83.0;普通 * 范围不会匹配 SemVer 预发布版本。先在软件中从独立渠道核对并固定目录签名者,再检查目录。条目作者未固定时仍可查看和搜索,但获取按钮不可用;应从独立渠道核对作者完整指纹并固定后再获取。获取动作只会生成普通插件清单审核预览,并再次核对 ID、版本、作者与清单 schema;目录本身不授予安装、启用、网络调用或更新权限。目录来源库最多保存 32 个本机来源名称和 HTTPS 地址,写入插件数据目录的 catalog-sources.json;不会保存凭据。来源只在用户点击检查时访问,不会在启动或后台自动联网。首次验签成功后,来源会绑定当时的目录签名者指纹;后续同一来源返回其他已信任签名者时拒绝加载。更换签名者前,应先通过独立渠道核对并固定新密钥,再移除旧来源并重新保存。删除来源不会移除发布者信任或已安装插件。来源还会保留最近一次成功验签的目录 schema、时间和条目摘要;再次手动检查后显示新增、更新和移除项,并在更新条目下标明版本、发布者、说明、清单地址、宿主版本范围及插件清单 schema 的具体变化。只有完整签名校验成功且来源签名者一致时才更新快照;失败或取消不会覆盖历史。此本机摘要用于提示目录变化,可能被用户清除或修改,不代替当前响应验签,也不触发插件安装、卸载或启用。旧快照没有字段级摘要时会兼容读取并将无法细分的变化标记为旧快照声明变化。移除来源时相关摘要随来源一并删除。

示例文件在 plugins-examples。普通安装不需要额外拷贝它们,示例已嵌入 EXE。

清单结构

{
  "schema_version": 1,
  "id": "my-text-tools",
  "name": "我的文本工具",
  "version": "1.0.0",
  "description": "本地处理示例",
  "tools": [{
    "id": "deduplicate",
    "version": "0.1.0",
    "version_history": [{
      "version": "0.1.0",
      "date": "2026-10-05",
      "changes": "建立工具版本基线"
    }],
    "name": "文本去重",
    "description": "保留首次出现的顺序",
    "category": "文本与编码",
    "keywords": ["unique", "去重"],
    "aliases": ["remove duplicate lines", "删除重复行"],
    "sample": "a\nb\na",
    "adapter": {"type": "builtin", "tool": "lines", "action": 0}
  }]
}

插件 ID 和工具 ID 只允许小写字母、数字、连字符,长度 1–64;enabled 为保留插件 ID。工具全局 ID 为 plugin:<插件ID>/<工具ID>,不会覆盖内置工具。清单最多 256 KiB,每包 1–64 个工具,最多 128 个插件。未知字段、重复 ID、未知操作和不支持的协议版本会被拒绝。

category 必须为:数据与格式、文本与编码、网络与接口、文件与系统、时间与生成、AI 与模型、知识与检索、扩展与集成、MCP 与 Agent、Java 与 JVM、Python 与 Django。

aliases 是可选的显式中英文名称或同义名称,旧清单可省略。每个工具最多 16 项,每项最多 128 个 UTF-8 字节且不可为空或包含控制字符。精确别名会作为高优先级名称匹配,用于启动器的全局工具搜索;一般关键词仍用于宽松用途匹配。别名只参与本机发现,不改变工具权限或执行行为。插件清单审核预览与已安装插件卡片可展开查看每项工具声明的别名;只读展示不会安装、启用或执行插件。

插件工具可使用独立于插件包的 version 与 version_history。每个工具最多 64 条版本记录,按版本和日期递增,最后一条必须与当前 version 一致;每条包含 version、date(YYYY-MM-DD)和简短 changes。旧清单可以继续省略这两个字段;软件不会把插件包版本复制成工具版本。插件管理页显示当前工具版本及可展开的历史;升级预览单独列出工具版本前后值和新增历史记录。对远程清单,发布者签名也覆盖这些版本记录。版本记录是发布者提供的变更说明,不代表软件独立审计了其准确性。

builtin 支持 tool(内置工具 ID)、action(从零开始的操作序号)、pattern(可选次参数)。以当前版本 tools.rs 的 actions 顺序为准;之后的 SDK 将引入稳定操作 ID 与兼容性范围。

HTTP JSON 适配器

{
  "type": "http",
  "url": "http://127.0.0.1:11434/api/chat",
  "method": "POST",
  "body": {
    "model": "$model",
    "messages": [{"role": "user", "content": "$input"}],
    "stream": false
  },
  "response_pointer": "/message/content"
}
  • method 仅 GET 或 POST;GET 不使用 body。
  • 完整字符串 $input 替换为用户输入字符串,$model 替换为模型字段,$json 将输入解析为 JSON 值。不会拼接字符串形成 JSON,也不执行模板代码。
  • response_pointer 可选,遵循 JSON Pointer;缺失该字段会保留整个 JSON 响应,指定路径不存在时报错。
  • 普通 HTTP 仅允许 localhost、127.0.0.1、::1;其他地址必须 HTTPS。URL 不能含账号、密码、查询参数或片段。
  • 令牌通过运行页的 Bearer 字段输入,不在清单中配置。不得把凭据写入 body、description 或 sample。V1 不支持自定义请求头或复杂认证流程。
  • 输入最多 1 MiB;模板展开有保守的 2 MiB 预算,特殊字符转义会提前计入;请求体和响应最多 2 MiB。连接超时 5 秒,总超时 30 秒。
  • 不跟随重定向,不使用环境代理;仅支持完整 JSON 响应,暂不支持 SSE、工具调用、多轮对话、MCP 会话或流式取消。

API 的合法地址不代表服务可信;安装预览、启用声明与运行目标供用户判断数据去向。启用不发请求,只有点击运行才执行。后台任务执行期间可切换页面,结果写回对应工具,不覆盖其他工具的草稿。

存储与生命周期

插件保存在当前配置目录旁的 plugins/ 下,每个清单对应 <id>.json;enabled.json 只记录启用内容指纹。输入、模型运行草稿、结果与令牌不写入这些文件。清单和偏好是本地用户数据,不提交到源码。

安装不覆盖同 ID 文件;停用保留清单;卸载需确认并清除该插件草稿。令牌切换到不同插件工具时清除,管理页有手动清除按钮。正在运行的请求在完成/超时后才能停用或卸载。任何已批准的网络行为仍受运行页显式操作控制。

进程插件、市场、签名、可信更新、通用设置表单与可复用连接档案请见 平台路线,不要把规划能力当作 V1 保证。

v0.17 交互完善

任务在切换页面后继续运行,完成提示与结果写入原工具。模型占位符存在时必须填写模型名;GET 工具隐藏无关输入。网络错误仅展示最多 300 字符的 JSON error 摘要,不展示任意 HTML 响应。切换页面或工具时清空令牌;已开始请求使用自己的内存副本直至完成。HTTP 请求最长 30 秒,可在插件工作台或任务中心按代次取消客户端等待;客户端断开不保证远端服务停止已收到的 POST 或撤销副作用。

原生专项诊断

v0.18.0 增加 Java/Python 两类与 14 项原生诊断。它们不是任意进程插件:只有显式选择可信 java/python/jfr 后的固定命令可执行。声明式插件 V1 仍不获得任意命令权限。

Stage 22 凭据存储(v0.22.0)

HTTP 工具可输入临时 Bearer 令牌,或点击“保存 / 替换凭据”写入当前 Windows 用户的凭据管理器。令牌不写入插件清单、偏好 JSON、日志和截图。保存条目名以 ZiDevTools/v1 开头。

“本次使用 Windows 已保存凭据”只在当前工具页面生效;切换工具或离开页面会清除该选项及临时输入。只有点击运行才读取所选凭据并发请求。条目缺失或系统存储失败时会报告错误,不会静默发出无认证请求。

凭据绑定插件工具标识、GET/POST 方法及规范化的完整接口 URL。工具或地址变更不会继承旧凭据。按钮“删除此工具凭据”删除当前绑定,不影响其他工具。卸载插件或更改地址不会删除旧系统条目,旧条目可通过 Windows 凭据管理器清理;重新安装并手动选择相同绑定可复用它。已发送的请求不会因删除凭据被撤销。

远程 HTTPS、本机 HTTP 白名单、不跟随重定向等边界保持有效。凭据属于当前 Windows 用户;此命名隔离不等同于防范同一用户下恶意进程的安全边界。自动测试只写入并清理独立生成的测试条目,未访问已有用户凭据。

Stage 22 工具连接设置(v0.22.0)

HTTP 工具运行页提供完整接口地址和模型名称表单。可以用当前编辑值直接运行,也可以点击“保存连接设置”,在重启后复用。“恢复插件默认”会删除当前工具的设置覆盖并恢复清单中的地址/模型,不删除 Windows 凭据。

普通设置存放在插件目录的 settings/connections.json,只存地址与模型,不存令牌、输入、输出或“使用凭据”选项。远程地址必须为 HTTPS,本机 HTTP 仅允许回环地址;地址不能携带账号、密码、查询参数或片段。地址修改会清空临时令牌并取消使用已保存凭据,必须再次显式选择认证方式。

设置按工具标识及完整工具定义摘要隔离。更新工具定义后旧设置不自动生效;旧设置条目保留在本地文件中。保存采用同目录临时文件替换;解析失败、字段非法或文件超限时显示错误并禁止覆盖原文件,需要修复后重启。最多保存 512 条工具设置、文件上限 1 MiB。

这是工具级设置;通用插件设置 schema 尚未实现。跨工具复用见下节。

Stage 22 命名连接档案(v0.22.0)

在 HTTP 工具的“连接设置”中,展开“管理档案”,为当前完整接口地址和模型名称输入名称,点击“另存新档案”。其他工具可以选择兼容档案,再点击“应用到当前工具”。选择下拉项只选择档案,不改地址;应用时复制地址/模型到当前编辑区,并清空临时令牌和已保存凭据使用选项。核对请求目标后再选择认证并运行。需要重启后复用时,另点“保存连接设置”。

兼容性按 HTTP 方法、完整请求模板和结果提取路径判断;接口地址、工具名称和默认模型不同不会阻止复用。不会把 Chat Completions 请求档案自动套到另一种模型协议或 GET 列表接口。此比较只证明适配器格式相同,不能证明目标服务实际可用,服务兼容性仍需运行验证。

“更新选中档案”使用当前编辑区覆盖选中档案,也可修改名称;已应用到其他工具的设置保留原来的快照。删除需二次确认,仅删除档案,保留已应用设置与系统凭据。最多 128 个档案,名称不区分大小写判重;最多 160 字节,不能包含控制字符。档案与普通设置共用 settings/connections.json,不存认证信息、对话、输入或输出;旧版没有 profiles 字段的设置文件可以直接读取。

档案不会共享凭据、自动发送请求、同步修改全部使用者或扫描其他应用。模型列表发现与列表连接检查见下节;不提供生成能力自动验证。

Stage 22 模型发现与列表连接检查(v0.22.0)

带 $model 参数的 POST 工具提供“发现模型 / 检查列表连接”。支持以 /chat/completions 结尾的 OpenAI 兼容地址(同源、保留前缀并查询 /models),以及 /api/chat 或 /api/generate 结尾的 Ollama 地址(查询 /api/tags)。其他路径保留手动模型输入,不猜测接口。查询前显示完整 GET 目标。

查询仅发送 GET,不提交当前输入或生成请求。列表接口认证需单独输入临时令牌,不读取问答接口的系统凭据,避免将精确地址绑定的凭据用于其他路径。该输入在发起查询、修改目标、应用档案、恢复默认或离开工具后清除;不会写入设置或档案。

后台查询最长 10 秒,不跟随重定向,不使用环境代理;响应上限 1 MiB、最多 2048 个模型。解析 OpenAI 的 data[].id 或 Ollama 的 models[].name,校验名称后去重排序。响应中如出现当前查询令牌,整份列表丢弃。失败只显示通用连接、状态码或格式信息,不显示原始错误响应。

结果回到发起查询的工具;目标/定义已经改变时丢弃旧结果。下拉选择只填入模型名称,保存设置或运行仍需点击对应按钮。空列表、错误和耗时均可见;成功仅证明列表 GET 与解析成功,不保证模型可生成、权限完整或协议完全兼容。查询不支持手动取消,可切换页面等待结束,最多 10 秒。

默认运行页收起连接编辑与凭据管理。展开“连接设置 · 地址与模型”编辑和保存;展开“保存与管理凭据”进行系统存储操作。当前请求目标与模型始终显示,默认运行无需展开高级设置。

Stage 23 多轮文本上下文(开发中)

兼容模板须为 POST、model 为 $model、messages 为单条 user/$input、stream 为 false,响应提取为 OpenAI 或 Ollama 文本内容字段;声明 tools/functions 的模板不启用此模式。勾选“多轮上下文”后,运行时发送此前成功的问答及当前输入。单轮行为继续保留。

当前会话默认仅保存在进程内,最多 16 轮且问答文本总计 256 KiB(字节数,不是 token 估算)。达到边界会明确阻止继续;过大的完成结果保留在输出区,但整轮不写入历史。成功后清空输入,失败保留输入和既有历史供显式重试,不自动重试。界面显示轮数、容量及历史。Stage 24 增加了主动保存的本地会话库,见下节。

工具定义、接口地址或模型改变会清空上下文;关闭多轮也清空,切换页面则保留原工具会话,后台结果仍归属原工具。不自动持久化会话、不自动执行模型内容、不支持 tool calls。历史中的 $input/$model 字面量按原文发送。PDF/Word/图片解析、自动恢复会话和 token 预算尚未实现;流式与取消见下节。

Stage 24 本地会话库(已发布)

在受支持文本插件的多轮模式中,展开“本地会话库”,输入名称并点击“保存当前会话”。只有这一步会把成功完成的问答写到 %USERPROFILE%\.zi-devtools\plugins\sessions\,每份是独立的 UUID JSON 文件;最多 64 份。关闭程序不会自动保存当前会话。库文件包含你输入的问答原文,包括可能随消息发送的附件正文,请按本机文件处理。

列表可刷新并显示名称、保存时间和轮数。选择条目后先点“预览所选”,核对完整内容,再点“确认恢复到当前会话”;恢复只替换内存历史,不改变输入草稿、连接设置或凭据,也不自动向模型发请求。模型或连接切换会清除待恢复预览。“删除所选”需要二次确认,只删除这份库文件,不删除另行导出的 Markdown/JSON 副本,也不清空当前内存会话。

文件格式和大小严格校验;损坏或多余文件会跳过并报告数量,不会使有效会话消失。库只保存名称、保存时间和成功问答,不保存接口地址、模型设置、令牌、未发送草稿或未完成输出。JSON 导入导出仍可独立使用。

Stage 25 提示词模板库(开发中)

受支持的文本插件运行页可展开“提示词模板库”,按名称和标签查找模板。点击“新建”可从当前输入开始编辑;保存时写入本机 %USERPROFILE%\.zi-devtools\plugins\prompts\,最多 64 份、每份 20 个修订。选中模板可浏览历史修订并查看相邻版本的文本差异。创建和修订均需明确点击保存;删除整份模板需二次确认。正文可能包含用户输入的信息,模板文件不保存接口地址、令牌或本次填写的变量值。

正文用 {{name}} 引用变量。变量名只能使用 ASCII 字母、数字和下划线,不能以数字开头;{{{{、}}}} 可表示字面量双花括号。最多 12 个不同变量,正文最多 16 KiB,展开后最多 128 KiB。填写所有变量并点击“预览变量展开”后,才能选择“仅填入正文”;此操作替换当前输入,不自动向模型发请求。

模板保存来源工具的模型名称、流式与多轮开关快照。只有当前工具与来源工具一致且模型名称非空时,才可点“填入正文与运行参数”;该操作可能清空与新参数不兼容的内存会话,但不会修改已保存的连接设置。跨工具模板只能填入正文。版本差异只比较所选修订与前一修订,并非模型语义评估。

Stage 23 流式输出与停止(开发中)

受支持文本模板可勾选“流式输出(可停止)”,与多轮模式分别选择。工具清单仍使用 stream=false 的受支持模板,应用只在本次请求中将 stream 改为 true。OpenAI 兼容接口解析 SSE,Ollama 解析 NDJSON;其他插件继续使用原来的非流式请求。

生成中逐步显示文本,可点击“停止生成”,也可切换页面等待。客户端在等待响应头和读取分块期间检查停止请求,丢弃未完成的网络 future 并关闭本地连接;服务端是否继续计算由服务端决定。停止后保留已接收的安全部分输出并标记未完成,保留输入供显式重试,不把这一轮写入多轮上下文。取消优先于尚未被界面收取的完成结果。

只有协议正常结束才提交历史:OpenAI 要求 finish_reason=stop 后收到 [DONE],Ollama 要求 done=true,若有 done_reason 则必须为 stop。提前断流、长度截断、过滤、工具调用、格式错误均不算成功。支持跨块 UTF-8、LF/CRLF/CR 行分隔和开头 BOM。最多120秒、2MiB网络响应、256KiB单行/事件及生成文本。

输出刷新最多每100ms一次,进程内只保留最新快照,不积压分块消息。临时或系统凭据只用于当前绑定接口;对当前令牌原文及JSON转义形式脱敏,可能是令牌前缀的末尾文本在下一块明确前暂不显示。此处理不是任意编码秘密检测器。截图中的流式状态为合成示例,实际传输与取消由本机HTTP测试夹具验证,未测试真实远程模型服务。

主动导出会话

有成功多轮问答时展开“导出会话”,选择Markdown或JSON,可复制或输入完整新文件路径后保存。已有文件不会覆盖;切换格式时请使用对应.md/.json扩展名。

导出仅包含成功提交的问答,不包含内部连接绑定、接口设置、认证配置、未发送输入或失败/取消的部分输出。正文按原文保留,用户在问题中主动输入的敏感信息也属于正文,导出不是通用脱敏工具。Markdown以文本代码围栏承载内容,保留原始Markdown/HTML而不主动执行;JSON使用schema=zi-devtools-conversation、version=1和有序messages数组。

复制/导出不会清空会话,也不会重新发送请求。支持下节所述的主动JSON导入;尚不支持自动恢复。

导入已保存的 JSON 会话

启用多轮后展开“导入会话 JSON”,输入文件完整路径,点击“读取并预览”。确认问答内容及当前请求目标后点击“确认替换会话”,或取消。导入不会发送请求,输入草稿保留;下次运行会把导入历史发给当前模型。运行过程中不能导入。

仅支持本软件schema=zi-devtools-conversation、version=1的JSON,UTF-8(可带BOM)。文件最多2MiB,正文最多256KiB、1至16轮完整user/assistant问答。拒绝未知字段、系统消息、工具消息、空内容和不成对的消息;Markdown不用于恢复。失败保留旧会话,修改路径需重新读取,改变连接/模型废弃待确认预览。确认使用已预览的内存快照,不重新读取可能被修改的文件。

导入不恢复接口地址、模型或认证信息;不自动启动服务、执行工具或加载历史。导入的内容仍须按普通用户提供文本对待。

文本附件

在受支持的OpenAI/Ollama文本工具中,展开输入下方“文本附件”,填写UTF-8文件完整路径,点击“读取附件并预览”。预览保存读取时的完整正文,可移除;文件后来变化不会自动更新附件,需要移除后重新添加。填写处理要求后,点击运行才会发送附件。

最多4个附件,单文件64KiB、总正文128KiB;输入和附件序列化后最多256KiB,多轮历史继续受16轮/256KiB限制。支持txt/md/json/yaml/yml/csv/tsv/log/py/java/xml/toml/properties/sql/js/ts/html/css/rs/ini;不解析PDF、Word、图片、目录或压缩包。非UTF-8、二进制控制字符、空内容、重复文件名或超限会被拒绝。

发送正文包含文件名与内容JSON,不包含文件完整路径。内容是用户选择的输入文本,不自动执行。多轮成功加入历史时,附件正文与实际用户消息一并保留并可随会话导出;附件草稿清空。失败、取消或历史容量不足时保留草稿供调整重试。单轮运行保留附件,用户可手动移除;“清空输入与结果”同时清空附件。

选择附件文件

Windows 版可直接点“选择文件”打开系统文件对话框,选择后立即读取并预览;也可手动填写路径后点“读取附件并预览”。两条入口使用相同的UTF-8、扩展名、大小、数量及内容校验。取消系统对话框不修改草稿。系统对话框只在用户点击时打开;路径不加入发送内容,选择后内存保留正文快照。

后台任务中心接入(2026-10-14)

插件请求与模型列表查询会显示在后台任务中心,切换页面后仍可跟踪状态,完成项可打开原插件工具。流式生成、普通 HTTP 请求及只读模型列表查询均可按运行代次取消;取消普通 HTTP 请求表示停止客户端等待,服务端可能继续处理已接收请求,无法保证回滚副作用。任务摘要不包含输入、模型输出、接口地址或凭据;流式部分内容仍留在原插件工作台。

将插件最终结果接力到其他工具

当前插件成功完成的最终输出可通过顶部“发送结果到工具…”接力至兼容工具。来源标签显示插件工具目录 ID 和版本。运行中的流式片段、失败结果及取消后的部分内容不提供接力。面板会提示检查插件返回内容中的敏感信息,发送仍需逐次预览和确认,不会自动执行、保存或联网。