Strumenti agente plugin

I plugin Mayros possono registrare strumenti agente (funzioni JSON-schema) che sono esposti al LLM durante le esecuzioni dell'agente. Gli strumenti possono essere obbligatori (sempre disponibili) o opzionali (opt-in).

Gli strumenti agente sono configurati in tools nella configurazione principale, o per agente in agents.list[].tools. La policy allowlist/denylist controlla quali strumenti l'agente può chiamare.

Strumento base

ts
import { Type } from "@sinclair/typebox";

export default function (api) {
  api.registerTool({
    name: "my_tool",
    description: "Fa qualcosa",
    parameters: Type.Object({
      input: Type.String(),
    }),
    async execute(_id, params) {
      return { content: [{ type: "text", text: params.input }] };
    },
  });
}

Strumento opzionale (opt-in)

Gli strumenti opzionali non sono mai auto-abilitati. Gli utenti devono aggiungerli a un allowlist agente.

ts
export default function (api) {
  api.registerTool(
    {
      name: "workflow_tool",
      description: "Esegue un workflow locale",
      parameters: {
        type: "object",
        properties: {
          pipeline: { type: "string" },
        },
        required: ["pipeline"],
      },
      async execute(_id, params) {
        return { content: [{ type: "text", text: params.pipeline }] };
      },
    },
    { optional: true },
  );
}

Abilita strumenti opzionali in agents.list[].tools.allow (o globale tools.allow):

json5
{
  agents: {
    list: [
      {
        id: "main",
        tools: {
          allow: [
            "workflow_tool", // nome strumento specifico
            "workflow", // id plugin (abilita tutti gli strumenti da quel plugin)
            "group:plugins", // tutti gli strumenti plugin
          ],
        },
      },
    ],
  },
}

Altre manopole configurazione che influenzano la disponibilità degli strumenti:

  • Le allowlist che nominano solo strumenti plugin sono trattate come opt-in plugin; gli strumenti core rimangono abilitati a meno che tu non includa anche strumenti core o gruppi nell'allowlist.
  • tools.profile / agents.list[].tools.profile (allowlist base)
  • tools.byProvider / agents.list[].tools.byProvider (allow/deny specifico provider)
  • tools.sandbox.tools.* (policy strumenti sandbox quando sandboxed)

Regole + suggerimenti

  • I nomi strumento non devono collidere con nomi strumenti core; gli strumenti in conflitto vengono saltati.
  • Gli id plugin usati nelle allowlist non devono collidere con nomi strumenti core.
  • Preferisci optional: true per strumenti che attivano effetti collaterali o richiedono binari/credenziali extra.