技能检索系统

一个基于RAG的AI代理技能检索系统,提供语义搜索和本地存储功能。

  • by Ruhal-Doshi
  • TypeScript
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 Ruhal-Doshi/skill-depot

使用说明

技能库

基于RAG的人工智能代理技能检索系统。可扩展的长期存储,通过MCP进行语义搜索。

技能库 用选择性语义检索取代了“将所有技能前沿内容转储到上下文中”的方法。代理技能存储为Markdown文件,并使用向量嵌入进行索引——只有相关技能在需要时才会加载,从而保持上下文简洁。

✨ 特性

  • 🔍 语义搜索 --使用嵌入式矢量搜索,通过含义而不仅仅是关键字来查找技能
  • 🏠 完全本地化 -没有API密钥,没有云。使用SQLite+SQLite-vec进行存储,并使用本地变压器模型进行嵌入
  • 🤖 代理人不可知 --可与Claude Code、Codex、OpenClaw、Gemini和任何兼容MCP的代理配合使用
  • 📂 双作用域存储 --全球技能(~/.skill-depot/)无处不在,项目技能(.skill-depot/)通过git同步
  • ⚡ 自动发现 --在设置过程中从您的AI代理中查找现有技能
  • 🔌 MCP协议 --作为MCP服务器与9个技能管理工具无缝集成
  • 📊 分层细节级别 --三个层次的细节(摘录→ 概述→ 完整内容)以最大限度地减少令牌使用
  • 📈 活动评分 --常用技能在搜索结果中自动排名较高
  • 🔗 关系跟踪 --将相关技能联系在一起,以便代理人发现相关知识

🚀 快速开始

1.初始化

npx skill-depot init

这将:

  • 创建 ~/.skill-depot/ 全球目录
  • 在Claude Code、Codex、OpenClaw目录中扫描现有技能
  • 让您通过交互式清单选择要导入的技能
  • 下载嵌入模型(约80MB,一次性)
  • 索引所有导入的技能

2.配置您的代理

将技能库添加到代理的MCP配置中:

克劳德代码 (~/.claude/mcp.json):

{
  "mcpServers": {
    "skill-depot": {
      "command": "npx",
      "args": ["skill-depot", "serve"]
    }
  }
}

Codex/OpenClaw/Cursor:在代理的设置中添加相同的MCP服务器配置。

3.使用

您的代理现在可以访问这些工具:

工具 说明
skill_search 语义搜索--接受可选 context 为了更好的相关性
skill_preview 在不加载完整内容的情况下获得结构化的概述(标题+第一句话)
skill_read 加载技能的全部内容
skill_learn 学习新东西——创造或附加到技能中(提升)
skill_save 保存新技能并将其编入索引
skill_update 更新现有技能
skill_delete 删除技能
skill_reindex 重建搜索索引
skill_list 列出所有索引技能

📖 运作原理

问题

传统代理技能系统负载 全部 每次会话都将技能文件frontmatter放入代理的上下文窗口。由于拥有庞大的技能库,这会在无关的信息上浪费宝贵的上下文。

解决方案

技能库充当 RAG层 对于代理技能:

  1. 技能存储为带有YAML frontmatter的Markdown文件
  2. 使用局部变换器模型将每种技能嵌入384维向量中
  3. 当代理需要技能时,它会按意义搜索——只返回最相关的技能
  4. 结果包括a hasOverview flag——代理可以加载结构化的概述(skill_preview)或完整内容(skill_read)

分层细节级别

技能库提供三个细节级别的上下文,以最大限度地减少令牌的使用:

级别 工具 你得到什么 典型尺寸
L0——代码段 skill_search 200个字符预览+元数据 ~200个字符
L1——概述 skill_preview 标题+每节第一句 ~500-2000个字符
L2——已满 skill_read 完成原始降价 无限制

代理可以逐步加载详细信息——检查代码片段,预览大纲,并在需要时仅加载完整内容:

Agent → skill_search("deploy nextjs to vercel")
     ← [{ name: "deploy-vercel", score: 0.92, snippet: "...", hasOverview: true }, ...]

Agent → skill_preview("deploy-vercel")
     ← { overview: "## Steps\nInstall the Vercel CLI.\n\n## Configuration\nSet environment variables." }

Agent → skill_read("deploy-vercel")
     ← Full markdown content of the skill

上下文感知搜索

传递可选 context 参数到 skill_search 以获得更相关的结果。在生成搜索嵌入之前,上下文与查询相结合:

Agent → skill_search({ query: "deploy", context: "Next.js app with Vercel, fixing CI pipeline" })
     ← deploy-vercel ranks higher than deploy-aws because the context narrows the search

Agent学习

代理人可以使用以下方式即时保存知识 skill_learn如果技能不存在,它就被创造出来了。如果是这样,新内容将附加一个 --- 标签、分隔符和标签/关键字被自动合并。

Agent → skill_learn({ name: "nextjs-gotchas", content: "API routes cache by default...", tags: ["nextjs"] })
     ← { action: "created" }

Agent → skill_learn({ name: "nextjs-gotchas", content: "Image optimization requires sharp...", tags: ["images"] })
     ← { action: "appended" }   // tags merged: ["nextjs", "images"]

存储体系结构

~/.skill-depot/               # Global (all projects)
├── config.json
├── models/                    # Embedding model cache
├── skills/                    # Global skill files
└── index.db                   # SQLite + vector index

<project>/.skill-depot/        # Project-level (git-synced)
├── skills/                    # Project-specific skills
└── index.db                   # Project vector index (gitignored)

🛠️ CLI参考

# Setup
skill-depot init               # Interactive setup + agent discovery
skill-depot init --auto         # Non-interactive, import everything

# Server
skill-depot serve --project .   # Start MCP server (foreground/stdio)
skill-depot start --project .   # Start as background daemon
skill-depot stop                # Stop daemon
skill-depot status              # Check daemon status
skill-depot restart             # Restart daemon

# Skill Management
skill-depot add <file>          # Add a skill file (project scope)
skill-depot add <file> --global # Add as global skill
skill-depot remove <name>       # Remove a skill
skill-depot list                # List all skills
skill-depot list --global       # List global skills only
skill-depot search <query>      # Search skills from CLI

# Maintenance
skill-depot reindex             # Rebuild all indexes
skill-depot doctor              # Health check

📝 技能格式

技能使用标准的YAML frontmatter+Markdown——与Claude Code、Codex和其他代理使用的格式相同:

---
name: deploy-to-vercel
description: How to deploy a Next.js application to Vercel
tags: [deployment, vercel, nextjs]
keywords: [vercel cli, production build, environment variables]
related: [setup-env-vars, vercel-domains]
---

## Steps

1. Install the Vercel CLI: `npm i -g vercel`
2. Run `vercel` in the project root
3. Follow the prompts to link your project
...

🏗️ 技术栈

组件 技术
语言 TypeScript(ESM)
数据库 SQLite通过 better-sqlite3
矢量搜索 sqlite-vec 扩展
嵌入件 @xenova/transformers (all-MiniLM-L6-v2)
回退 BM25词频哈希
协议 MCP通过 @modelcontextprotocol/sdk
CLI commander + inquirer + chalk + ora

🤝 贡献

欢迎投稿!这是一个开源项目。

# Clone and install
git clone https://github.com/your-username/skill-depot.git
cd skill-depot
pnpm install

# Development
pnpm dev       # Watch mode build
pnpm test      # Run tests
pnpm lint      # Type check
pnpm build     # Production build

📄 许可证

麻省理工学院