Todas las claves de configuración

Los 25 ajustes que AutoDev lee de config.json, en el proyecto y en la máquina, con el valor predeterminado de cada uno, su variable de entorno cuando la tiene y lo que hace.

Cómo se elige un valor #

Los ajustes se guardan en un config.json, que autodev config set <key> <value> escribe y autodev config unset <key> edita. En cuál de los dos archivos vive cada clave se explica más abajo. El archivo del proyecto está en tu repositorio, así que un ajuste viaja con el proyecto y se revisa en un pull request.

Una variable de entorno gana al archivo cuando está definida. Un valor que no sirve para la clave, como un número negativo o un proveedor que no existe, se ignora en el entorno, y prevalece el valor del archivo. Un config.json que no se puede leer, o que no supera la validación, se lee como una configuración vacía. Solo las claves planas tienen variable de entorno: las claves anidadas, notify y capability, se leen únicamente del archivo.

Los números deben ser positivos. Los booleanos admiten true, false, 1, 0, on u off en autodev config set, y el entorno admite también yes y no. Una clave sin valor predeterminado no tiene nada definido hasta que la defines.

powershell
autodev config set maxSpendUsd 25
autodev config set notify.url https://ntfy.sh/<topic>
autodev config unset maxSpendUsd

El proyecto y la máquina #

Dos archivos guardan ajustes.

ArchivoGuarda
.autodev/config.json, en el repositorioTodas las claves de esta página, salvo las de la fila siguiente. Viaja con un clon.
~/.autodev/config.json, en la máquinasuspendOnCompletion y todo el bloque notify.

autodev config set escribe cada clave en su propio archivo, y autodev config muestra el valor vigente y de dónde viene.

suspendOnCompletion es de la máquina porque suspender detiene todas las ejecuciones de la máquina. Con dos proyectos trabajando a la vez, un ajuste por proyecto los dejaría discrepar sobre si la máquina puede dormir, y el primero en terminar pondría a dormir al otro en mitad de su trabajo.

notify es de la máquina por dos motivos. El teléfono al que llega es tuyo y no del proyecto, así que un clon o un worktree nuevo no avisaría a nadie. Y el tema de notify.url funciona como una contraseña, que no debe estar en un archivo que viaja con un repositorio.

Un valor que un AutoDev anterior escribió para una de estas claves en el config.json de un proyecto se sigue leyendo cuando la máquina no tiene uno propio, y autodev config unset borra los dos, para que no vuelva.

Ejecución #

ClavePredeterminadoVariable de entornoQué hace
providerclaudeAUTODEV_PROVIDERLa CLI de agente en la que corre un participante cuando su archivo no nombra ninguna, o nombra una que esta máquina no tiene: claude, codex o antigravity. El binario de la tercera es agy.
modelsin predeterminadoAUTODEV_MODELSe conserva por compatibilidad. Ningún turno de un participante la lee: el modelo de un participante sale de su propio archivo.
effortsin predeterminadoAUTODEV_EFFORTSe conserva por compatibilidad, como model: el esfuerzo de un participante sale de su propio archivo.
claudeArgssin predeterminadoAUTODEV_CLAUDE_ARGSArgumentos adicionales que se pasan a la CLI claude, separados por espacios.
codexArgssin predeterminadoAUTODEV_CODEX_ARGSSustituye los argumentos predeterminados de la CLI codex y su valor de sandbox. Separados por espacios.
antigravityArgssin predeterminadoAUTODEV_ANTIGRAVITY_ARGSSustituye los argumentos predeterminados de la CLI agy. Separados por espacios.
autocompact300000AUTODEV_AUTOCOMPACTEl tamaño en el que claude compacta el contexto de una sesión: auto, o un número de tokens de 100000 a 1000000. auto deja la elección a claude y a lo que hayas configurado en él. Solo claude lo admite, y AutoDev pasa el valor tal como está escrito, sin comprobarlo. El valor predeterminado es menor que la ventana que claude usa por sí solo, así que una ejecución larga compacta antes.

Cada participante responde de su propio proveedor, modelo y esfuerzo, en su archivo: autodev team pin fija el modelo y el esfuerzo, y el proveedor es el que tenía el participante al añadirlo. Las tres claves de arriba, a nivel de la ejecución, son lo que queda de cuando un proyecto tenía un solo agente. La pantalla Config del panel las omite, y autodev config todavía las lista.

