小金丝雀注入探测器

让无工具、无凭据的探测模型先检查不可信输入,再由宿主决定如何处理。

Star 数
★ 39
最近更新
4 天前
License
Apache-2.0
主语言
Python

30 秒速览

运行形态
命令行工具代码库 / SDK自托管服务
可在哪里用
通用 · 跨平台Claude Code · OpenAI API
费用
免费,无需付费服务
上手难度
中 · 需要几步配置
开始前需要
Python 3.9+OllamaShell / 命令行网络访问本地文件系统
典型场景
维护 Claude Code 工作流的开发团队,在 UserPromptSubmit 钩子处预检用户提示并阻止不安全输入。
不适合
  • 需要把拦截覆盖到所有历史消息和工具结果的团队
  • 要求 PASS 证明内容绝对安全的团队

这个 Agent 能做什么,适合哪些场景?

Little Canary 是面向智能体的不可信输入预检工具,先把文本交给没有工具和凭据的 canary 模型,再检查其行为是否出现变化。Python 的 SecurityPipeline 将结构检查与行为探测结合,返回 PASS、FLAG、BLOCK 或覆盖不足状态,供宿主按自身拦截能力执行。项目提供 little-canary CLI、Python 库以及仅绑定 loopback 的本地 HTTP 服务,也有 Claude Code、Gemini CLI、OpenAI Agents SDK 等宿主集成。默认实时探测依赖本机 Ollama 和可选的本地模型;StructuralFilter 与离线演示可不调用模型。它是纵深防御中的传感层,PASS 只表示本次检查未发现已覆盖的信号,并不保证内容安全。

对输入文本执行端到端预检:StructuralFilter 在本地查找已知可疑模式;启用 canary 时,SecurityPipeline 将不可信文本送入没有工具和凭据的模型,检查响应中的行为信号,再生成 verdict。可用 little-canary demo 演示离线记录回放,或以 --live 调用 Ollama;little-canary serve 在 127.0.0.1:18421 提供 /check 和 /health,默认仅建议告警,需 --mode block 才选择阻断策略。Python 应用可直接调用 SecurityPipeline.check();little-canary screen 可逐项检查 JSONL。宿主集成会按各自拦截点处理结果,有些只能告警或限制后续工具权限。

  1. 维护 Claude Code 工作流的开发团队,在 UserPromptSubmit 钩子处预检用户提示并阻止不安全输入。
  2. 使用 Gemini CLI 的团队,在 BeforeAgent 阶段检查当前提示,并配置失败时告警或拒绝运行。
  3. 接收网页、邮件或工具结果的智能体开发者,在将不可信文本交给主模型前执行预检。
  4. Python 应用团队,通过 SecurityPipeline.check() 或本地 /check 服务接入结构与行为检查。
  5. 处理 JSONL 文档的运营团队,使用 screen 做逐项判定,或用实验性的 ingest 生成带证据清单的准入结果。

如何安装或部署这个 Agent?

需要 Python 3.9+;离线演示和纯结构过滤不需要下载模型。实时 canary 路径需要安装 Ollama、启动服务并拉取模型。可直接安装 Python 包:

pip install little-canary

启动本地模型服务并下载默认模型:

ollama serve
ollama pull qwen2.5:1.5b

要作为宿主扩展使用,README 也记录了 Gemini CLI 的安装命令:

gemini extensions install https://github.com/hermes-labs-ai/little-canary

如何使用这个 Agent?

先运行离线演示,验证基本流程;这会回放打包的记录,不发起模型或网络调用:

little-canary demo

运行本地 canary 实时演示:

little-canary demo --live --backend ollama --model qwen2.5:1.5b --endpoint http://127.0.0.1:11434

启动默认建议模式的本地服务;如需阻断,显式设置 block:

little-canary serve --mode block --canary-model qwen2.5:1.5b --ollama-url http://127.0.0.1:11434

向服务提交待检文本:

curl -sS http://127.0.0.1:18421/check \
  -H 'Content-Type: application/json' \
  -d '{"text":"untrusted text"}'

Python 项目可安装同一包后导入 StructuralFilter;这只做结构检查,不代表行为层 PASS:

from little_canary import StructuralFilter

screen = StructuralFilter()
result = screen.check("Summarize this quarterly report.")
print(result.blocked, result.reasons)

这个 Agent 有哪些优点和局限?

优点
  • 把行为探测与结构模式检查结合,可观察输入是否改变一个无工具 canary 的行为。
  • 提供无模型的 StructuralFilter 和离线 demo,便于先验证流程或执行纯结构预检。
  • 可经 Python 库、loopback HTTP 服务及多种宿主集成部署,宿主能力矩阵说明哪些能阻断。
  • screen 和实验性 ingest 提供逐项结果;ingest 的准入策略区分检测结果与检查覆盖情况。
局限
  • 实时行为检查默认需要 Ollama 与本地模型;CPU 环境下演示中的单次调用可能耗时数分钟。
  • 效果取决于所选 canary 模型、策略和攻击类型;README 不提供 Little Canary 的检测率承诺。
  • 结构过滤会误拦截安全报告中引用的攻击语句,行为规则也可能误判无害的 canary 回应。
  • 不同宿主的拦截边界不同;例如 OpenCode 仅告警,Hermes Agent 的 BLOCK 会移除后续工具权限,但原提示仍到达模型。

这个 Agent 与同类方案有什么区别?

