wallet-guard v0.1.0: guardrails de bucle y presupuesto para agentes

작성자

카테고리:

← 피드로
DEV Community · Fenix · 2026-07-20 개발(SW)
Cover image for wallet-guard v0.1.0: guardrails de bucle y presupuesto para agentes

Fenix

wallet-guard v0.1.0: guardrails de bucle y presupuesto para agentes

Sensor que corta bucles de reintento sin progreso y fuerza límites de
gasto, sin bloquear permanentemente por una confirmación legítima.

El problema

Un agente puede quedarse en un bucle de reintentos que nunca avanza, o gastar
más de lo autorizado. El riesgo opuesto es el bloqueo permanente: si una simple
petición de confirmación del usuario se trata como error, el agente se para
para siempre.

Qué hace

wallet-guard expone LoopGuard y un presupuesto. Dos comportamientos
verificados por tests:

  • Corte de bucle: si N reintentos no producen progreso medible, detiene.
  • Presupuesto: respeta un límite de gasto/configuración.
  • No bloqueo por confirmación: una petición de confirmación del usuario no cuenta como fallo irreversible (bug encontrado y corregido en auditoría).

Cómo funciona

from wallet_guard.guard import LoopGuard
guard = LoopGuard(max_retries=3, progress_fn=lambda s: s.done)
guard.observe(state)          # registra intento
if guard.should_stop():
    print("bucle sin progreso: cortado")

Enter fullscreen mode Exit fullscreen mode

Resultados de la auditoría

  • 8 tests en wallet-guard, todos verdes; ruff limpio.
  • Auditado en clone fresco (rama main, commit 372b2a9).

Limitaciones (honestamente)

El progreso se mide con un predicado que el integrador debe definir; el paquete
no infiere “progreso” por sí solo. No está enganchado aún como middleware de un
agente en producción.

Pruébalo

git clone --branch main https://github.com/amurlaniakea/wallet-guard.git
cd wallet-guard && python -m venv .venv && . .venv/bin/activate
pip install -e .
pytest tests/ -v

Enter fullscreen mode Exit fullscreen mode

Links

Licencia: AGPL-3.0-or-later. Autor: Pedro Sordo Martínez.

원문에서 계속 ↗

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다