Saltar al contenido

La pruebaUna funcionalidad. Dos maneras de construirla.

¿Cuánto cuesta de verdad construir una funcionalidad?

La comparación toma una sola incidencia y la construye dos veces con el mismo modelo: una por el camino convencional, con un desarrollador dirigiendo Claude Code con subagentes, y otra entregándosela a developerz.ai. Todavía no hay ninguna ejecución publicada. Cuando la haya, los dos recibos aparecerán aquí digan lo que digan.

Escribimos el código en tus propios servidores y con tus propias claves de modelo, nunca en los nuestros. A su alrededor triamos la incidencia, la despachamos, revisamos el pull request y publicamos la release.

El protocolo se registra antes de que se ejecute ningún brazo. Lo que diga el resultado es lo que va en esta página.

01El cara a cara

Dos recibos por el mismo trabajo.

La funcionalidad

https://github.com/developerz-ai/wurk/issues/537

La ejecución ocurre en un repositorio público que mantenemos nosotros, y no en el código de este producto.

registration.repodeveloperz-ai/wurk

No es el código de este producto, así que ningún brazo construye dentro del historial con el que se le mide. Aun así, el repositorio de la prueba lo mantenemos nosotros, y los límites de más abajo lo dicen. Los dos brazos aterrizan en el mismo lugar público y cualquiera puede leer las dos cronologías.

  • Mismo repositorio
  • Mismo commit de partida
  • Mismos criterios de aceptación
  • Mismo modelo

Enfoque convencional

Desarrollador + Claude Code

Un desarrollador dirige Claude Code con subagentes, con el mismo modelo que el brazo B, y se queda al teclado de principio a fin.

Gasto en el modelo

se mide en la ejecución

Consola del proveedor del modelo. Una clave de API nueva para este brazo, sin usar para nada más.

No es el costo completo de entregar esta funcionalidad

Tiempo de calendariosin medir

Saldrá de las marcas de tiempo de GitHub: de la apertura de la incidencia a la fusión del pull request

Intervenciones humanasse cuentan en la ejecución

Cronología pública del PR. Cualquiera puede volver a contarlas.

No incluye mano de obra ni servidores

Inspecciona el recibode dónde sale la cifra

De dónde sale esta cifra

Instrumento principalConsola del proveedor del modelospend.usd

se mide en la ejecución

El proveedor da fe de este gasto, así que no tienes que fiarte de nuestra base de datos. Esta es la cifra que cuenta.

No aplicaInstrumento secundariospend.our_rows_usd

No aplica

Este brazo se ejecuta en la máquina del propio desarrollador y con su propia clave. Ningún registro nuestro le pone precio, así que no hay ninguna cifra nuestra en dólares que pueda faltar.

La diferenciaspend.usd - spend.our_rows_usd

Una diferencia necesita dos cifras en dólares y este brazo tiene una. El segundo instrumento que el protocolo fija aquí es el recuento de tokens de la propia transcripción, que no es un precio.

no hay segundo instrumento

El trabajo en sí

Pull request

aún sin abrirPendiente

Transcripción de la sesión

aún sin registrar

Una persona que dirige a un agente no se reproduce igual de una ejecución a otra. El prompt y la configuración de subagentes quedan congelados por escrito y la transcripción entera se publica, lo cual lo reduce. Ninguna de las dos cosas lo cierra.

Enfoque orquestado

developerz.ai

Se abre la incidencia y la plataforma sigue desde ahí. Tus agentes IA escriben el código en tus propios servidores y con tus propias claves.

Gasto en el modelo

se mide en la ejecución

Consola del proveedor del modelo. Una clave de API nueva para este brazo, sin usar para nada más.

Incluye nuestros tokens de orquestación. No se descuenta nada.

Tiempo de calendariosin medir

Saldrá de las marcas de tiempo de GitHub: de la apertura de la incidencia a la fusión del pull request

Intervenciones humanasse cuentan en la ejecución

Cronología pública del PR. Cualquiera puede volver a contarlas.

