Skip to content

能力体系(Capabilities) ​

**能力(Capability)**是 Sigil 暴露给 AI 客户端的"动作单元"。每个能力背后是一段 Rust 代码或一个 HTTP 模板,它知道如何使用某种凭据完成某类操作。

心智模型 ​

AI 客户端           Sigil                  目标服务
   │                  │                      │
   │ 我要 git push    │                      │
   ├─────────────────►│                      │
   │                  │ 找到 git_push 能力   │
   │                  │ 查找 github_token    │
   │                  │ 注入 Authorization   │
   │                  ├─────────────────────►│
   │                  │                      │ 执行 push
   │                  │◄─────────────────────│
   │                  │ 脱敏响应             │
   │◄─────────────────│                      │
   │ push 成功        │                      │

能力是"凭据 + 操作"的桥。AI 知道"有哪些操作可以请求",但不知道具体哪条凭据被用、不知道凭据明文。

内置能力清单 ​

当前约 160 个内置能力。但你和 AI 实际看到的通常更少 —— 工具列表会按金库里 存了哪些凭据动态收缩,详见 MCP Server · 按凭据渐进披露。

按用途分组如下,每组都有独立章节讲细节:

分组数量做什么详见
Git 多平台(远端)22一套工具通吃 GitHub / Gitee / GitCode:仓库、issue、PR、releaseGit 平台能力
GitHub 专属33Actions / CI、Release、Secrets 与变量、分支保护、协作者Git 平台能力
GitLab24独立一组,支持自建实例Git 平台能力
本地工作区18暂存、提交、分支、diff、fetch / pull / pushGit 工作区
Git 本地2git_clone / git_pushGit 平台能力
对象存储11R2 / S3 兼容桶的增删查,腾讯云 COS 用量与访问日志分析对象存储
加密分享 / 文件加密8打加密分享包、单文件加密、收件人管理加密分享包
Maven Central6发布身份托管、部署状态、正式发布发布与签名
MQTT / 物联网5设备状态、历史、发布消息MQTT 设备监控
代码签名4签名资产导入、灌 CI Secrets、本地落地发布与签名
邮件4收信、搜索、读信、代发邮件
密码管理4密码检索、复制到剪贴板、TOTP 动态码密码与两步验证
安全管家3凭据健康检查、用量统计、策略校验凭据金库
元工具 / 自省9列凭据、列能力、查审计 —— AI 用来「看看自己能干什么」审计日志
系统级4应用信息、Token 列表、外部客户端、Kill Switch 状态—
HTTP 代理1http_request:自由拼 URL,调用范围最大见下方「自定义 HTTP 模板」

不确定当前有哪些能力,别猜

让 AI 调 list_capabilities 自省,或在桌面端「能力」页看 —— 那才是当前真实生效的清单。 本页表格是按分组给的概览,具体能力名随版本演进。

元工具值得单独说一句 ​

list_capabilities / list_credentials / credentials_for_capability 这几个是给 AI 「认路」用的。AI 接进来第一件事通常是问「我能干什么、有哪些凭据可用」—— 有了这几个工具,它就不用靠猜工具名去试错。

它们返回的全是元信息:凭据的名称、类型、账号、备注,没有任何明文。

自定义 HTTP 模板 ​

Sigil 内置能力覆盖了 80% 通用场景,剩下 20% 通常是"调用我们公司内部 API"——为此提供 HTTP 模板机制,无需写一行 Rust。

一个例子 ​

公司内部对账系统有个接口 POST https://billing.acme.internal/api/refund,需要 X-Service-Token 头鉴权。

在 Sigil → 能力 → 新增 HTTP 模板:

名称:    refund-acme
方法:    POST
URL:     https://billing.acme.internal/api/refund
Headers:
  X-Service-Token: ${cred:acme-internal-svc.value}
  Content-Type: application/json
Body:
  {
    "order_id": "${input:order_id}",
    "reason":   "${input:reason}",
    "operator": "${meta:caller}"
  }
默认凭据:acme-internal-svc
范围:    白名单客户端

占位符语法:

占位符含义
${cred:<name>.<field>}引用金库里某条凭据的某字段
${input:<name>}调用方传入的参数
${meta:caller}当前调用方的 Token 名(用于审计追溯)
${meta:now}当前 ISO 时间戳

保存后,这条 HTTP 模板就出现在 Claude / Cursor 的工具列表里,叫做 refund-acme。AI 可以像调内置能力一样调它,全程不知道 acme-internal-svc 的明文 Token。

