Plugin Agent-Tools
OpenClaw Plugins können Agent-Tools (JSON-Schema-Funktionen) registrieren, die dem LLM während Agent-Läufen zur Verfügung stehen. Tools können required (immer verfügbar) oder optional (opt-in) sein.
Agent-Tools werden unter tools in der Hauptkonfiguration konfiguriert, oder pro Agent unter agents.list[].tools. Die Allowlist/Denylist-Policy steuert, welche Tools der Agent aufrufen kann.
Einfaches Tool
import { Type } from "@sinclair/typebox";
export default function (api) {
api.registerTool({
name: "my_tool",
description: "Do a thing",
parameters: Type.Object({
input: Type.String(),
}),
async execute(_id, params) {
return { content: [{ type: "text", text: params.input }] };
},
});
}
Optionales Tool (opt-in)
Optionale Tools werden nie automatisch aktiviert. Nutzer müssen sie zu einer Agent-Allowlist hinzufügen.
export default function (api) {
api.registerTool(
{
name: "workflow_tool",
description: "Run a local workflow",
parameters: {
type: "object",
properties: {
pipeline: { type: "string" },
},
required: ["pipeline"],
},
async execute(_id, params) {
return { content: [{ type: "text", text: params.pipeline }] };
},
},
{ optional: true },
);
}
Aktiviere optionale Tools in agents.list[].tools.allow (oder global in tools.allow):
{
agents: {
list: [
{
id: "main",
tools: {
allow: [
"workflow_tool", // spezifischer Tool-Name
"workflow", // Plugin-ID (aktiviert alle Tools aus diesem Plugin)
"group:plugins", // alle Plugin-Tools
],
},
},
],
},
}
Weitere Config-Optionen, die die Tool-Verfügbarkeit beeinflussen:
- Allowlists, die nur Plugin-Tools nennen, werden als Plugin-Opt-ins behandelt; Core-Tools bleiben aktiviert, außer du nimmst auch Core-Tools oder Gruppen in die Allowlist auf.
tools.profile/agents.list[].tools.profile(Basis-Allowlist)tools.byProvider/agents.list[].tools.byProvider(Provider-spezifische Allow/Deny)tools.sandbox.tools.*(Sandbox-Tool-Policy im Sandbox-Modus)
Regeln + Tipps
- Tool-Namen dürfen nicht mit Core-Tool-Namen kollidieren; kollidierende Tools werden übersprungen.
- Plugin-IDs in Allowlists dürfen nicht mit Core-Tool-Namen kollidieren.
- Nutze
optional: truefür Tools, die Seiteneffekte auslösen oder zusätzliche Binaries/Credentials benötigen.