Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Aceptación de la publicación del plugin

Un plugin de primera parte se acepta para una versión cuando un operador puede instalarlo por nombre en un binario zeroclaw publicado, sin cadena de herramientas de Rust en la máquina, y puede demostrar que el plugin, y no una función integrada, realiza el trabajo. Esta página es el manual de procedimiento para esa prueba y la plantilla para sus evidencias. Utiliza el plugin de canal de Discord como ejemplo resuelto. Para otro paquete, sustituya su nombre, su alias, sus claves requeridas y sus destinos.

Una ejecución demuestra una versión de paquete en una compilación publicada del host. No dice nada sobre otros destinos, otras versiones del host ni el comportamiento bajo carga.

Cuándo ejecutarlo

Ejecútelo después de publicar el lanzamiento y de que la versión del paquete esté en el registro, una vez por cada versión del paquete que el lanzamiento declara soportar. Vuelva a ejecutarlo cuando cambie cualquiera de los dos lados: una nueva versión del paquete o una versión del host que modifique la interfaz del plugin.

Antes de comenzar

  • El artefacto. Un archivo comprimido publicado de la CLI zeroclaw para un destino de 64 bits cuyo host de plugins compila componentes .wasm. Compruébalo primero con Verificación del artefacto de lanzamiento. Un archivo de x86_64 Linux en un contenedor nuevo es el lugar más sencillo para demostrar que no se usó ninguna cadena de herramientas.
  • Una máquina limpia. Sin cadena de herramientas de Rust y sin configuración sobrante de una ejecución anterior.
  • Cuentas de prueba de la plataforma. Para Discord, una aplicación de bot dedicada en un servidor de pruebas pequeño, nunca un bot de producción, con el Message Content Intent activado y el bot invitado (consulta el inicio rápido de Discord), además de una segunda cuenta de Discord para el probador. Planifica restablecer el token del bot cuando termine la ejecución.
  • Un proveedor de modelos. Funciona cualquier proveedor configurado. Un proveedor local con script hace que las respuestas del agente sean repetibles.
  • Un archivo de evidencias. Copia la plantilla de evidencias y complétala a medida que avanzas.

Introduce el token del bot solo en el prompt enmascarado de zeroclaw config set. Nunca lo guardes en un archivo, en una línea de comandos, en el historial de la shell, en una captura de pantalla ni en las evidencias.

1. Registrar el entorno

command -v cargo rustc || echo "no Rust toolchain"
sha256sum zeroclaw-<target>.tar.gz
zeroclaw --version
zeroclaw plugin search discord

Registra el nombre y el digest del archivo, la cadena de versión y la entrada del registro que resuelve la instalación: su nombre, su versión, la URL del archivo y sha256.

2. Instalar por nombre y vincular una instancia

zeroclaw plugin install discord --channel-alias acceptance --egress declared
zeroclaw config set plugins.entries.zpi1_WyJkaXNjb3JkIiwiY2hhbm5lbCIsImFjY2VwdGFuY2UiXQ.config.bot_token
zeroclaw config set plugins.enabled true
zeroclaw plugin info discord

El instalador muestra el enlace y los hosts que concedió. plugin info debe indicar que el paquete se carga en este host y que la clave de instancia indicada arriba existe. Después, manualmente:

  • Añade plugin.acceptance a los channels de un agente habilitado;
  • Añade un grupo de pares con channel = "plugin.acceptance" cuyo external_peers contenga el ID numérico de usuario de Discord del probador.

La página de Discord muestra ambos. No configures ninguna tabla [channels.discord.<alias>] en ningún lugar y luego inicia el daemon. Guarda una copia de config.toml como evidencia; sus secretos permanecen cifrados.

3. Probar el plugin

Sigue la plantilla en orden y anota lo que observes, incluido cualquier imprevisto. Los registros de log que se nombran a continuación están en el log estructurado del daemon, que leen la página de Logs del panel y GET /api/logs (consulta Observabilidad). Usa texto de mensaje sintético en todo momento.

Plantilla de evidencia