00Entrega: se abre la incidencia y la plataforma la despacha. A partir de ahí solo le pedimos algo a una persona donde la política del repositorio escala, y seguridad, licencia y CLA escalan siempre.

Tus servidores y tus claves de modelo te los factura tu proveedor, no nosotros

Inspecciona el recibode dónde sale la cifra

De dónde sale esta cifra

Instrumento principalConsola del proveedor del modelospend.usd

se mide en la ejecución

El proveedor da fe de este gasto, así que no tienes que fiarte de nuestra base de datos. Esta es la cifra que cuenta.

Solo tokens, sin valor en dólaresNuestra propia cifra registradaspend.our_rows_usd

aún sin registrar

No hay registros, porque la ejecución no ha ocurrido.

La diferenciaspend.usd - spend.our_rows_usd

Una diferencia necesita dos cifras en dólares. La nuestra puede no tener ninguna, así que se publica como no calculable en lugar de conciliarla a la fuerza o rellenarla en silencio con un cero.

no calculable

El trabajo en sí

Pull request

aún sin abrirPendiente

Transcripción de la sesión

aún sin registrar

Cada acción de este brazo se escribe además en el registro de auditoría de solo adición, que está encadenado por hash.

Congelado antes de que se ejecute ningún brazoRegistro2026-09-14
La funcionalidad y sus criterios de aceptación
Redactados para que un tercero pueda ejecutarlos
Commit de partida, el mismo para los dos brazos
43f37a9b97d9e2d29fb930e26724600b7c38dd29
Clase de tamaño del objetivo, asignada cuando se selecciona la funcionalidad
small
Modelo, idéntico en los dos brazos
z-ai/glm-5.3
Herramienta de trabajo, lo único que varía entre los dos brazos
Brazo A: claude-code. Brazo B: native.
Prompt y subagentes del brazo de control
Publicados palabra por palabra
Reglas de parada, un solo par para los dos brazos: terminado y fallido
Las dos, escritas en su totalidad
Lugar público, un repositorio que mantenemos nosotros
developerz-ai/wurk
Revisor, que lee con la autoría oculta
Din (developerz.ai)
Lo que esperamos, escrito antes de que corra ninguno de los brazos
Nueve predicciones falsables sobre dinero, tiempo y personas, puntuadas contra los registros cuando lleguen: github.com/developerz-ai/wurk/issues/530
El registro público, en orden de publicación
Cada enmienda, descarte y nota de estado, fechada y sin editar, en el hilo del registro: https://github.com/developerz-ai/wurk/issues/530

Esto se escribió primero, en una incidencia pública. GitHub expone el historial de ediciones de una incidencia, así que puedes comprobar que no se reescribió cuando llegaron los números.

02La predicción

Lo que esperamos, antes de que exista la respuesta.

