技能加载扩展

一个包含MCP服务器的Gemini扩展,用于按需加载技能并管理AI代理的上下文窗口。

  • by MohamedHamed19m
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 MohamedHamed19m/Skill_GEMINI_Extension

使用说明

技能:双子座技能

一个包含MCP(模型上下文协议)服务器的扩展,用于按需加载技能。

概述

该项目提供了一种灵活而动态的方式,为人工智能代理提供“技能”。此Gemini扩展包括一个MCP(模型上下文协议)服务器,用于按需加载技能和自定义命令。 这有助于AI代理根据需要加载技能来管理其上下文窗口。

作为双子座的延伸

该项目旨在用作Gemini扩展。这 gemini-extension.json 文件定义了如何加载和配置扩展。它包括一个MCP服务器和由Gemini CLI自动启动的自定义命令。

MCP服务器在中定义 mcp_app/skills_server.py,自定义命令位于 commands 目录。技能本身位于 skills 目录。

1-安装

此项目使用 uv 用于包装和环境管理。

面向开发人员(本地设置)

  1. 创建和同步虚拟环境:

    运行以下命令以创建名为的虚拟环境 .venv 并从安装依赖项 pyproject.toml:

    uv venv
    uv sync
    
  2. 激活虚拟环境:

    在运行服务器之前,请激活环境。

    在Windows上:

    .venv\Scripts\activate
    
  3. 运行服务器(用于本地测试/开发):

    激活环境后,您可以启动服务器:

    python mcp_app/skills_server.py
    

用户(Gemini CLI扩展安装)

要将此存储库安装为Gemini CLI扩展:

  1. 确保 uv 已安装: 按照上述说明进行安装 uv 如果你还没有。 uv 需要运行此扩展中嵌入的MCP服务器。
  2. 安装扩展:
    gemini extensions install https://github.com/MohamedHamed19m/Skill_GEMINI_Extension
    

安装后,重新启动Gemini CLI会话以确保加载了扩展。

2.激活

重新启动Gemini CLI。以下命令将可用:

  • list_skills() -使用元数据列出所有可用技能(轻量级)。

  • search_skills(query: str, limit: int = 5) -使用关键字匹配搜索相关技能。

  • load_skill(skill_name: str, force_reload: bool = False)-将全部技能内容加载到上下文中。

  • add_skills_directory(path: str) -添加自定义技能目录进行扫描。 注: 这会自动在主界面中创建本地快捷方式(符号链接/连接) skills 文件夹。这确保您始终可以使用一致的路径引用技能资源: ${extensionPath}/skills/<skill-name>/...

更新扩展

  • gemini扩展更新gemini技能

  • gemini扩展更新--全部

技能结构

技能以目录结构组织。服务器扫描 skills 项目中的目录。

每个技能都必须在自己的目录中。目录名是技能名称。在技能目录中,必须有一个名为的文件 SKILL.md.

示例结构:

skills/
└── skill-name/
    ├── SKILL.md (required)
    │   ├── YAML frontmatter metadata (required)
    │   │   ├── name: (required)
    │   │   └── description: (required)
    │   └── Markdown instructions (required)
    ├── scripts/ (optional)
    │   └── *.py
    ├── templates/ (optional)
    │   └── *
    └── resources/ (optional)
        └── *

在这个例子中,技能名称是 my-awesome-skill.内容 SKILL.md 将作为技能内容加载。技能目录中的任何其他文件仅供参考,服务器不会加载。

这 SKILL.md 文件可以有一个YAML frontmatter来提供元数据,例如:

---
description: This is a skill that does awesome things.
keywords: [awesome, skill]
---

The rest of the file is the skill content.

技能名称始终从文件夹名称派生而来。任何 name 前文中提供的字段将被忽略。

AI代理工作流

推荐模式(带搜索)

  1. 搜索相关技能:
   results = search_skills(query="How do I send ARETHIL frames?")
   # Returns: Top 3-5 relevant skills with scores
  1. 加载最佳匹配项:
   load_skill(skill_name=results[0]["name"])
  1. 使用内容回答问题

回退模式(无搜索)

  1. 列出所有技能 (仅当搜索失败时):
   all_skills = list_skills()
  1. 手动筛选 基于关键字/描述

  2. 负载特定技能

该项目由MohamedHamed维护。