跳到主要内容
TABTAB

导航

常见问题

装不上、搜不到、权限弹窗、签名报错 —— 这些问题的答案,通常不在「重启试试」。

插件装了但面板里搜不到

逐条排查:

  1. 插件是不是被停用了 —— 停用不动磁盘,只把它从唤起面上摘掉。
  2. 安装时有没有报「文件已安装到磁盘,但重建插件注册表失败」—— 那说明磁盘上是好的,重启应用即可。
  3. 触发的词是不是只在已安装列表里可见。

市场打不开 / 索引格式错误

索引是整份校验的:任何一条目的包地址不是 https、sha256 不是 64 位十六进制、 版本号非法,都会让整次拉取失败。所以「某一个第三方包写坏了」的后果是 「整个市场都打不开」。自己搭源时先本地跑一遍pnpm sync:market —— 它会把具体是哪一条、为什么拒打印出来。

release 构建里商城功能整个停用

INDEX_SIGNING_PUBKEY 为空时是这样的:不是警告,是硬失败。 私钥只进 CI secret,公钥则是编译进宿主的一个常量 (src-tauri/src/plugin_host/signature.rs)—— 没有环境变量、没有配置文件, 用户可以审计那份二进制。 这不是可选项 —— 索引验不过时,商城功能整体不可用。

重装插件还要再点一次同意

这是刻意的。留着同意记录会让用户下次重装同 id 的插件时被静默放行 —— 他当初点的「同意」可能是几个月前对另一个包的同意,而这次装的是完全不同的代码。

PERMISSION_DENIED,但 Manifest 里明明写了

先看 window.__TABTAB__.config.permissions —— 那是已被授权的集合, 不是你自己写的那份。Manifest 写了但用户没同意,或同意的是旧版本, 这个集合里就不会有它。

为什么公开发布被拒绝了

几乎总是因为 Manifest 声明了 runtime.kind = "process"。 公开市场只收纯网页插件,这类包只能本地导入。 构建脚本会在发布那一刻就拒掉它,而不是等到有人在市场里看到它。

可以自建一个市场源吗

可以。索引地址可在设置里覆盖,必须走 https(本机 localhost 放行)。 索引里的 url 与 icon 同样强制 https。 客户端不校验索引来源的主机名,只认签名 —— 这正是把签名做成强制的原因。

我的插件能不能读用户的文件

能,但要走 fs:read 权限,且安装前会单独征求同意(见权限模型)。能力是 fs.search 与fs.preview / fs.readText:搜索优先走系统索引 (macOS Spotlight、Windows Everything),索引不可用时才退到有界的目录遍历。

读取有闸门,且闸门与搜索是两条路:插件拿到路径,宿主才去读 —— 路径必须是绝对路径、必须已存在且是普通文件、不跟符号链接、单个文件有 体积上限;文件字节暂存在内存里,由 tabtab-file:// 按 token 取回,不经过任何按路径解析的协议。

不给「把相对路径展开到任意根目录」的能力是有意的:一旦允许~/… 这类前缀展开,就要维护一张可配置的根目录白名单, 而那张表本身会变成新的越权面。插件搜出来的每一个路径本来都是绝对路径。