Files
playbook/antigravity-awesome-skills/docs_zh-CN/integrations/jetski-gemini-loader/README.md
T
2026-07-09 16:04:02 +00:00

95 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Jetski + Gemini 延迟技能加载器(示例)
此示例展示了一种将 **agentic-awesome-skills** 与 Jetski/Cortex 风格代理集成的方法,使用基于 `@skill-id` 提及的**延迟加载**,而不是将每个 `SKILL.md` 连接到提示词中。
> 这**不是**生产就绪的库 - 它是一个最小参考,您可以适应自己的主机/代理实现。
---
## 此示例演示的内容
- 如何:
- 在启动时加载规范清单 `skills_index.json``data/skills_index.json` 只是兼容性镜像);
- 扫描对话消息中的 `@skill-id` 模式;
- 将这些 id 解析为清单中的条目;
- 仅从磁盘读取相应的 `SKILL.md` 文件(延迟加载);
- 构建提示词数组,包含:
- 您的基本系统消息;
- 每个选定技能一个系统消息;
- 其余的轨迹。
- 如何通过 `maxSkillsPerTurn` 强制执行**每轮最大技能数**。
- 如何通过 `overflowBehavior` 选择在请求太多技能时是**截断还是报错**。
此模式避免了在安装 1,684+ 技能时的上下文溢出。
---
## 文件
- `loader.mjs`
- 实现:
- `loadSkillIndex(indexPath)`;
- `resolveSkillsFromMessages(messages, index, maxSkills)`;
- `loadSkillBodies(skillsRoot, metas)`;
- `buildModelMessages({...})`
- 另请参阅集成指南:
- [`docs/integrations/jetski-cortex.md`](../jetski-cortex.md)
---
## 基本用法(伪代码)
```ts
import path from "path";
import {
loadSkillIndex,
buildModelMessages,
Message,
} from "./loader.mjs";
const REPO_ROOT = "/path/to/agentic-awesome-skills";
const SKILLS_ROOT = REPO_ROOT;
const INDEX_PATH = path.join(REPO_ROOT, "skills_index.json");
// 1. 在代理启动时引导一次
const skillIndex = loadSkillIndex(INDEX_PATH);
// 2. 在调用模型之前,使用延迟加载的技能构建消息
async function runTurn(trajectory: Message[]) {
const baseSystemMessages: Message[] = [
{
role: "system",
content: "You are a helpful coding agent.",
},
];
const modelMessages = await buildModelMessages({
baseSystemMessages,
trajectory,
skillIndex,
skillsRoot: SKILLS_ROOT,
maxSkillsPerTurn: 8,
overflowBehavior: "error",
});
// 3. 将 `modelMessages` 传递给您的 Jetski/Cortex + Gemini 客户端
// 例如 trajectoryChatConverter.convert(modelMessages)
}
```
使路径和模型调用适应您的环境。
---
## 重要说明
- **不要**遍历 `skills/*/SKILL.md` 并一次性加载所有内容。
- 此示例:
- 假设技能与根目录 `skills_index.json` 位于同一仓库根目录下;
- 使用纯 Node.js ESM 模块,因此可以在没有 TypeScript 运行时的情况下直接导入。
- 在真实主机中:
-`buildModelMessages` 连接到您当前在 `TrajectoryChatConverter` 之前组装提示词的位置;
- 如果您希望明确的用户可见失败而不是静默删除额外技能,请考虑 `overflowBehavior: "error"`;
- 保持路径验证,以便清单条目无法逃脱您配置的技能根目录;
- 如果您想要更严格的安全预算,请添加 token 计数/截断逻辑。