SuperAPI AI 工具集

skill-retrieval

智能体与模型

查看项目

更新于 10-16 01:19

技能介绍

用途:针对 Hermes Agent 的技能检索插件,用渐进式披露降低系统提示中的技能描述开销。Hermes 原本把每个技能描述都塞进系统提示(约 300 个技能时约 11.5K tokens),本插件改为只保留技能名(约 2K),每轮再按需注入少量相关描述(约 0.3K),约节省 9K tokens。

主要能力:两阶段机制。阶段一为 llm_request 中间件,把请求中的 <available_skills> 块重写为仅列技能名,不改 Hermes 构建的系统提示,因此不影响 prompt 缓存。阶段二为 pre_llm_call 钩子,对用户消息分词后用 BM25 Okapi 对技能描述排序,把 top-K 结果以“## Retrieved Skills”注入用户消息之后。索引为纯标准库倒排索引(term → (doc, 预计算 BM25 权重) 列表),首次使用时惰性构建并缓存,随 Hermes 清理技能提示缓存或磁盘 manifest 变化而重建;约 200 技能检索耗时亚毫秒。语料为“name: description”加 SKILL.md 前置元数据中的 triggers 与 metadata.hermes.tags(触发词与标签参与打分,仅描述被注入);已禁用技能跳过。

使用方式:把插件目录复制或软链到 ~/.hermes/plugins/skill-retrieval,然后启用并重启会话。安装命令:ln -s "$(pwd)/plugins/skill-retrieval" ~/.hermes/plugins/skill-retrieval 或 cp -r plugins/skill-retrieval ~/.hermes/plugins/skill-retrieval;hermes plugins enable skill-retrieval;依赖 pip install pyyaml。配置:SKILL_RETRIEVAL_TOP_K 默认 6;SKILL_RETRIEVAL_COMPACT=0 可关闭压缩但保留检索;BM25 参数 k1=1.5、b=0.75 在 scripts/bm25_retriever.py 中;可选 Jev 重排(SKILL_RETRIEVAL_RERANK=jev,需 TYPESAFE_API_KEY,超时 3 秒不重试,失败保留 BM25 顺序,并有本地 A/B 日志与出站候选上限)。启动后可在 Hermes 日志检查 “BM25 index built” 与 “Skill retrieval plugin registered” 判断是否正常。

适用场景:Hermes Agent 中安装了大量技能、希望压缩系统提示 token 的场合。

限制:BM25 是词法检索而非语义检索,改写后的查询可能排序不佳,TOP_K 不建议低于 5。注入时描述超过 200 字符会被截断,需用 skill_view(name) 查看完整内容。阶段一依赖 Hermes 内部 agent.prompt_builder,升级可能失效并跳过压缩。命名为会话需在本进程内构建过系统提示才会注入;重启后未重建的会话不注入。在 Hermes 之外直接编辑嵌套 SKILL.md 不会更新目录 mtime,需等 Hermes 清理缓存或重启。纯标准库索引使用 float64,与旧 scipy 版本相比同分技能的排序可能略有差异。该插件不是 Claude Code 插件,无法在 Claude Code 中加载。