Una página que enseña sus cifras solo después le pide creer que esas cifras no sorprendieron a nadie. Así que esto es lo que esperamos, publicado en el registro antes de que corra ningún brazo y puntuado contra los registros cuando lleguen. Nada de lo de abajo es una medición. Cada línea dice su compromiso con palabras llanas, y la misma línea, debajo de los tres grupos, nombra el campo del registro con el que se juzgará, así que se marca como acertada o fallada sin que nadie ejerza criterio. Está protegida frente a conocer el resultado y no frente a conocer la tarea, que es el límite 9 y la razón de llamarla predicción y nunca pre-registro.

  • Gasto de modelo

    Anclada en el repositorio de este producto, donde un pull request fusionado registra 17,7M de tokens de entrada y un suelo de $3,97, un suelo porque cerca del 26% de esos tokens no lleva valor en dólares.

    1. 01

      developerz.ai gasta más en el modelo que el desarrollador con Claude Code.

    2. 02

      El gasto de modelo de developerz.ai no muestra cifra en dólares, así que su recibo no compara dinero.

    3. 03

      Si el gasto de modelo no muestra cifra en dólares, developerz.ai aun así usa más tokens de entrada que el desarrollador con Claude Code.

  • Tiempo de calendario

    Anclada en el único ciclo previo de esta sede: 8 minutos 47 segundos desde la apertura de la incidencia hasta el pull request del bot, y 37 minutos 10 segundos hasta la fusión, sobre un cambio de configuración de tres líneas y no sobre Ruby que un consumidor ejecuta.

    1. 01

      developerz.ai llega de la incidencia abierta al pull request fusionado antes que el desarrollador con Claude Code.

    2. 02

      developerz.ai tarda menos de 6 horas desde que se abre la incidencia hasta la fusión.

    3. 03

      Los dos fusionan dentro del límite de 24 horas, así que ninguno se publica como fallo.

  • Intervenciones humanas

    Anclada en el pull request previo de la sede, que no llevó ningún actor humano, frente a una flota donde 563 de 649 pull requests fusionados en 14 días llevan al menos uno.

    1. 01

      En el pull request de developerz.ai no hay más intervenciones humanas que en el del desarrollador con Claude Code. Cada persona cuenta una vez por tipo: comentario, revisión, fusión o cierre, incluidas las del propio desarrollador.

    2. 02

      En el pull request de developerz.ai hay como mucho una intervención humana.

    3. 03

      Si los dos recuentos difieren, la diferencia es de 2 como mucho.

El campo del registro con el que se puntúa cada línea
  • Gasto de modelo

    1. 01

      El brazo B gasta más que el A: spend.usd en el registro de la plataforma es mayor que en el del control.

    2. 02

      Las celdas de dólares publican null para el brazo B, así que el recibo no afirma ninguna comparación de dinero.

    3. 03

      Cuando las celdas de dólares son null, tokens_in del brazo B aún supera el del brazo A.

  • Tiempo de calendario

    1. 01

      El reloj del brazo B es más corto: clock.pr_merged_at menos clock.issue_opened_at es menor en el registro de la plataforma.

    2. 02

      El reloj del brazo B marca menos de 6 horas, de apertura a fusión.

    3. 03

      Ambos brazos fusionan dentro de la regla de parada de 24 horas, así que ninguno se publica como fallo.

  • Intervenciones humanas

    1. 01

      El brazo B registra no más toques humanos que el A: human_touches es menor o igual en el registro de la plataforma.

    2. 02

      human_touches del brazo B marca 0 o 1.

    3. 03

      Si los dos recuentos difieren, difieren como mucho en 2.

Cómo se puntúa

Cada línea queda como acertada, fallada o no puntuable en cuanto lleguen ambos registros, una línea cada una, sobre los campos del propio registro, así que ninguna parte de la puntuación depende de la prosa. Ninguna regla del protocolo las fija después de los hechos: la regla 6 prohíbe repetir la tirada de la función, no reescribir una predicción, así que la protección es la propia publicación. Estas nueve y sus reglas de puntuación son comentarios públicos fechados en una incidencia cuyo historial de ediciones está abierto, publicados antes de que exista cualquier registro, y toda revisión aparece allí como revisión. Una predicción que falle permanece en esta página junto al registro que la rompe. Una cosa queda fuera a propósito: qué pull request prefiere el revisor, porque es el único juicio de aquí sin instrumento detrás.

Lea las predicciones tal como se publicaron, en orden

03Resultado

Sin resultado. Sin conclusión.

La comparación no se ha ejecutado. Primero se registra el protocolo, luego se ejecutan los dos brazos y luego este panel se rellena diga lo que diga. Hasta entonces, nada de esta página es una medición.

gasto en el modelo

Sin medir

todavía sin cifra

Consola del proveedor del modelo, una clave nueva por brazo

tiempo de calendario

Sin medir

todavía sin cifra

Marcas de tiempo de GitHub, de la apertura de la incidencia a la fusión

intervenciones humanas

Sin medir

todavía sin cifra

Cronología pública del PR, cualquiera puede volver a contarla

n = 0 comparaciones publicadas. No hay ninguna ejecución registrada, así que estas tres celdas no tienen muestra detrás. El diseño llega como mucho a una ejecución por brazo, que tampoco sostendría una afirmación de significancia.