model y effort son cadenas libres. No hay una lista fija, a propósito: los alias de modelo cambian, y una lista mantenida por AutoDev estaría equivocada la mañana en que salga un modelo nuevo. En el archivo de un participante, los valores sugeridos para effort son low, medium, high, xhigh y max.

autocompact es una cadena libre, como model y effort: AutoDev no la comprueba, y claude rechaza un valor que no acepta.

Las tres claves Args se dividen por espacios en blanco, así que un argumento que contiene un espacio no se puede escribir en ellas.

Límites de seguridad #

Estos ajustes pausan el bucle con limpieza cuando se alcanzan.

ClavePredeterminadoVariable de entornoQué hace
maxIterations1000AUTODEV_MAX_ITERATIONSEl tope de seguridad de iteraciones del bucle. Un entero positivo. Una espera por un límite de uso no cuenta.
maxSpendUsdsin predeterminadoAUTODEV_MAX_USDEl tope global de gasto estimado, en USD. Pausa el bucle.
maxRuntimeMinsin predeterminadoAUTODEV_MAX_RUNTIME_MINEl presupuesto de tiempo real de la ejecución, en minutos. Se reancla en cada ejecución del daemon, y el tiempo que pasa esperando no se le cobra.
perCallBudgetUsdsin predeterminadoAUTODEV_PER_CALL_USDUn traspaso de <cli> --max-budget-usd por llamada, en USD: un tope estricto para quien usa API. Solo claude lo admite.
maxWaitMin240AUTODEV_MAX_WAIT_MINEl tope de una espera que un participante pidió, en minutos. Una espera mayor pausa la ejecución en lugar de seguir.
waitRecheckMaxMin30AUTODEV_WAIT_RECHECK_MAX_MINEl límite del intervalo con que se vuelve a comprobar una espera, en minutos. Los intervalos son 2, 4, 8 y 16, y luego ese límite.
maxAcceptChecks3AUTODEV_MAX_ACCEPT_CHECKSCuántas veces la auditoría de finalización puede reabrir la ejecución antes de pausar.
maxTalkTurns4AUTODEV_MAX_TALK_TURNSCuántas publicaciones seguidas pueden ser algo distinto de trabajo verificado. Después de ellas el hilo restringe el siguiente turno a trabajo, y un turno restringido que aun así no produce ninguno pausa la ejecución.
suspendOnCompletionfalseAUTODEV_SUSPEND_ON_COMPLETIONSuspende la máquina cuando una ejecución termina y la máquina está inactiva. Una clave de la máquina. Suspender la máquina trae las condiciones.

El tope de gasto es flexible. AutoDev lo comprueba entre tareas, así que una ejecución puede pasarse en aproximadamente el costo de una tarea antes de pausar.

maxAcceptChecks cuenta la auditoría. Cuando un participante dice que el objetivo se cumplió, una auditoría independiente lee la afirmación frente al objetivo, y una brecha que encuentra vuelve al equipo como una publicación. La ejecución se pausa cuando la auditoría ha encontrado brechas más veces de las que esta clave permite, y un mensaje tuyo la retoma.

Cuándo una ejecución espera o se rinde #

Una ejecución puede esperar por tres motivos, y cada uno tiene su límite.

Dos límites fijos detienen una ejecución que no va a ninguna parte, y tampoco tienen clave: 5 pasos seguidos que fallan por parte de AutoDev pausan la ejecución como error, y 10 iteraciones seguidas sin trabajo verificado la pausan como atascada.

Gates #

ClavePredeterminadoVariable de entornoQué hace
gateModeautoAUTODEV_GATE_MODELa postura ante las acciones irreversibles: auto aprueba automáticamente los gates declarados, y gated pausa para un humano.
gateAutoApprovesin predeterminadoAUTODEV_GATE_AUTO_APPROVEPatrones de subcadena aprobados sin pausar, separados por comas. Vale en ambos modos.
gateAutoDenysin predeterminadoAUTODEV_GATE_AUTO_DENYPatrones de subcadena denegados sin pausar, separados por comas. Vale en ambos modos.

Un gate pendiente espera a autodev approve o autodev deny.

Checkpoints #

ClavePredeterminadoVariable de entornoQué hace
checkpointstrueAUTODEV_CHECKPOINTSCheckpoint y rollback con git en el repositorio de destino.

Uso del ordenador #

