← Vytvářejte agenty na Cloudflare / agents / runtime / execution
Agent Skills
Agent Skills jsou instrukce, zdroje a skripty dostupné na vyžádání. Zdroj dovedností poskytuje katalog názvů a popisů dovedností; agent tento katalog přidá do systémového promptu a zpřístupní nástroje, které model může použít, když úkol uživatele odpovídá některé dovednosti: díky tomu rozsáhlá knihovna schopností nezahltí každý prompt.
Engine dovedností se nachází v agents/skills a je nezávislý na frameworku, takže libovolný agent (včetně obyčejného AIChatAgent onChatMessage) může sestavit SkillRegistry. @cloudflare/think ho reexportuje jako skills namespace a propojuje getSkills() do kola automaticky.
Používání Skills s Think
Předpřipravené skills se obvykle importují pomocí Agents Vite plugin:
import { Think, skills } from "@cloudflare/think";
import bundledSkills from "agents:skills"; // resolves to ./skills next to this file
export class MyAgent extends Think {
getSkills() {
return [
bundledSkills,
skills.r2(this.env.SKILLS_BUCKET, { prefix: "skills/" }),
];
}
getSkillScriptRunner() {
return skills.runner({
loader: this.env.LOADER,
workspaceInstance: this.workspace,
});
}
}import { Think, skills } from "@cloudflare/think";
import bundledSkills from "agents:skills"; // resolves to ./skills next to this file
type Env = {
AI: Ai;
LOADER: WorkerLoader;
SKILLS_BUCKET: R2Bucket;
};
export class MyAgent extends Think<Env> {
getSkills() {
return [
bundledSkills,
skills.r2(this.env.SKILLS_BUCKET, { prefix: "skills/" }),
];
}
getSkillScriptRunner() {
return skills.runner({
loader: this.env.LOADER,
workspaceInstance: this.workspace,
});
}
}agents:skills se vyřeší na ./skills adresáře vedle importujícího souboru; použijte agents:skills/<dir> k nasměrování na jinak pojmenovaný sourozenecký adresář. agents:skills import je typován ambientními deklaracemi, které jsou součástí agents, takže import Think ve stejném souboru zpřístupní typ v daném rozsahu platnosti (pro soubor, který importuje pouze specifikátor, přidejte /// <reference types="agents/skills-module" />). Pokud nepoužíváte Agents Vite plugin, sestavte zdroj pomocí skills.fromManifest(...) místo toho.
Zdroje se aplikují v daném pořadí, přičemž vyhrává první zdroj, který zaregistruje daný název dovednosti; pozdější duplicity (nebo zdroj, který se nepodaří načíst) se přeskočí se zaznamenaným varováním, místo aby způsobily selhání agenta.
Importovaný adresář by měl obsahovat jeden podadresář pro každou dovednost:
src/skills/release-notes/SKILL.md
src/skills/release-notes/scripts/format-release-notes.ts
src/skills/release-notes/references/style-guide.mdNástroje typu Skill
Když jsou k dispozici skills, agent zpřístupní:
| Nástroj | Účel |
|---|---|
activate_skill |
Načíst instrukce odpovídající skill a přiložený seznam zdrojů |
read_skill_resource |
Přečíst sdružený prostředek podle { name, path } nebo skill-name/path |
run_skill_script |
Spusťte sbalený skript, když getSkillScriptRunner() vrátí runner |
Skills nejsou trvale aktivní text systémového promptu. Použijte getSystemPrompt() nebo blok kontextu Session pro chování, které by se mělo uplatnit v každém kole. Dovednosti použijte pro postupy, reference, skripty, šablony a materiály specifické pro daný úkol, které se mají načíst jen tehdy, když jsou relevantní.
Spouštění skriptu
Spouštění skriptů je volitelné a vyžaduje vazbu Worker Loader:
{
"worker_loaders": [{ "binding": "LOADER" }]
}[[worker_loaders]]
binding = "LOADER"skills.runner() je experimentální a spouští skripty JavaScript, TypeScript, Python a Bash pod scripts/. TypeScript se kompiluje pomocí @cloudflare/worker-bundler; Python běží jako Python Dynamic Workers; Bash běží prostřednictvím just-bash.
Skripty v JavaScriptu a TypeScriptu mají podobu funkce:
export default async function run(input, ctx) {
const guide = ctx.files["references/style-guide.md"]; // bundled text resources
const docs = await ctx.workspace.readFile("README.md"); // gated by permission
const summary = await ctx.tools.call("summarize", { input }); // explicit tools
await ctx.output.writeFile("notes.md", summary); // scratch artifact
return { ok: true };
}import type { SkillRunContext } from "@cloudflare/think";
export default async function run(input: unknown, ctx: SkillRunContext) {
const guide = ctx.files["references/style-guide.md"]; // bundled text resources
const docs = await ctx.workspace.readFile("README.md"); // gated by permission
const summary = await ctx.tools.call("summarize", { input }); // explicit tools
await ctx.output.writeFile("notes.md", summary); // scratch artifact
return { ok: true };
}ctx je { skill, files, workspace, tools, output }. ctx.files uchovává sbalené textové prostředky podle relativní cesty, ctx.workspace je podmíněno oprávněním workspace, ctx.tools zpřístupňuje pouze nástroje, které runner dostal, a ctx.output.writeFile(name, content) vrátí modelu dočasné artefakty (neupravuje pracovní prostor). Python a Bash místo toho používají kontrakt založený na cestách: /input.json, /context.json, sdružené prostředky pod /skill, a /output pro artefakty.
Předávání workspaceInstance ve výchozím nastavení dává skriptům přístup k pracovnímu prostoru pouze pro čtení. Přístup k síti, nástroje a zápis do pracovního prostoru je nutné povolit explicitně. Výchozí časový limit je 30 sekund.
Příklad
import { Think, skills } from "@cloudflare/think";
export class SkillsAgent extends Think {
getSkills() {
return [skills.r2(this.env.SKILLS_BUCKET, { prefix: "skills/" })];
}
}import { Think, skills } from "@cloudflare/think";
export class SkillsAgent extends Think<Env> {
getSkills() {
return [skills.r2(this.env.SKILLS_BUCKET, { prefix: "skills/" })];
}
}Viz agent-skills příklad ↗ pro předpřipravené skills, skills uložené v R2 a spouštění skriptů.
Související
- Think : propojuje
getSkills()agetSkillScriptRunner()do agentní smyčky - Nástroje Think : jak se nástroje skills slučují s nástroji pracovního prostoru, vlastními nástroji, nástroji MCP a klientskými nástroji