Una funcionalidad, construida de dos maneras. Es una demostración con recibos, nunca una tasa. El brazo B incluye nuestros propios tokens de orquestación: esos los pagas tú con tus propias claves, así que no se descuentan.

Lee el método

04El veredicto humano

Un lector. Los dos pull requests. Sin nombres.

Un revisor con nombre lee los dos pull requests de una sentada, sin nombres de rama y sin autoría en los commits. Es además quien dirige el brazo de control, así que reconoce su propio diff: eso es todo lo que significa aquí la palabra ciego. Se queda en prosa. No hay puntuación, ni calificación, ni barra, porque no tenemos ningún número publicable sobre calidad de revisión e inventarlo sería fabricarlo.

Revisor

Din (developerz.ai)

El protocolo nombra al revisor antes de la revisión, y la autoría sigue oculta hasta que se escribe el veredicto.

ADesarrollador + Claude Code

todavía sin veredicto

Bdeveloperz.ai

todavía sin veredicto

¿Cuál fusionarías?

Esta respuesta puede ser ninguno de los dos, o sin preferencia.

sin responder

05A tu volumen

Tu factura no se mueve por funcionalidad.

Se mueve cuando añades un agente IA. Así que el coste de una funcionalidad es lo que dé tu suscripción mensual al dividirla, y cuanto más entregues menos carga cada una. Aquí va un ejemplo trabajado, a la tarifa Enterprise que publica la página de precios.

Un ejemplo resuelto

3 agentes IA, 8 funcionalidades entregadas en el mes.

Suscripción Enterprise, 3 agentes IAtarifa Enterprise × 3revisión de código y CI incluidas, no aparte
$3.000,00
Tus servidores, 9 máquinas enrolables3 agentes IA × 3 máquinas cada unolos factura tu proveedor, no nosotros
tu proveedor
Tus claves de modeloBYOK (tus claves)te las factura tu proveedor
tu factura

Por funcionalidad, antes del gasto en el modelo

$375,00

suscripción ÷ 8

La suscripción dividida entre lo que entregaste ese mes. Tu gasto en el modelo te lo factura tu proveedor y no está incluido.

Esto es aritmética sobre precios publicados, no el resultado de un benchmark. Tu gasto en el modelo te lo factura tu proveedor y no está incluido.

Ver los planes en precios

06No nos creas por nuestra palabra

Construido para que puedas comprobarlo.

La calidad no es un número que nos hayamos ganado el derecho a publicar. Estas son las salvaguardas que puedes inspeccionar hoy.

  • Un registro que no se puede reescribir sin romper su propia cadena.

    Qué significa esto

    Cada acción entra en un registro de auditoría de solo adición y encadenado por hash. Los cambios dejan rastro.

    Inspecciona el mecanismo
  • Los checks siguen teniendo que pasar.

    Qué significa esto

    CI, la revisión y las protecciones de rama controlan las fusiones. Orquestar no es permiso para saltárselas.

    Inspecciona el mecanismo
  • Un hallazgo necesita una fuente.

    Qué significa esto

    La revisión es citar o abstenerse. Un hallazgo que no se puede anclar en tu código se retiene en vez de publicarse, y la revisión dice cuántos se retuvieron. La excepción es una regla que el bot hace cumplir, que bloquea por la regla.

    Inspecciona el mecanismo
  • Tus claves, selladas y tuyas.

    Qué significa esto

    Las claves de modelo van cifradas en sobre: cada clave se sella con su propia clave de datos, y esa con una clave maestra que nunca sale de la plataforma y nunca se envía a una máquina. Le pagas al proveedor directamente y nosotros nunca revendemos tokens.

    Inspecciona el mecanismo
  • Tu trabajo se ejecuta en tus servidores.

    Qué significa esto

    Los workers se ejecutan en infraestructura que tú controlas. Las conexiones salen hacia fuera. No hace falta abrir ningún puerto de entrada.

    Inspecciona el mecanismo