ReclamaciónAcciónEvidenciaResultado
Instalado por nombre sin toolchainPasos 1 y 2salida de command -v, salida de la instalación, entrada del registro, resumen criptográfico del archivo
Se carga en este hostzeroclaw plugin info discordSu veredicto de carga
Lo entrante pasa por el pluginThe tester sends a messageUn registro channel inbound message con zeroclaw.channel = plugin.acceptance
Las salidas pasan por el pluginEl agente respondeUn registro reply delivered para plugin.acceptance; una captura de pantalla censurada de la respuesta
El canal integrado no gestionó nadaLee la salida de inicio y /healthLa lista de canales muestra plugin.acceptance y ningún discord.*; /health lista channel:plugin.acceptance y ningún channel:discord.*; la copia de la configuración no tiene la tabla [channels.discord]
Control negativoEstablece channels.plugin.acceptance.enabled en false, reinicia y envía un mensajeSin registro entrante ni respuesta; vuelva a establecerlo en true y reinicie de nuevo antes de la siguiente fila
ReconectarDesconecta la red de la máquina durante al menos dos minutos y, después, restablécela.El siguiente mensaje recibe respuesta; anota si el plugin reanudó su sesión o inició una nueva
ApagadoDetener el daemonEl proceso termina limpiamente; anota cuánto tarda el bot en mostrarse como desconectado.
Destino denegadoElimina *.discord.gg de egress_hosts de la instancia y reiníciaEl gateway no se conecta, el bot permanece sin conexión y no llega ningún mensaje entrante. Un host que registra las conexiones WebSocket rechazadas también escribe un registro plugin_egress_denied con transport = websocket, el host rechazado y un comando remedy; v0.8.6 no escribe ninguno.
Concesión restauradaVuelve a poner *.discord.gg y aplícalo al daemon en ejecución con POST /admin/reload desde la misma máquina (consulta Recarga remota del daemon), sin reiniciarlo por completo. Guardar el cambio, ya sea con zeroclaw config set o editando config.toml, no llega por sí solo al daemon en ejecución.El bot se reconecta; anota cuánto tiempo tardó.
Remitente denegadoEnviar desde una cuenta fuera del grupo de paresUn registro de plugin_channel_sender_denied y ninguna respuesta
Permiso de plataforma faltanteQuita el permiso Enviar mensajes del bot en un canal y envíale un mensaje allíUn fallo de envío en el registro, el daemon sigue en ejecución, sin bucle de reconexión
Token no válidoEstablece un token con sintaxis válida pero no válido o revocado mediante el aviso enmascarado de config set y, a continuación, reinicia.El plugin informa del rechazo de autenticación de Discord y aplica backoff; no aparece ningún bucle de reconexión en el registro durante cinco minutos. Un token mal formado rechazado localmente por configure() no ejercita la autenticación de la plataforma ni el backoff.
La política de confianza se mantieneEstablezca plugins.security.signature_mode en strict sin confiar en la clave del editor del paquete y reinicieEl demonio omite el paquete y registra el rechazo de la firma; plugin.acceptance no se inicia. La CLI informa del paquete rechazado como Plugin discord not found o No plugins installed, así que lea el registro del demonio para conocer el motivo. Restaure el modo anterior

Censurar antes de publicar

Los registros channel inbound message y reply delivered contienen el texto del mensaje y el ID de usuario del remitente. Antes de publicar cualquier cosa:

  • reemplazar los IDs de usuario, de servidor y de canal por marcadores de posición;
  • conserva solo texto de mensaje sintético;
  • sustituye cada valor enc2: de la copia de la configuración por <encrypted>;
  • recorta las capturas de pantalla a los mensajes bajo prueba.

El token nunca aparece en la evidencia, ni censurado ni sin censurar.

Publicar la evidencia

Publica en la incidencia de seguimiento del lanzamiento: el nombre y el digest del artefacto, la salida de zeroclaw --version, la entrada del registro y la versión del paquete, los comandos exactos de los pasos 1 y 2, la tabla completada y enlaces a las pull requests que cambiaron el paquete o el host desde la última ejecución aceptada.

Limpiar

  1. Detén el daemon y ejecuta zeroclaw plugin remove discord. La eliminación conserva la fila [[plugins.entries]] de la instancia y su vínculo [channels.plugin.acceptance], y muestra ambos; elimínalos.
  2. Restablece el token del bot en el Portal para desarrolladores de Discord para que el token usado en la ejecución deje de funcionar.