Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Modelos de decisión

A decision model answers typed questions about an event instead of generating text. An SOP can ask one, after its trigger matches and before a run starts:

Un modelo de decisión responde preguntas tipadas sobre un evento en lugar de generar texto. Un SOP puede hacer una de estas preguntas después de que su disparador coincida y antes de que comience una ejecución:

  • Puerta: ¿debería este evento iniciar este SOP en absoluto?
  • Modo: ¿cuál de los modos de ejecución enumerados por el autor corresponde a esta ejecución?

Esto permite que un solo disparador (una ruta de webhook, un canal o un tema de MQTT) alimente varios SOP, y que el modelo decida para cuál de ellos es realmente el evento y cuánta supervisión humana recibe cada ejecución.

ZeroClaw habla la API de decisiones tipadas “System One” (POST <base_url>/v1/systemone). Dos modelos la implementan:

ModeloDónde se ejecutaNotas
TypeSafe JevAPI alojada, clave de APIEl contenido del evento se envía a TypeSafe.
LayaAutoalojado (laya-serve)Pesos abiertos; sin clave; el contenido de los eventos permanece local.

Configurar modelos

Declara cada modelo con un alias en config.toml y elige su provider:

providerServiciobase_url por defectomodel por defectoClave
jev (predeterminado)TypeSafe Jev, alojadohttps://api.typesafe.aijev-latestapi_key requerido
layaLaya mediante laya-servehttp://127.0.0.1:8000layaninguno
customCualquier otro endpoint compatible con System Oneobligatoriojev-latestopcional
[decision_models.jev]
provider = "jev"
# api_key es un secreto; configúralo con `zeroclaw config` o
# ZEROCLAW_decision_models__jev__api_key.

[decision_models.laya]
provider = "laya"

[decision_models.gpu_box]
provider = "custom"
base_url = "http://10.0.0.5:8000"
model = "laya"

base_url y model anulan los valores predeterminados del proveedor. Una entrada custom sin base_url se ignora, y los SOP que la seleccionen recurren a su modo más estricto. Los alias también se pueden gestionar desde la página Config del panel de control.

Seleccione un modelo en un SOP

En el editor de SOP del panel web, marca Modelo de decisión en Modo de ejecución y elige un modelo configurado del menú desplegable; la compuerta, los modos y los umbrales se editan en el mismo panel. Al guardar, se rechaza una tabla [decision] no válida y se indica el motivo.

En un SOP respaldado por archivos, añade una tabla [decision] a SOP.toml y asigna el alias:

[decision]
model = "jev"
gate = "¿El cliente está pidiendo que le devuelvan el dinero?"
gate_threshold = 0.7
modes = ["auto", "supervised", "step_by_step"]
mode_instructions = "auto: menos de $50 y rutinario. step_by_step: más de $500, amenazas legales o cualquier cosa inusual."
min_confidence = 0.7
CampoPredeterminadoEfecto
modelobligatorioAlias de [decision_models].
gateunsetSí/no: la ejecución solo se inicia cuando la probabilidad de “yes” del modelo alcanza gate_threshold; de lo contrario, el evento se registra como omitido para este SOP.
gate_threshold0.7Probabilidad mínima de «sí» para iniciar
gate_on_errorrun_strictCuando el modelo no puede responder: run_strict inicia la ejecución en su modo de cierre por fallo (fail-closed), skip no la inicia.
modesvacíoModos que el modelo puede elegir para esta ejecución. Solo auto, supervised y step_by_step. Si está vacío, se mantiene el execution_mode definido en el autor.
mode_instructionsgenéricoOrientación para la elección del modo.
min_confidence0.7Una elección de modo por debajo de esta confianza usa el modo fail-closed.
part_threshold0.5Probabilidad mínima de “sí” para ejecutar un paso con una pregunta decide. Consulta Pasos condicionales.

Una tabla [decision] necesita un gate, modes o un paso con decide. modes no se puede usar con un SOP determinista.

Pasos condicionales

A un paso puede incluir su propia pregunta de sí o no. El modelo responde a ella en la misma solicitud que la condición de control y el modo, de modo que una sola llamada decide qué pasos incluye una ejecución. Esto compone un SOP a partir de partes, en lugar de dividirlo en varios SOP que cada uno pregunta al modelo si debe iniciarse.

## Steps

1. **Hold for a maintainer** - Draft a comment that tags a maintainer to decide on scope.
   - decide: Does this PR add a new feature outside the roadmap and existing features?

2. **Security review** - Review the auth, secret, and sandbox changes.
   - decide: Does this PR touch authentication, secrets, or sandboxing?
   - unless_decided: 1

3. **Test review** - Check that the changed behavior is tested.
   - decide: Does this PR change runtime behavior?
   - unless_decided: 1

4. **Compose the review** - Combine the findings into one review comment.
   - unless_decided: 1
  • - decide: <question> ejecuta el paso solo cuando la probabilidad de respuesta “sí” alcanza part_threshold.
  • - unless_decided: N omite el paso cuando la pregunta del paso N se respondió afirmativamente. El paso N debe tener una pregunta de tipo decide.
  • Un paso omitido se registra con el estado skipped y el motivo, y la ejecución continúa con el siguiente paso en orden. El siguiente paso recibe la entrada que habría recibido el paso omitido.
  • Cuando el modelo no puede responder, o responde la pregunta de un paso con un valor mal formado, ese paso se ejecuta. Omitirlo nunca es la opción segura por defecto.
  • Los guardas de enrutamiento pueden leer las respuestas: $.decisions.2 es la probabilidad de “sí” del paso 2 en una condición when:.
  • Otro paso no puede depends_on un paso condicional, porque un paso omitido no produce ninguna salida. Lea $.steps.N en una condición when: en su lugar.
  • Un paso se omite antes de su puerta de aprobación, por lo que un paso omitido nunca solicita aprobación.

Seguridad

  • El modelo solo elige entre lo que escribió el autor. No puede añadir disparadores, elegir un modo que no esté en la lista, ni seleccionar priority_based o deterministic.
  • A el modo elegido se aplica solo a esa ejecución y se almacena con la ejecución, por lo que sobrevive a un reinicio. Los requires_confirmation a nivel de paso y los puntos de control siguen aplicando su restricción independientemente del modo elegido.
  • Fail-closed: un alias sin configurar, un error de red o HTTP, una respuesta malformada o una respuesta de baja confianza nunca reduce la supervisión. La ejecución usa el más estricto de sus modos listados, su execution_mode definido por el autor y supervised.
  • Los payloads de eventos se envían al modelo marcados como contenido no confiable y limitados a 8000 caracteres. Elige un modelo autoalojado cuando el contenido de los eventos no deba salir del host.

Cada decisión se registra con el nombre del SOP, el resultado, el modo elegido, la respuesta de cada paso condicional y los tokens de entrada.