07Los límites

Una funcionalidad no es una promesa.

Muestra publicadan = 0 comparaciones publicadas
Leer los límites

Una funcionalidad construida de dos maneras es una anécdota con recibos. Eso vale algo, y vale menos que una tasa. Los límites publicados están en la página porque los acabarías descubriendo de todos modos.

  1. 01

    n = 1.

    Una funcionalidad. Una demostración, nunca una tasa. Poco favorable, mixta o fallida en cualquiera de los dos brazos: se publica tal cual.

  2. 02

    El control no es reproducible.

    Una persona que dirige Claude Code varía de una ejecución a la siguiente. Congelamos el prompt y la configuración de subagentes por escrito y publicamos la transcripción, lo cual lo reduce. No lo cierra.

  3. 03

    Elegimos la tarea nosotros mismos, y la regla se enmendó cuatro veces.

    Quien elige la tarea elige al ganador, y aquí quien elige somos nosotros. La regla se publicó antes de listar cualquier candidato, y su primera aplicación devolvió un conjunto vacío. Luego se eliminó en público una cláusula, la que excluía las incidencias abiertas por nuestro propio equipo, y la regla se aplicó de nuevo a ocho candidatos: todos se descartaron por no cambiar el Ruby propio de este repositorio. El plan alternativo, nombrado de antemano, era que un tercero presentara la tarea, y no hubo ningún tercero disponible. Así que la regla se enmendó una vez más, en público y antes de que existiera la incidencia, para decir que la presenta el equipo que dirige el estudio. Eso es lo que pasó. La objeción más fuerte a esta comparación, que la tarea favorece a nuestro propio brazo, ya no tiene respuesta salvo dos comprobaciones: la enmienda se publica antes de que exista la incidencia, y la tarea sale de una carencia que este repositorio ya documentaba sobre sí mismo. El cuerpo de la incidencia sigue sin editar y cada versión de la regla es pública en orden de publicación.

  4. 04

    Los dos brazos son nuestros.

    Las personas que construyeron el brazo B son las que dirigen el brazo A, el control contra el que competimos. Una ejecución independiente valdría más que la nuestra, y preferimos decirlo a insinuar lo contrario.

  5. 05

    El tiempo de calendario no es esfuerzo.

    Nuestro reloj incluye el tiempo en cola que de verdad esperarías. El reloj del control es la atención ininterrumpida de una persona. Ese encuadre favorece al control, no a nosotros.

  6. 06

    El revisor es uno de los nuestros.

    Un revisor, de nuestro equipo. Es quien dirige el brazo de control, así que reconoce su propio diff antes de abrir ninguno de los dos. Los dos diffs llegan sin nombres de rama y sin autoría en los commits, y eso es todo lo que significa aquí la palabra ciego. Un revisor externo eliminaría este límite en vez de suavizarlo; no lo tenemos.

  7. 07

    Mantenemos el repositorio de la prueba.

    Los dos brazos se ejecutan en un repositorio público que mantenemos nosotros: nuestra organización, nuestra CI y nuestro bot en la vía de merge. Un repositorio ajeno cerraría este límite. Lo que haría falta es un mantenedor que no seamos nosotros dispuesto a dejar que los dos brazos abran pull requests, pasen su CI y fusionen, y no lo tenemos.

  8. 08

    El modelo congelado cambia dos veces y luego vuelve.

    Tres comentarios fechados en el pre-registro lo cambian y luego lo restauran. Los dos primeros parten de una lectura equivocada: todas las credenciales de la cuenta para ese modelo están revocadas, lo cual es cierto y no viene al caso, porque el carril de código corre sobre el backend propio de la máquina y la sede sigue sirviendo ese modelo todo el tiempo. Cada versión es pública y fechada antes de que arranque cualquier brazo, sin ningún resultado en contra, así que ninguna cifra de aquí es una vista primero y elegida después. El modelo es idéntico en ambos lados, así que cambia lo que cada uno ejecuta y nunca lo que los distingue, y la regla 6 sigue prohibiendo repetir la tirada. Lea el hilo en orden de publicación y juzgue usted con cuánto cuidado se operó esto.

  9. 09

    La predicción conoce la tarea, solo no la respuesta.

    Publicamos lo que esperamos que muestren los registros antes de que corra ningún brazo, para que una página que enseña sus cifras solo después no pueda pedirle que crea que esas cifras no sorprendieron a nadie. Está protegida frente a conocer el resultado. No lo está frente a conocer la tarea, porque la regla de selección nombra primero la función, y esa asimetría es la razón de llamarla predicción y nunca pre-registro. Ninguna regla fija el conjunto después de los hechos: la regla 6 prohíbe repetir la tirada de la función, no reescribir una predicción, así que la protección es la propia publicación: las predicciones y sus reglas de puntuación son comentarios públicos fechados en una incidencia cuyo historial de ediciones está abierto, publicados antes de que exista cualquier registro, y toda revisión aparece allí como revisión. Una predicción que caiga lejos del registro permanece en la página junto al registro que la rompe. Una cosa queda fuera a propósito: qué pull request prefiere el revisor, porque es el único juicio de aquí sin instrumento detrás.

