📦 deps(thirdparty): update snapshots
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
---
|
||||
title: Jetski/Cortex + Gemini 集成指南
|
||||
description: "如何在不超出上下文窗口的情况下,在 Jetski/Cortex 中使用 antigravity-awesome-skills 的 1,494+ 技能。"
|
||||
description: "如何在不超出上下文窗口的情况下,在 Jetski/Cortex 中使用 antigravity-awesome-skills 的 1,684+ 技能。"
|
||||
---
|
||||
|
||||
# Jetski/Cortex + Gemini:与 1,494+ 技能的安全集成
|
||||
# Jetski/Cortex + Gemini:与 1,684+ 技能的安全集成
|
||||
|
||||
本指南展示如何将 `antigravity-awesome-skills` 仓库与基于 **Jetski/Cortex + Gemini** (或类似框架)的代理集成,**而不会超出模型的上下文窗口**。
|
||||
|
||||
@@ -23,7 +23,7 @@ description: "如何在不超出上下文窗口的情况下,在 Jetski/Cortex
|
||||
- 将所有 `SKILL.md` 的内容连接到单个系统提示词中;
|
||||
- 为**每次**请求重新注入整个库。
|
||||
|
||||
对于超过 1,494 个技能,这种方法在添加用户消息之前就填满了上下文窗口,导致截断错误。
|
||||
对于超过 1,684 个技能,这种方法在添加用户消息之前就填满了上下文窗口,导致截断错误。
|
||||
|
||||
---
|
||||
|
||||
@@ -31,14 +31,14 @@ description: "如何在不超出上下文窗口的情况下,在 Jetski/Cortex
|
||||
|
||||
关键原则:
|
||||
|
||||
- **轻量级清单**: 使用 `data/skills_index.json` 来了解存在*哪些*技能,而无需加载完整文本。
|
||||
- **轻量级清单**: 使用根目录的 `skills_index.json` 作为规范清单来了解存在*哪些*技能,而无需加载完整文本。`data/skills_index.json` 只是兼容性镜像。
|
||||
- **延迟加载**: 仅针对对话中实际调用的技能(例如,当出现 `@skill-id` 时)读取 `SKILL.md`。
|
||||
- **显式限制**: 对每轮加载的最大技能数/tokens数施加限制,并提供清晰的回退机制。
|
||||
- **路径安全**: 在读取 `SKILL.md` 之前,验证清单中的路径是否保持在 `SKILLS_ROOT` 内。
|
||||
|
||||
推荐的流程是:
|
||||
|
||||
1. **引导**: 在代理启动时读取 `data/skills_index.json` 并构建 `id -> meta` 映射。
|
||||
1. **引导**: 在代理启动时读取 `skills_index.json` 并构建 `id -> meta` 映射。
|
||||
2. **消息解析**: 在调用模型之前,从用户/系统消息中提取所有 `@skill-id` 引用。
|
||||
3. **解析**: 使用引导映射将找到的 id 映射到 `SkillMeta` 对象。
|
||||
4. **延迟加载**: 仅针对这些 id 读取 `SKILL.md` 文件(最多可达可配置的最大值)。
|
||||
@@ -48,7 +48,7 @@ description: "如何在不超出上下文窗口的情况下,在 Jetski/Cortex
|
||||
|
||||
## 3. `skills_index.json` 的结构
|
||||
|
||||
文件 `data/skills_index.json` 是一个对象数组,例如:
|
||||
文件 `skills_index.json` 是一个对象数组。`data/skills_index.json` 必须保持相同内容,但只作为兼容性镜像。例如:
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -72,7 +72,7 @@ description: "如何在不超出上下文窗口的情况下,在 Jetski/Cortex
|
||||
|
||||
- `fullPath = path.join(SKILLS_ROOT, meta.path, "SKILL.md")`。
|
||||
|
||||
> 注意: `SKILLS_ROOT` 是安装仓库的根目录(例如 `~/.agent/skills`)。
|
||||
> 注意: `SKILLS_ROOT` 是安装仓库的根目录(例如 `~/.agents/skills`)。
|
||||
|
||||
---
|
||||
|
||||
@@ -265,7 +265,7 @@ async function buildModelMessages(
|
||||
## 9. 总结
|
||||
|
||||
- 切勿将所有 `SKILL.md` 连接到单个提示词中。
|
||||
- 使用 `data/skills_index.json` 作为轻量级清单。
|
||||
- 使用根目录 `skills_index.json` 作为轻量级规范清单;仅在宿主必须读取 `data/` 子树时使用 `data/skills_index.json` 兼容性镜像。
|
||||
- 基于 `@skill-id` **按需**加载技能。
|
||||
- 设置明确的限制(每轮最大技能数、token 阈值)。
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
## 此示例演示的内容
|
||||
|
||||
- 如何:
|
||||
- 在启动时加载全局清单 `data/skills_index.json`;
|
||||
- 在启动时加载规范清单 `skills_index.json`(`data/skills_index.json` 只是兼容性镜像);
|
||||
- 扫描对话消息中的 `@skill-id` 模式;
|
||||
- 将这些 id 解析为清单中的条目;
|
||||
- 仅从磁盘读取相应的 `SKILL.md` 文件(延迟加载);
|
||||
@@ -20,7 +20,7 @@
|
||||
- 如何通过 `maxSkillsPerTurn` 强制执行**每轮最大技能数**。
|
||||
- 如何通过 `overflowBehavior` 选择在请求太多技能时是**截断还是报错**。
|
||||
|
||||
此模式避免了在安装 1,494+ 技能时的上下文溢出。
|
||||
此模式避免了在安装 1,684+ 技能时的上下文溢出。
|
||||
|
||||
---
|
||||
|
||||
@@ -49,7 +49,7 @@ import {
|
||||
|
||||
const REPO_ROOT = "/path/to/antigravity-awesome-skills";
|
||||
const SKILLS_ROOT = REPO_ROOT;
|
||||
const INDEX_PATH = path.join(REPO_ROOT, "data", "skills_index.json");
|
||||
const INDEX_PATH = path.join(REPO_ROOT, "skills_index.json");
|
||||
|
||||
// 1. 在代理启动时引导一次
|
||||
const skillIndex = loadSkillIndex(INDEX_PATH);
|
||||
@@ -85,7 +85,7 @@ async function runTurn(trajectory: Message[]) {
|
||||
|
||||
- **不要**遍历 `skills/*/SKILL.md` 并一次性加载所有内容。
|
||||
- 此示例:
|
||||
- 假设技能与 `data/skills_index.json` 位于同一仓库根目录下;
|
||||
- 假设技能与根目录 `skills_index.json` 位于同一仓库根目录下;
|
||||
- 使用纯 Node.js ESM 模块,因此可以在没有 TypeScript 运行时的情况下直接导入。
|
||||
- 在真实主机中:
|
||||
- 将 `buildModelMessages` 连接到您当前在 `TrajectoryChatConverter` 之前组装提示词的位置;
|
||||
|
||||
Reference in New Issue
Block a user