Las claves del bloque capability.computerUse permiten que los participantes vean y operen páginas web, en un navegador que AutoDev mantiene durante la ejecución. Están en el archivo del proyecto y no tienen variable de entorno.

ClavePredeterminadoQué hace
capability.computerUse.enabledfalseActiva las herramientas de navegador. Está apagada hasta que la enciendes: una capacidad que opera interfaces no es un valor predeterminado. El participante ve capturas de pantalla de lo que opera, enviadas a su propio modelo como el código que lee.
capability.computerUse.headlesstruefalse muestra la ventana del navegador mientras trabaja. Un navegador dura toda la ejecución y se cierra cuando esta termina. Cambiarlo a mitad de la ejecución cambia el navegador en la siguiente llamada, y conviene no tocar la ventana mientras una llamada está corriendo.
capability.computerUse.browserProfilesin predeterminadoUna carpeta para usar como perfil del navegador. Solo se puede escribir en el archivo, y autodev config set la rechaza. Sin valor, se usa un perfil propio de AutoDev, guardado en la máquina. Una ruta aquí es el perfil de tu propio navegador, y lleva todas las cookies que tienes a una sesión automatizada.

Con el perfil predeterminado, inicias sesión en un sitio una vez y todas las ejecuciones siguientes tienen ese inicio de sesión: autodev browser login <url> abre la página, y el panel tiene la misma acción. autodev browser login trae los detalles.

powershell
autodev config set capability.computerUse.enabled true
autodev config set capability.computerUse.headless false

Notificaciones #

Las claves del bloque notify envían un mensaje a tu teléfono cuando una ejecución termina, se detiene sola o te necesita. Están en el archivo de la máquina y no tienen variable de entorno.

ClavePredeterminadoQué hace
notify.urlsin predeterminadoA dónde hacer el POST. Sin valor, está apagada. La URL de un tema de ntfy, o un webhook tuyo. Debe empezar por http:// o https://. El tema de la URL funciona como una contraseña: quien lo conoce se entera de cuándo se detienen tus ejecuciones. El panel muestra solo si está definida, y autodev config set imprime (hidden) en su lugar.
notify.formatntfyEl cuerpo del POST. ntfy es texto plano, con el título en una cabecera Title. json es { "title", "body", "project", "kind", "at" }, para un webhook tuyo. Discord y Slack esperan cada uno un formato propio y rechazan este.

El mensaje se envía una vez por cada cosa que te necesita, en cualquier proyecto de la máquina, y es de uno de estos tres tipos:

TipoCuerpoCuándo
decisionAutoDev is waiting on a decision only you can make.Un gate espera tu aprobación, un aviso de un participante retiene una capacidad hasta que lo respondas, o el hilo te preguntó algo.
stoppedAutoDev stopped and will not resume on its own.La ejecución se pausó o dio un error, y no pediste tú la pausa.
finishedAutoDev finished.La ejecución se completó.

El título es AutoDev · <project>. Una ejecución que detienes o pausas tú mismo no envía nada. El POST tiene un tiempo límite de 5 segundos y se intenta una vez más si falla, y el log registra notify.sent, notify.failed o notify.off, nunca la dirección. El editor aplica la misma regla a su propia notificación, así que un evento que uno de los dos anunció no lo vuelve a anunciar el otro.

powershell
autodev config set notify.url https://ntfy.sh/<topic>
autodev config set notify.format json

Suspender la máquina #

Con suspendOnCompletion activada, AutoDev pone la máquina a dormir cuando una ejecución ya no la necesita, para que la ejecución de una noche no deje la máquina despierta hasta la mañana. Viene apagada, solo actúa en Windows, y duerme en lugar de hibernar.

Solo suspende cuando se cumplen todas estas condiciones:

Cuando se cumplen, AutoDev muestra en pantalla un mensaje que dice que la máquina va a suspenderse, espera 60 segundos y comprueba todas las condiciones de nuevo. Tocar el ratón o el teclado en ese minuto lo cancela. El log registra el motivo de cada rechazo.

Un ejemplo #

~/.autodev/config.json
{
  "suspendOnCompletion": true,
  "notify": { "url": "https://ntfy.sh/<topic>", "format": "ntfy" }
}
.autodev/config.json
{
  "maxIterations": 500,
  "maxSpendUsd": 25,
  "gateMode": "gated",
  "checkpoints": true,
  "capability": { "computerUse": { "enabled": true, "headless": false } }
}