08El método

Se escribe antes de mirar.

Qué cuenta como ejecución.

Una ejecución cuenta como terminada cuando el brazo abre un pull request en el repositorio público del lugar cuyo diff cumple todos los criterios de aceptación de la incidencia seleccionada, con la CI de ese mismo repositorio en verde, comprobable por el revisor sin preguntarle nada al autor. Un brazo que agota sus 24 horas de reloj sin lograrlo, o cuyo conductor declara que está atascado, se registra como un fallo de ese brazo, no se retira de esta página. Esta página lo lee de la fusión, que es la única parte de la regla que el registro lleva.

Qué incluyen las cifras y qué dejan fuera.

  • El dinero es el total de la consola del proveedor para la clave dedicada de ese brazo. No son nuestras propias filas.
  • El dinero del brazo B incluye nuestro propio gasto de orquestación: el triaje, el scout, el carril de revisión, el conductor de babysit. Nada de eso se descuenta.
  • El reloj es el de GitHub, de la apertura de la incidencia a la fusión del pull request. Una sola fórmula para los dos brazos, así que los dos incluyen la espera de CI, de revisión y de fusión. Ninguna de las dos cifras mide horas de trabajo.
  • Toda intervención humana posterior a la apertura del pull request se cuenta, en los dos brazos: una por persona y por tipo de intervención, y los tipos son comentario, revisión, fusión y cierre.
Lo que el protocolo tiene que fijar de antemano
  1. 01La funcionalidad y sus criterios de aceptación, redactados para que un tercero pueda ejecutarlos.
  2. 02El commit de partida, el mismo para los dos brazos.
  3. 03El modelo, idéntico en los dos brazos. Dos brazos con modelos distintos no son una comparación.
  4. 04El prompt y la configuración de subagentes del brazo de control, publicados palabra por palabra.
  5. 05Las reglas de parada, un solo par para los dos brazos: qué cuenta como terminado y qué cuenta como fallido.
  6. 06El lugar público: un repositorio que mantenemos nosotros, y no el código de este producto.
  7. 07El revisor con nombre, que lee los dos pull requests con la autoría oculta.
  8. 08De dónde sale cada cifra: la consola del proveedor para el dinero, las marcas de tiempo de GitHub para el reloj y la cronología pública del pull request para las intervenciones.
  9. 09Que el resultado se publica diga lo que diga, y que una funcionalidad no produce ninguna tasa.
El resultado se publica diga lo que diga.

El protocolo se registra como incidencia pública antes de que se ejecute ningún brazo. Si nuestro brazo pierde, o se detiene sin entregar, eso es lo que va en esta página. GitHub expone el historial de ediciones de una incidencia, así que cuando lleguen los números podrás contrastar el protocolo con él: el cuerpo no se editó nunca y cada enmienda es su propio comentario fechado.