Skip to content

凭据金库(Vault)

凭据金库是 Sigil 的核心。所有 Token、密码、私钥都在这里集中托管,明文不出本机。

设计目标

  • 明文不进文件系统:写入瞬间就交给 OS 密钥环
  • 明文不进 UI:录入后再也看不到原始值
  • 明文不进日志:所有日志路径都经过脱敏
  • 明文不进网络:除非是你主动调用的能力执行所需

凭据类型

类型适用平台必填字段特殊校验
github_tokenGitHubToken前缀 ghp_ / github_pat_
gitee_tokenGiteeToken长度校验
gitcode_tokenGitCodeToken长度校验
db_connPostgreSQL / MySQL / SQLite主机 / 端口 / 用户 / 密码 / 库名尝试只读连接
http_api任意 HTTP 服务基地址 / Header 名 / KeyURL 格式
ssh_key远程服务器私钥内容 / 路径 / 密码(可选)OpenSSH 格式
generic_password通用密码密码强度提醒
custom自定义结构JSONJSON Schema 校验(可选)

每种类型都有对应的 能力体系 默认绑定,比如 github_token 会自动被 git_query / git_mutate / http_request(针对 api.github.com)使用。

存储结构

┌─────────────────────────────────────────────┐
│ Vault 一条记录                               │
├─────────────────────────────────────────────┤
│ id              uuid                        │
│ name            "github-personal"           │
│ type            "github_token"              │
│ tags            ["dev", "readonly"]         │
│ ciphertext_ref  "sigil_cred_xxxxx"  ─────┐  │
│ created_at      2026-05-29T10:00:00Z     │  │
│ updated_at      2026-05-29T10:00:00Z     │  │
│ last_used_at    2026-05-29T10:32:11Z     │  │
│ expires_at      2026-06-28T10:00:00Z     │  │
│ scope_policy    {whitelist: [...]}       │  │
└──────────────────────────────────────────┼──┘

                          OS 密钥环(Windows 凭据管理器)
                          ┌─────────────────────────────┐
                          │ Service: com.agilefr.sigil  │
                          │ Account: sigil_cred_xxxxx   │
                          │ Secret:  AES-256-GCM 密文    │
                          └─────────────────────────────┘

SQLite 里只有元数据 + 一个指向密钥环条目的引用。即使 SQLite 文件被人复制走,也得不到明文(密钥环密文 + AES 主密钥都不在文件系统里)。

使用控制(Scope Policy)

每条凭据可以配置"哪些能力可以用我":

全部能力(默认)

最宽松。任何能力调用时都可能命中这条凭据。适合个人开发、信任 AI 客户端的场景。

白名单

只允许指定能力使用。最常用:

github-personal(只读 Token)
  ├ ✅ git_query        允许:拉分支/提交/tag
  ├ ✅ http_request     允许:调用 GitHub REST API
  └ ❌ 其他能力          禁止

黑名单

允许大部分能力,禁止个别。典型场景:

prod-db-admin(生产数据库管理员)
  ├ ❌ db_execute       禁止:防止 AI 误改生产数据
  └ ✅ 其他能力          允许(含 db_query 只读)

Scope Policy 在每次能力调用前由 Sigil 强制校验。客户端无法绕过——它根本不知道有没有这道闸门。

标签策略

标签是组织凭据的轻量工具。建议双维度:

  • 环境prod / staging / dev / local
  • 身份personal / work / client-xxx

搜索框(Vault 列表顶部)支持按"名称 + 标签"模糊匹配。当凭据超过 30 个时,标签的价值开始显现。

生命周期管理

事件Sigil 行为
距过期 7 天首页右上角铃铛提醒
距过期 1 天红色高亮 + 列表置顶
已过期默认禁用(仍可手动延期)
过期 30 天建议删除提示
90 天未使用标记为"可能闲置"

Sigil 不会自动轮换 Token——每家服务商的 Token 生成 API 都不一样,自动化需要单独适配。Sigil 的定位是提醒 + 协助,由你手动到源头重置。

批量导入

设置 → 数据导入 支持从以下来源批量导入:

来源说明
GitHub CLI (gh auth)扫描 ~/.config/gh/hosts.yml
.env 文件解析 KEY=value 行,预览后用户挑选
Sigil 备份文件(.sigil-backup跨机器迁移

导入过程:

  1. 解析候选 Token 列表(不立即落库)
  2. 用户在 UI 里勾选要导入的项 + 重命名 + 调整标签
  3. 确认后批量加密落库

源文件(如 .env)不会被 Sigil 修改或删除。

删除是不可逆的

删除一条凭据时:

  1. 清除 OS 密钥环中对应密文
  2. 清除 SQLite 元数据
  3. 不进回收站

如果这条凭据正在被某些能力配置引用(比如自定义 HTTP 模板默认用它),删除时会先提示并要求重新关联。

没有"找回"机制——这是设计。需要的话,用 导出 提前备份。

备份与迁移

导出

设置 → 数据导出:

  • 选择凭据范围(全部 / 按标签 / 按类型)
  • 输入主密码(用户自定义,不和 OS 密钥环挂钩)
  • 生成 .sigil-backup 文件(PBKDF2 + AES-256-GCM 包裹)

主密码不在备份文件里,需要你单独记住。

导入

新机器装好 Sigil → 设置 → 数据导入 → 选 .sigil-backup → 输入主密码 → 凭据进金库。

跨平台

备份文件格式是与 OS 无关的——Windows 上导出的文件可以在 macOS 上导入(当 macOS 版本上线后)。

下一步

让 AI 帮你干活,但永远拿不到你的密钥