占位符替换时机 ​

  • 客户端发起请求
  • Sigil 校验白名单 + Scope Policy
  • 解密 acme-internal-svc → 拿到明文 Token
  • 替换所有 ${cred:...} 占位符
  • 真的发起 HTTP 请求
  • 响应回来后,把所有可能的凭据明文用 [REDACTED:xxx] 占位
  • 返回给客户端

明文只在第 4-5 步之间出现在内存里(< 1 ms),用完立刻清零。

三档确认 ​

内置能力的确认级别由 Sigil 集中判定,用户在界面上改不了单个内置能力的确认开关 —— 这是有意的:能不能绕过确认,不该是一个可以被顺手点掉的选项。

档什么时候表现
阻塞式确认不可逆 / 破坏性 / 安全态变更 / 明文外发弹独立审批窗,执行前等你决定,超时按拒绝
非阻塞通知其余改动型(提交、普通推送、建 issue…)右下角弹一条提示,不打断,可回看
静默只读不打扰,只进审计

阻塞档覆盖的动作包括:删仓库 / 删 release / 删分支 / 清空仓库、强制推送、删除对象存储里的对象、 分支保护与协作者等放权动作、发布到 Maven Central、把明文凭据复制到剪贴板或落到磁盘、 代发邮件、往 MQTT 发消息、打加密分享包。

弹窗里写的是人话,不是 JSON ​

审批窗展示的是动作摘要:动词、风险等级、一句话后果、打的是哪个目标、几个关键字段。

┌──────────────────────────────────────────┐
│  发送邮件                         🔴 高危 │
│  邮件一旦发出无法撤回,收件人会立刻收到   │
│                                          │
│  目标:  alice@example.com               │
│  主题:  发布通知                        │
│  正文开头: 各位,v1.8.0 已经…            │
└──────────────────────────────────────────┘

你在那二十秒里真正要核对的就是「打的是哪个目标、内容是什么」—— 所以摘要把这两条放在最显眼处,而不是让你从一坨参数里自己找。

「本会话不再询问」有边界 ​

批准时可以选「本会话不再询问」或「N 分钟内不再询问」,省得连着做同类操作时反复点。

但有一类能力刻意不提供这个按钮:每次调用打的目标都不一样、且后果不可撤回的那些 —— 任意 URL 的 HTTP 请求、代发邮件、MQTT 发布、删仓库、明文凭据外发。

对它们来说,「批准一次」记下的是「以后对任何目标都不用问」,这和你当时同意的完全不是一回事。 这类操作要连着做很多次,就逐次确认 —— 逐次确认正是它们唯一的安全边界。

能力注解(readOnlyHint / destructiveHint) ​

每个能力在 tools/list 里都带 MCP 行为注解,供客户端做分级审批:

注解含义客户端典型行为
readOnlyHint: true只读、无副作用(各 *_list / 自省类)可免二次确认、失败可安全重试
destructiveHint: true破坏性(删除 / 覆盖 / 不可逆,如删分支、强制推送、取消 run)强确认

注解是给客户端的 UX 提示,不是安全保证 —— 真正的拦截在 Sigil 这一侧。

防误删的硬校验 ​

有些动作光靠弹窗还不够,因为人也会顺手点确认。这几个加了参数级校验:

  • 删仓库:调用方必须把确认字段填成与仓库全名完全一致的字符串,否则直接拒绝。 防的是模型一次幻觉就把整个仓库删掉。
  • 建仓库:一律私有,入参覆盖不了。需要公开仓请去平台网页端手动改。
  • 强制推送:不开放裸的强制覆盖,内部一律走带安全基准的方式 —— 远端被别人改动过就拒绝执行,而不是盖掉。

AI Kill Switch ​

Sigil 状态栏右下角有一个红色拨杆——禁用所有 AI 能力执行。

启用后:

  • MCP Server 仍在监听,但所有能力调用立即返回 kill_switch_active
  • 金库 UI 仍可正常使用(人能看、能管理)
  • 审计日志记录"Kill Switch 期间被拦截 N 次"

适用场景:

  • 上线敏感时段(不希望任何代理执行)
  • 应急响应(怀疑某个 Token 泄漏,先全停再排查)
  • 合规审查窗口

下一步 ​

若依科技工作室 · 承接后台管理 / 桌面软件 / 全栈 / 小程序定制开发 · 技术服务咨询