概述
安装
工具列表
内容详情
替代品
什么是Skill Retriever?
Skill Retriever是一个智能的Claude Code组件检索系统。它解决了社区组件碎片化的问题——目前有超过2,500个组件分散在56个GitHub仓库中。当您需要完成特定任务时,Skill Retriever能够智能地找到最相关的组件集合,自动处理依赖关系,并安全地安装到您的Claude Code环境中。如何使用Skill Retriever?
Skill Retriever作为MCP服务器集成到Claude Code中。您只需在Claude Code中描述您的需求(如'我需要设置Git提交自动化'),系统就会搜索相关组件,检查依赖和冲突,然后一键安装。整个过程完全在Claude Code界面中完成,无需手动查找和配置。适用场景
Skill Retriever特别适合以下场景: 1. 需要扩展Claude Code功能但不知道有哪些可用组件 2. 需要完成复杂任务,涉及多个组件的协同工作 3. 担心组件兼容性和安全性问题 4. 希望自动保持组件库最新状态 5. 需要安全扫描组件中的潜在风险主要功能
如何使用
使用案例
常见问题
相关资源
安装
{
"mcpServers": {
"skill-retriever": {
"command": "uv",
"args": ["run", "--directory", "/path/to/skill-retriever", "skill-retriever"]
}
}
}
{
"mcpServers": {
"skill-retriever": {
"command": "uv",
"args": ["run", "--directory", "/path/to/skill-retriever", "skill-retriever"]
}
}
}🚀 技能检索器
技能检索器是一个基于图的MCP服务器,用于Claude Code组件检索。给定一个任务描述,它能够返回最小的正确组件集(包括代理、技能、命令、钩子和MCP),并解决所有依赖关系。
🚀 快速开始
与Claude Code集成
- 添加到Claude Code的MCP配置:在
~/.claude/claude_desktop_config.json文件中添加以下内容:
{
"mcpServers": {
"skill-retriever": {
"command": "uv",
"args": ["run", "--directory", "/path/to/skill-retriever", "skill-retriever"]
}
}
}
- 重启Claude Code:重启Claude Code以加载MCP服务器。
可用工具
配置完成后,Claude Code可以使用以下工具:
| 工具 | 用途 |
|---|---|
| 搜索与安装 | |
search_components |
根据任务描述查找组件 |
get_component_detail |
获取特定组件的完整信息 |
install_components |
将组件安装到.claude/目录(自动记录安装结果) |
check_dependencies |
在安装前检查依赖关系和冲突 |
| 数据摄入 | |
ingest_repo |
对新的组件仓库进行索引 |
| 同步管理 | |
register_repo |
跟踪仓库以进行自动同步 |
unregister_repo |
停止跟踪仓库 |
list_tracked_repos |
列出所有跟踪的仓库 |
sync_status |
获取同步系统的状态 |
start_sync_server |
启动Webhook和轮询器 |
stop_sync_server |
停止同步服务 |
poll_repos_now |
立即触发轮询 |
| 发现管道 | |
run_discovery_pipeline |
从GitHub发现并摄入新的技能仓库 |
discover_repos |
在GitHub上搜索技能仓库 |
get_pipeline_status |
获取发现管道的配置 |
get_heal_status |
查看自动修复失败的情况和状态 |
clear_heal_failures |
清除跟踪的失败记录 |
| 结果跟踪 | |
report_outcome |
记录使用结果(已使用、已移除、已弃用) |
get_outcome_stats |
获取组件的成功/失败统计信息 |
get_outcome_report |
查看有问题的组件和冲突 |
| 反馈引擎 | |
analyze_feedback |
分析模式以建议图的改进 |
get_feedback_suggestions |
查看待处理的边建议 |
review_suggestion |
接受或拒绝建议的边 |
apply_feedback_suggestions |
将接受的建议应用到图中 |
| 安全扫描 | |
security_scan |
对特定组件进行漏洞扫描(基于正则表达式) |
security_scan_llm |
使用LLM减少误报进行扫描(需要API密钥) |
security_audit |
对所有组件进行审计,按风险级别报告 |
backfill_security_scans |
对未扫描的现有组件进行扫描 |
示例对话
用户:我需要设置使用常规提交的Git提交自动化
Claude:让我搜索相关组件。
[调用search_components,查询参数为 "git commit automation conventional commits"]
我找到了3个有帮助的组件:
1. **commit-command**(命令) - 以常规格式自动执行Git提交
- 得分:0.92
- 健康状态:活跃(2天前更新)
- 令牌成本:450
2. **git-utils**(技能) - Git辅助函数
- 得分:0.85
- 依赖于:commit-command
3. **conventional-commits-hook**(钩子) - 预提交验证
- 得分:0.78
- 健康状态:活跃
你想安装这些组件吗?
用户:是的,请安装
Claude:[调用install_components,组件ID为 ["davila7/commit-command", "davila7/conventional-commits-hook"]]
已将4个组件安装到.claude/目录:
- commands/commit.md
- skills/git-utils.md
- skills/shell-helpers.md(依赖项)
- hooks/conventional-commits.md
现在你可以使用`/commit`命令来创建常规提交了!
包含安全集成的工作流程
┌─────────────────────────────────────────────────────────────────┐
│ Claude Code + 技能检索器工作流程 │
│ │
│ 1. 用户:"我需要JWT身份验证" │
│ │ │
│ ▼ │
│ 2. Claude:search_components("JWT authentication") │
│ │ │
│ ▼ │
│ 3. 技能检索器返回: │
│ ┌────────────────────────────────────────────────────┐ │
│ │ auth-jwt-skill │ │
│ │ 得分:0.89 │ │
│ │ 健康状态:活跃(2天前) │ │
│ │ 安全状态:⚠️ 中等(敏感环境密钥) │ │
│ │ 令牌成本:320 │ │
│ │ │ │
│ │ crypto-utils │ │
│ │ 得分:0.72 │ │
│ │ 健康状态:活跃 │ │
│ │ 安全状态:✅ 安全 │ │
│ │ 令牌成本:180 │ │
│ └────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ 4. Claude:"auth-jwt-skill有中等安全风险(从环境中访问JWT_SECRET)。是否继续?" │
│ │ │
│ ▼ │
│ 5. 用户:"是的,对于JWT来说这是预期的" │
│ │ │
│ ▼ │
│ 6. Claude:install_components(["auth-jwt-skill"]) │
│ │ │
│ ▼ │
│ 7. 技能检索器: │
│ - 解决依赖关系(添加crypto-utils) │
│ - 写入.claude/skills/目录 │
│ - 记录INSTALL_SUCCESS结果 │
│ │ │
│ ▼ │
│ 8. Claude:"已安装auth-jwt-skill + crypto-utils。注意:需要JWT_SECRET环境变量。" │
└─────────────────────────────────────────────────────────────────┘
✨ 主要特性
- 高效检索:基于混合检索(向量 + 图)技术,能够快速准确地找到所需组件。
- 自动同步:每小时自动轮询仓库更新,确保数据的及时性。
- 安全扫描:在摄入和按需扫描组件时,检测安全漏洞,减少潜在风险。
- 反馈学习:通过执行结果反馈到图中,不断改进未来的推荐。
📦 安装指南
# 安装
uv sync
# 运行MCP服务器
uv run skill-retriever
💻 使用示例
基础用法
# 搜索组件
search_components(query="git commit automation conventional commits")
# 安装组件
install_components(["davila7/commit-command", "davila7/conventional-commits-hook"])
高级用法
# 运行安全扫描
security_scan(component_id="owner/repo/skill/name")
# 使用LLM进行安全扫描
security_scan_llm(component_id="owner/repo/skill/name")
📚 详细文档
当前索引
当前索引包含来自56个仓库的2,561个组件,每小时自动发现并同步。
| 类型 | 数量 | 描述 |
|---|---|---|
| 技能 | 1,952 | 封装领域专业知识和程序知识的可移植指令集 |
| 代理 | 492 | 具有隔离上下文和细粒度权限的专业AI角色 |
| 命令 | 40 | 斜杠命令(如/commit、/review等) |
| 钩子 | 37 | 事件处理程序(如SessionStart、PreCompact等) |
| MCP | 37 | 用于外部集成的模型上下文协议服务器 |
| 设置 | 3 | 配置预设 |
顶级仓库
| 仓库 | 组件数量 | 描述 |
|---|---|---|
| sickn33/antigravity-awesome-skills | 722 | 跨领域精心策划的大型技能集合 |
| VoltAgent/awesome-agent-skills | 232 | 200多个与Codex、Gemini CLI兼容的精心策划的技能 |
| wshobson/agents | 226 | 具有129个技能的多代理编排 |
| davepoon/buildwithclaude | 158 | 全栈开发技能 |
| hesreallyhim/awesome-claude-code | 155 | 全面的Claude Code技能集合 |
| K-Dense-AI/claude-scientific-skills | 123 | 科学计算和研究技能 |
| zhayujie/chatgpt-on-wechat | 113 | 具有多平台代理技能的微信机器人 |
| ComposioHQ/awesome-claude-skills | 85 | 与Rube MCP集成的自动化技能(Gmail、Slack、日历) |
| Orchestra-Research/AI-Research-SKILLs | 80 | AI研究技能(微调、可解释性、分布式训练、MLOps) |
| assafelovic/gpt-researcher | 78 | 深度研究代理技能 |
| BehiSecc/awesome-claude-skills | 61 | 文档处理、安全、科学技能 |
| jeffallan/claude-skills | 56 | 社区Claude技能集合 |
| trailofbits/skills | 46 | Trail of Bits专注于安全的技能 |
| remotion-dev/skills | 35 | Remotion视频渲染技能 |
| anthropics/skills | 17 | Anthropic官方技能(Excel、PowerPoint、PDF、技能创建器) |
解决的问题
Claude Code支持存储在.claude/目录中的自定义组件。
代理技能标准
技能是扩展Claude功能的指令文件夹。每个技能都包含一个SKILL.md markdown文件,其中包含名称、描述和指令。技能采用渐进式披露方式,即最初只加载名称和描述,只有在触发时才加载完整的指令。
开放标准意味着技能可以在以下平台上使用:
- Claude AI和Claude Desktop
- Claude Code
- Claude Agent SDK
- Codex、Gemini CLI、OpenCode等兼容平台
组件类型解释
| 类型 | 功能 | 使用场景 |
|---|---|---|
| 技能 | 将领域专业知识和程序知识封装到可移植的指令中 | 可重复的工作流程、公司特定的分析、新功能 |
| 代理 | 具有隔离上下文和工具访问权限的子进程 | 并行执行、专业任务、权限隔离 |
| 命令 | 触发特定行为的斜杠命令(/name) |
快速操作、快捷方式、任务调用 |
| 钩子 | 在事件(如SessionStart、PreCompact)上自动运行 | 上下文设置、自动保存、清理 |
| MCP | 连接到外部系统的模型上下文协议服务器 | 数据库访问、API、文件系统 |
技能、工具和子代理的比较
| 概念 | 类比 | 持久性 | 上下文 |
|---|---|---|---|
| 工具 | 锤子、锯子、钉子 | 始终在上下文中 | 添加到主窗口 |
| 技能 | 如何建造书架 | 渐进式加载 | 名称/描述 → SKILL.md → 引用 |
| 子代理 | 聘请专家 | 会话范围 | 与父级隔离 |
关键见解:技能解决了上下文窗口问题。通过渐进式披露指令,它们避免了用可能永远不需要的数据污染上下文。
解决的问题
目前有1000多个社区组件分散在GitHub仓库中。找到适合你任务的组件、理解它们的依赖关系并确保兼容性是一件痛苦的事情。 技能检索器通过以下方式解决了这个问题:
- 将组件仓库索引到可搜索的知识图中。
- 理解组件之间的依赖关系。
- 准确返回给定任务所需的组件(不多也不少)。
- 直接将它们安装到你的
.claude/目录中。
架构
┌─────────────────────────────────────────────────────────────────┐
│ Claude Code │
│ │
│ "我需要添加Git提交自动化" │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ MCP客户端(内置于Claude Code) │ │
│ │ │ │
│ │ tools/call: search_components │ │
│ │ tools/call: install_components │ │
│ │ tools/call: check_dependencies │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
│
│ stdio (JSON-RPC)
▼
┌─────────────────────────────────────────────────────────────────┐
│ 技能检索器MCP服务器 │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
│ │ 向量存储 │ │ 图存储 │ │ 元数据存储 │ │
│ │ Store │ │ Store │ │ Store │ │
│ │ (FAISS) │ │(FalkorDB/NX)│ │ (JSON) │ │
│ └─────────────┘ └─────────────┘ └─────────────────────────┘ │
│ │ │ │ │
│ └────────────────┼────────────────────┘ │
│ ▼ │
│ ┌───────────────────────┐ │
│ │ 检索管道 │ │
│ │ │ │
│ │ 1. 向量搜索 │ │
│ │ 2. 图PPR │ │
│ │ 3. 得分融合 │ │
│ │ 4. 依赖解析 │ │
│ │ 5. 冲突检查 │ │
│ │ 6. 上下文组装 │ │
│ └───────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
工作原理
1. 摄入(索引仓库)
当你摄入一个组件仓库时:
仓库 (GitHub)
│
▼
┌──────────────────┐
│ 克隆到临时目录 │
└──────────────────┘
│
▼
┌──────────────────┐ 策略(首个匹配策略生效):
│ 爬虫 │ 1. Davila7Strategy: cli-tool/components/{type}/
│ (基于策略)│ 2. PluginMarketplaceStrategy: plugins/{name}/skills/
└──────────────────┘ 3. FlatDirectoryStrategy: .claude/{type}/
│ 4. GenericMarkdownStrategy: 任何带有名称前置元数据的*.md文件
│ 5. AwesomeListStrategy: README.md中的精选列表
│ 6. PythonModuleStrategy: 带有文档字符串的*.py文件
▼
┌──────────────────┐
│ 实体解析器 │ 使用以下方法对相似组件进行去重:
│ (模糊匹配 + 嵌入) │ - RapidFuzz token_sort_ratio (阶段1)
└──────────────────┘ - 嵌入余弦相似度 (阶段2)
│
▼
┌──────────────────┐
│ 索引到: │
│ - 图节点 │ 组件 → 具有类型和标签的节点
│ - 图边 │ 依赖关系 → DEPENDS_ON边
│ - 向量存储 │ 用于语义搜索的嵌入
│ - 元数据 │ 用于安装的完整内容
└──────────────────┘
2. 检索(查找组件)
当你搜索组件时:
查询:"使用常规提交的Git提交自动化"
│
▼
┌───────────────────────────────────────────────────────────────┐
│ 查询规划 │
│ │
│ - 提取实体(关键字、组件名称) │
│ - 确定复杂度(简单/中等/复杂) │
│ - 决定:是否使用PPR?是否使用流程剪枝? │
│ - 检测抽象级别(代理 vs 命令 vs 钩子) │
└───────────────────────────────────────────────────────────────┘
│
┌───────────┴───────────┐
▼ ▼
┌───────────────┐ ┌───────────────────────┐
│ 向量搜索 │ │ 图PPR (PageRank) │
│ │ │ │
│ 语义 │ │ 遵循依赖 │
│ 相似度 │ │ 边以查找 │
│ 通过FAISS │ │ 相关组件 │
└───────────────┘ └───────────────────────┘
│ │
└───────────┬───────────┘
▼
┌───────────────────────────────────────────────────────────────┐
│ 得分融合 │
│ │
│ 综合得分 = α × 向量得分 + (1-α) × 图得分 │
│ 如果指定了组件类型,则进行过滤 │
└───────────────────────────────────────────────────────────────┘
│
▼
┌───────────────────────────────────────────────────────────────┐
│ 传递依赖解析 │
│ │
│ 如果 "commit-command" 依赖于 "git-utils",而 "git-utils" 依赖于 "shell-helpers" → 则包含所有三个组件 │
└───────────────────────────────────────────────────────────────┘
│
▼
┌───────────────────────────────────────────────────────────────┐
│ 冲突检测 │
│ │
│ 检查所选组件之间的 CONFLICTS_WITH 边 │
│ 如果将安装不兼容的组件,则发出警告 │
└───────────────────────────────────────────────────────────────┘
│
▼
┌───────────────────────────────────────────────────────────────┐
│ 上下文组装 │
│ │
│ - 按类型优先级排序(代理 > 技能 > 命令) │
│ - 估计每个组件的令牌成本 │
│ - 保持在令牌预算内 │
│ - 为每个推荐生成理由 │
└───────────────────────────────────────────────────────────────┘
│
▼
┌───────────────────────────────────────────────────────────────┐
│ 结果 │
│ │
│ [ │
│ { id: "davila7/commit-command", score: 0.92, │
│ rationale: "高语义匹配 + 3个依赖项" }, │
│ { id: "davila7/git-utils", score: 0.85, │
│ rationale: "commit-command的必需依赖项" } │
│ ] │
└───────────────────────────────────────────────────────────────┘
3. 安装
当你安装组件时:
install_components(["davila7/commit-command"])
│
▼
┌───────────────────────────────────────────────────────────────┐
│ 解析依赖关系 │
│ │
│ commit-command → [git-utils, shell-helpers] │
│ 总共:3个组件需要安装 │
└───────────────────────────────────────────────────────────────┘
│
▼
┌───────────────────────────────────────────────────────────────┐
│ 写入.claude/ │
│ │
│ .claude/ │
│ ├── commands/ │
│ │ └── commit.md ← commit-command │
│ └── skills/ │
│ ├── git-utils.md ← 依赖项 │
│ └── shell-helpers.md ← 传递依赖项 │
└───────────────────────────────────────────────────────────────┘
4. 发现管道 (OSS-01, HEAL-01)
自动从GitHub发现并摄入高质量的技能仓库:
┌─────────────────────────────────────────────────────────────────┐
│ 发现管道 │
│ │
│ ┌──────────────────┐ │
│ │ OSS Scout │ 在GitHub上搜索技能仓库: │
│ │ │ - 8个搜索查询(claude、skills等) │
│ │ discover() │ - 最小星数:5 │
│ │ ─────────────▶ │ - 最近活动:180天 │
│ └────────┬─────────┘ - 质量评分(星数、主题等) │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 过滤与评分 │ 得分 = 星数 (40) + 近期活动 (20) │
│ │ │ + 主题 (20) + 描述 (10) │
│ │ 最低得分:30 │ + 分支数 (10) │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 摄入新仓库 │ 克隆 → 爬取 → 去重 → 索引 │
│ │ (每次运行最多10个) │ 使用与ingest_repo相同的管道 │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 自动修复器 │ 跟踪失败情况: │
│ │ │ - CLONE_FAILED, NO_COMPONENTS │
│ │ 最大重试次数:3 │ - NETWORK_ERROR, RATE_LIMITED │
│ └──────────────────┘ 自动重试可修复的失败 │
└─────────────────────────────────────────────────────────────────┘
5. 自动同步 (SYNC-01, SYNC-02)
仓库每小时自动轮询更新。轮询器在第一次工具调用时启动,无需手动激活:
┌─────────────────────────────────────────────────────────────────┐
│ 同步管理器 │
│ │
│ ┌──────────────────┐ ┌──────────────────────────────┐ │
│ │ Webhook服务器 │ │ 仓库轮询器 │ │
│ │ (端口9847) │ │ (默认每小时) │ │
│ │ │ │ │ │
│ │ POST /webhook │ │ GET /repos/{owner}/{repo} │ │
│ │ ← GitHub推送 │ │ → GitHub API │ │
│ └────────┬─────────┘ └──────────────┬───────────────┘ │
│ │ │ │
│ └─────────────┬─────────────────────┘ │
│ ▼ │
│ ┌─────────────────────┐ │
│ │ 检测到更改? │ │
│ │ (新提交SHA) │ │
│ └──────────┬──────────┘ │
│ │ 是 │
│ ▼ │
│ ┌─────────────────────┐ │
│ │ 重新摄入仓库 │ │
│ │ (增量式) │ │
│ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
6. 反馈循环 (LRNG-04, LRNG-05, LRNG-06)
执行结果反馈到图中,以改进未来的推荐:
┌─────────────────────────────────────────────────────────────────┐
│ 反馈循环 │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 结果跟踪 (LRNG-05) │ │
│ │ │ │
│ │ install_components() │ │
│ │ │ │ │
│ │ ├── 成功 → INSTALL_SUCCESS + 增加使用次数 │ │
│ │ └── 失败 → INSTALL_FAILURE + 跟踪上下文 │ │
│ │ │ │
│ │ report_outcome() │ │
│ │ ├── USED_IN_SESSION → 使用次数++ │ │
│ │ ├── REMOVED_BY_USER → 负面反馈 │ │
│ │ └── DEPRECATED → 弃用标志 │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 基于使用的提升 (LRNG-04) │ │
│ │ │ │
│ │ 选择率提升: │ │
│ │ 高选择率 → +50% 得分提升 │ │
│ │ 低选择率 → 无提升 │ │
│ │ │ │
│ │ 共同选择提升: │ │
│ │ 经常一起选择 → 每个 +10% (最大30%) │ │
│ │ │ │
│ │ 最终得分 = 基础得分 × 提升因子 │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 反馈引擎 (LRNG-06) │ │
│ │ │ │
│ │ analyze_feedback() 发现模式: │ │
│ │ │ │
│ │ 共同选择 (≥3) → 建议 BUNDLES_WITH 边 │ │
│ │ 共同失败 (≥2) → 建议 CONFLICTS_WITH 边 │ │
│ │ │ │
│ │ 人工审核建议 via review_suggestion() │ │
│ │ 接受的建议 → apply_feedback_suggestions() │ │
│ │ 新边添加到图中并带有置信度分数 │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
关键见解:系统从实际使用中学习。一起工作良好的组件会得到提升,一起失败的组件会被标记为冲突。这创建了一个自我改进的推荐引擎。
7. 安全扫描 (SEC-01)
在摄入和按需扫描组件时,检测安全漏洞:
┌─────────────────────────────────────────────────────────────────┐
│ 安全扫描器 │
│ │
│ 基于Yi Liu等人的 "Agent Skills in the Wild" 研究: │
│ - 26.1%的技能包含易受攻击的模式 │
│ - 5.2%显示恶意意图指标 │
│ - 带有脚本的技能更容易受到攻击(2.12倍) │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 漏洞检测 │ │
│ │ │ │
│ │ 数据泄露 (13.3%) │ │
│ │ - HTTP POST 带有数据负载 │ │
│ │ - 文件读取 + 外部请求 │ │
│ │ - Webhook端点 │ │
│ │ │ │
│ │ 凭证访问 │ │
│ │ - 环境变量收集 │ │
│ │ - SSH密钥 / AWS凭证访问 │ │
│ │ - 敏感环境变量 (API_KEY, SECRET, TOKEN) │ │
│ │ │ │
│ │ 权限提升 (11.8%) │ │
│ │ - 通过变量插值进行Shell注入 │ │
│ │ - 动态代码执行 (eval/exec) │ │
│ │ - sudo执行,chmod 777 │ │
│ │ - 下载并执行模式 │ │
│ │ │ │
│ │ 混淆 (恶意意图) │ │
│ │ - 十六进制编码的字符串 │ │
│ │ - Unicode转义符 │ │
│ │ - 字符串拼接混淆 │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 风险评估 │ │
│ │ │ │
│ │ 风险级别:安全 → 低 → 中等 → 高 → 严重 │ │
│ │ │ │
│ │ 风险得分 (0-100): │ │
│ │ 基础得分 = 发现结果权重之和 │ │
│ │ 脚本乘数 = 如果有脚本则为1.5倍 │ │
│ │ │ │
│ │ 每个组件存储: │ │
│ │ - 安全风险级别 │ │
│ │ - 安全风险得分 │ │
│ │ - 安全发现结果数量 │ │
│ │ - 是否有脚本 │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 集成点 │ │
│ │ │ │
│ │ 摄入:在ingest_repo()期间扫描 │ │
│ │ 检索:在搜索结果中包含安全状态 │ │
│ │ 按需:security_scan() 和 security_audit() 工具 │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
关键见解:安全扫描在潜在易受攻击的模式进入你的代码库之前捕获22%以上的问题。系统标记数据泄露、凭证访问、权限提升和代码混淆。
当前索引统计 (2,561个组件):
| 风险级别 | 数量 | 百分比 |
|---|---|---|
| 安全 | 796 | ~49% |
| 低 | 2 | ~0.1% |
| 中等 | 19 | ~1.2% |
| 高 | 8 | ~0.5% |
| 严重 | 202 | ~12% |
| 未扫描 | 600 | ~37% |
顶级发现模式 (在严重组件中):
| 模式 | 数量 | 备注 |
|---|---|---|
shell_injection |
424 | 许多是markdown中的bash示例(误报) |
webhook_post |
87 | Discord/Slack Webhook URL |
env_harvest_all |
74 | process.env / os.environ 访问 |
ssh_key_access |
51 | 对 .ssh/ 路径的引用 |
http_post_with_data |
38 | HTTP POST 带有数据负载 |
已知限制:
shell_injection模式对markdown中的bash代码块存在误报。- Webhook模式会标记合法的集成(Discord机器人、Slack通知)。
8. LLM辅助的安全分析 (SEC-02)
在正则表达式扫描之上的可选层,使用Claude减少误报:
┌─────────────────────────────────────────────────────────────────┐
│ LLM安全分析器 (SEC-02) │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 使用场景 │ │
│ │ │ │
│ │ - 组件被正则表达式扫描标记为高/严重风险 │ │
│ │ - 怀疑存在误报(文档中的shell命令) │ │
│ │ - 在安装严重组件之前需要确认信心 │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 分析过程 │ │
│ │ │ │
│ │ 1. 运行正则表达式扫描 (SEC-01) 以获取发现结果 │ │
│ │ 2. 将发现结果 + 组件内容发送给Claude │ │
│ │ 3. Claude分析每个发现结果: │ │
│ │ - 它是在文档中还是可执行代码中? │ │
│ │ - 它是合法的功能(JWT访问环境变量)?│ │
│ │ - 上下文:通知技能中的Webhook = 预期 │ │
│ │ 4. 返回每个发现结果的裁决: │ │
│ │ - TRUE_POSITIVE: 真正的安全问题 │ │
│ │ - FALSE_POSITIVE: 安全,错误标记 │ │
│ │ - CONTEXT_DEPENDENT: 取决于使用情况 │ │
│ │ - NEEDS_REVIEW: 无法确定,需要人工审核 │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 调整后的风险得分 │ │
│ │ │ │
│ │ 原始得分 = 75 (严重,5个发现结果) │ │
│ │ │ │
│ │ LLM分析: │ │
│ │ - 3 × FALSE_POSITIVE (markdown中的bash) │ │
│ │ - 1 × TRUE_POSITIVE (环境变量收集) │ │
│ │ - 1 × CONTEXT_DEPENDENT │ │
│ │ │ │
替代品