README 将结构模式过滤与行为式 canary 探测作了区分,也说明独立研究中的 decision-model gate 是相关但不同的方法;该研究数据不是 Little Canary 的产品指标。

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
小金丝雀注入探测器 当前 78 · 表现良好 命令行工具免费 ★ 39 4 天前 Python Claude Code · OpenAI API
Agentic Security 45 · 缺口较多 命令行工具免费 + 模型费 ★ 2k 20 天前 Python OpenAI API
Open Computer Use(MCP 桌面服务) 44 · 缺口较多 命令行工具免费 + 模型费 ★ 2.4k 今天 Swift Codex · Claude Code
Local OpenAI LLM(Home Assistant 自定义集成) 66 · 存在缺口 自托管服务免费 + 模型费 ★ 296 2 天前 Python OpenAI API

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
表现良好
78/ 100 五分制 3.9 / 5
信任安全 21/29
可靠稳定 9/14
适用触发 15/18
规范维护 16/18
有效结果 10/13
证据核验 7/8
查看各维度的扣分理由
信任安全21 / 29 · 3.6/5

材料说明 canary 无工具、无应用凭据且输出不自动转发;HTTP 服务仅绑定 loopback,默认 advisory,阻断需显式选择。批处理及 ingest 的预算、拒绝和发布回滚规则具体;manifest 不含记录正文,导出需显式开启并可校验一致性。扣分:fail-open 故障可能仍给 safe=True,用户确认并非运行时必需;后端接收原始输入,低层对象保留敏感响应,judge 也接收响应;依赖安全有版本下限、CI 和自动更新,但材料未给出依赖审计结果。发布身份未验证,README 有 Hermes Labs 归属声明和包元数据,但不足以独立核实维护责任或身份。

可靠稳定9 / 14 · 3.2/5

材料描述失败时 degraded、risk 为 null、覆盖状态可见,也明确区分 unexercised、error、incomplete,并给出启动健康检查建议。扣分:fail-open 路由可能 safe=True,要求集成方正确识别 degraded;主要依赖 Ollama 可不可用影响实时检测,部分 ingest 配置要求先做上下文验证;诊断说明虽具体,但安全策略承诺 best-effort 且无响应时限。

适用触发15 / 18 · 4.2/5

面向开发者,覆盖结构过滤、实时 canary、HTTP、Python 集成、批量 screening、实验性 ingest 与多种宿主插件;明确区分结构筛查与行为检查、block/advisory、可用后端及 ingest 不支持的 provider/judge。扣分:触发机制依赖有限的结构信号与 canary 行为分析,未证明可覆盖新型攻击;环境适配依赖 Ollama、模型权重和硬件,CPU 调用可耗时数分钟。

规范维护16 / 18 · 4.4/5

README 按概念、快速开始、集成、批处理、ingest 和评估组织,给出详细命令、输入输出示例及限制;Apache-2.0 LICENSE 完整,版本号和 changelog 链接明确。扣分:支持版本表仅列 0.1–0.3,而包元数据是 0.5.0,形成维护信息不一致;维护责任有邮箱和报告渠道,但仅 best-effort,发布者身份未验证。

有效结果10 / 13 · 3.8/5

结果有 PASS/FLAG/BLOCK、状态字段、信号、风险、批次逐项状态及 ingest 覆盖和 admission 证据;相较纯模式匹配,canary 行为检查提供额外检测路径。扣分:README 明确撤回历史检测率且没有当前冻结评估,结构过滤可能误拒引用攻击语句;实时模型成本和延迟较高,且检测仍有覆盖限制。

证据核验7 / 8 · 4.4/5

README 将演示、结构筛查、外部 decision-model 研究与本产品指标分开,并明确外部数字不代表 Little Canary;基准方法、语料、撤回历史结果和 claim boundary 有说明,CI、测试源码、包配置和安全说明提供交叉佐证。扣分:外部基准仅对相关机制提供方向性佐证,当前产品没有可发布的检测率;本评估仅凭静态材料,不能确认运行行为。

风险与缓解建议
  • fail-open 情况下 safe=True 可能表示未检查;集成时必须单独处理 degraded、canary_status 和 analysis_status。
  • 不要把结构筛查的干净结果当作行为 PASS;README 明确表示它只能识别已知模式。
  • 将原始输入发送给所选后端前评估数据处理要求;低层响应和可选 judge 输入也可能含敏感内容。
  • README 的支持版本表止于 0.3.x,与项目版本 0.5.0 不一致。
证据充分度:低 评估于 2026年10月12日 审查版本 59f1a771df8b
查看完整评分方法 →

常见问题

使用时需要付费模型或 API 密钥吗?
README 记录的默认实时路径使用本地 Ollama 模型;离线 demo 和 StructuralFilter 不需要模型调用。未说明托管服务费用或必须购买的订阅。
PASS 是否代表输入安全?
不是。它只表示本次已执行的检查没有发现覆盖范围内的妥协信号;新型攻击仍可能通过。
canary 或服务调用失败时会怎样?
结果会标明 DEGRADED 或 UNSCREENED 等覆盖不足状态;失败开放配置可能让流程继续,但这不是行为 PASS。
canary 能访问我的工具或凭据吗?
设计上 canary 没有工具和凭据,但 README 明确说明它只在应用层无权,并非由操作系统沙箱隔离。
所有集成都能阻止智能体运行吗?
不能。Claude Code 和 Gemini CLI 等路径能在特定钩子拒绝当前运行;OpenCode 只提供告警,Hermes Agent 则通过移除后续工具权限来处理 BLOCK。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents