Un verdadero cambio de código.Cuatro pruebas aprobadas.

OpenCode 1.19.0 · Qwen3.8-27B · Windows · 14 de octubre de 2026. Evidencia de ejecución original, presentada como código y un registro de operación.

1 → 4Pruebas superadas / 4
25.256sVentana de eventos del agente
30,911Tokens reportados por el cliente
0Fallos de herramientas registrados

Esta es la ejecución retenida del 14 de octubre, no una nueva ejecución de API el 15 de octubre. Los 25,256 segundos cubren el primer paso_inicio hasta el último paso_finish;Se excluyen la instalación, el inicio del proceso y la repetición de la prueba independiente.No se registró el tiempo completo del muro del proceso.

Reproducir el punto de partida.

Node.js 25.2.1 y OpenCode 1.19.0.La versión, la configuración, el iniciador y las pruebas están fijados en el ejemplo fuente.El proveedor configurado es solo IteraCompute, con operaciones de archivos y pruebas de nodo permitidas.

Ejemplo fijado y archivo de bloqueo → · Prueba de aceptación original · CLI de código abierto · Referencia del proveedor

1 · Configuración (Bash)
git clone https://github.com/IteraCompute/migration-kit.git
cd migration-kit
git checkout b71ebf5e09b761f958c643075b8e0a5d3032e44f
cd examples/opencode
npm ci
npm run code -- --version
export ITERACOMPUTE_API_KEY="your-api-key"
mkdir workspace
cp opencode.json starter/slugify.mjs starter/slugify.test.mjs workspace/
cd workspace
node --test slugify.test.mjs
Configuración de proveedor verificada
código abierto.json
{
  "$schema": "https://opencode.ai/config.json",
  "model": "iteracompute/qwen/qwen3.8-27b",
  "small_model": "iteracompute/qwen/qwen3.8-27b",
  "enabled_providers": ["iteracompute"],
  "provider": {
    "iteracompute": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "IteraCompute",
      "options": {
        "baseURL": "https://api.iteracompute.com/v1",
        "apiKey": "{env:ITERACOMPUTE_API_KEY}"
      },
      "models": {
        "qwen/qwen3.8-27b": {
          "name": "Free Qwen3.8-27B",
          "cost": { "input": 0, "output": 0, "cache_read": 0, "cache_write": 0 },
          "limit": { "context": 131072, "output": 8192 },
          "options": { "chat_template_kwargs": { "enable_thinking": false } }
        }
      }
    }
  },
  "permission": {
    "*": "deny",
    "read": "allow",
    "glob": "allow",
    "grep": "allow",
    "edit": "allow",
    "bash": { "*": "deny", "node --test*": "allow" }
  }
}
Antes · slugify.mjs
export function slugify(text) {
  return text.toLowerCase().replaceAll(" ", "-");
}
Después · slugify.mjs escrito en modelo
export function slugify(text) {
  return text
    .toLowerCase()
    .replace(/[^a-z0-9]+/g, "-")
    .replace(/^-+|-+$/g, "");
}
Las cuatro pruebas originales (sin cambios)
slugify.prueba.mjs
import assert from "node:assert/strict";
import test from "node:test";
import { slugify } from "./slugify.mjs";

test("lowercases and joins words", () => {
  assert.equal(slugify("Hello World"), "hello-world");
});
test("trims whitespace and collapses punctuation", () => {
  assert.equal(slugify("  Hello,   World!  "), "hello-world");
});
test("collapses repeated separators", () => {
  assert.equal(slugify("API___  migration---kit"), "api-migration-kit");
});
test("keeps digits and returns empty for punctuation only", () => {
  assert.equal(slugify("Version 42"), "version-42");
  assert.equal(slugify(" !!! "), "");
});

Registro exacto de entradas y operaciones

2 · Aviso exacto
Fix slugify.mjs so all four existing tests pass. Lowercase ASCII letters, preserve digits, replace runs of other characters with one hyphen, and trim leading/trailing hyphens. Do not change slugify.test.mjs. Run node --test slugify.test.mjs and report the result.
3 · Ejecutar desde el espacio de trabajo (Bash/PowerShell)
npm --prefix .. run code -- run --dir workspace --agent build --format json "Fix slugify.mjs so all four existing tests pass. Lowercase ASCII letters, preserve digits, replace runs of other characters with one hyphen, and trim leading/trailing hyphens. Do not change slugify.test.mjs. Run node --test slugify.test.mjs and report the result."
  1. Línea de base: 4 pruebas, 1 aprobada, 3 reprobadas;salida 1. Los tres fallos exponen la puntuación, los separadores repetidos y el recorte.
  2. +0.769s · glob · completed Listar archivos de proyecto
  3. +4.708s · read · completed Función de lectura
  4. +5.641s · read · completed Leer pruebas
  5. +13.577s · edit · completed Función de edición
  6. +19.899s · bash · completed Ejecute nodo --test slugify.test.mjs · salida 0
  7. Respuesta final: finalización no vacía;Nueva ejecución independiente: 4 pasadas, 0 fallidas, salida 0. El archivo de prueba SHA-256 permaneció idéntico.
4 · Salida de prueba del agente
✔ lowercases and joins words (2.3435ms)
✔ trims whitespace and collapses punctuation (0.2539ms)
✔ collapses repeated separators (0.2248ms)
✔ keeps digits and returns empty for punctuation only (0.1989ms)
ℹ tests 4
ℹ suites 0
ℹ pass 4
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 212.5302
5 · Respuesta final del agente
All 4 tests pass:

```
✔ lowercases and joins words
✔ trims whitespace and collapses punctuation
✔ collapses repeated separators
✔ keeps digits and returns empty for punctuation only
tests 4, pass 4, fail 0
```

The fix in slugify.mjs: lowercase, replace runs of non-`[a-z0-9]` characters with a single hyphen, then trim leading/trailing hyphens.
6 · Verificación independiente: nodo --test slugify.test.mjs
✔ lowercases and joins words (1.8327ms)
✔ trims whitespace and collapses punctuation (0.2687ms)
✔ collapses repeated separators (0.178ms)
✔ keeps digits and returns empty for punctuation only (0.1737ms)
ℹ tests 4
ℹ suites 0
ℹ pass 4
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 198.9705

Uso, costo y fallas.

pasoEntradaSalidaRazonamientototales
15,48432215,537
25,609131225,762
36,1431581956,496
46,31682836,481
56,5309696,635
totales30,08249933030,911

Estos son contadores de OpenCode step_finish sumados en cinco pasos del modelo;El contexto repetido se cuenta nuevamente en cada paso.En este registro de cliente, la salida (499) excluye el razonamiento (330);El total ya incluye razonamiento: 30.082 entradas + 499 salidas + 330 razonamientos = 30.911 tokens.Suma tokens.total sin volver a agregar razonamiento.Lectura/escritura de caché: 0. Estimación de costos para el cliente: $0.Este no es un recibo de facturación de la Consola ni una medición de tokenizador independiente.

Descargue los eventos de token y sincronización originales saneados (JSONL) →

El extracto JSONL conserva los cinco eventos step_start y cinco step_finish de la salida estándar registrada.Se omiten los identificadores de sesión, mensaje, parte e instantánea;Las marcas de tiempo, los tipos de eventos, los motivos, los tokens y los campos de costos no cambian.Reste la primera marca de tiempo (1791954305684) de la marca de tiempo final (1791954330940) para obtener 25.256 ms.El archivo de aceptación anterior admite el código y las pruebas;no contiene estos campos de tiempo y token.

La ejecución exitosa utilizó chat_template_kwargs.enable_thinking=false.Su registro de cliente todavía incluye 330 fichas de razonamiento;esta configuración por sí sola no establece un uso de razonamiento cero.

Fallos: tres pruebas de referencia fallidas;cero herramientas fallidas en la sesión exitosa retenida.No se registraron intentos anteriores, reintentos de solicitudes ni una tasa de éxito de ejecuciones repetidas.Una pequeña reparación no verifica el contexto de 128K, la comprensión de imágenes, los repositorios grandes, la carga sostenida u otros sistemas operativos.

Evidencia completamente desinfectada (JSON)
código abierto-flujo de trabajo.json
{
  "date": "2026-10-14",
  "platform": "Windows",
  "model": "qwen/qwen3.8-27b",
  "base_url": "https://api.iteracompute.com/v1",
  "versions": {
    "node": "25.2.1",
    "opencode": "1.19.0"
  },
  "source_commit": "b71ebf5e09b761f958c643075b8e0a5d3032e44f",
  "prompt": "Fix slugify.mjs so all four existing tests pass. Lowercase ASCII letters, preserve digits, replace runs of other characters with one hyphen, and trim leading/trailing hyphens. Do not change slugify.test.mjs. Run node --test slugify.test.mjs and report the result.",
  "event_window_ms": 25256,
  "timing_scope": "First step_start to final step_finish; excludes install, process startup and independent test rerun. Process wall time was not recorded.",
  "steps": [
    {
      "elapsed_ms": 1421,
      "reason": "tool-calls",
      "tokens": {
        "total": 5537,
        "input": 5484,
        "output": 32,
        "reasoning": 21,
        "cache": {
          "write": 0,
          "read": 0
        }
      },
      "client_cost_usd": 0
    },
    {
      "elapsed_ms": 6373,
      "reason": "tool-calls",
      "tokens": {
        "total": 5762,
        "input": 5609,
        "output": 131,
        "reasoning": 22,
        "cache": {
          "write": 0,
          "read": 0
        }
      },
      "client_cost_usd": 0
    },
    {
      "elapsed_ms": 14321,
      "reason": "tool-calls",
      "tokens": {
        "total": 6496,
        "input": 6143,
        "output": 158,
        "reasoning": 195,
        "cache": {
          "write": 0,
          "read": 0
        }
      },
      "client_cost_usd": 0
    },
    {
      "elapsed_ms": 20584,
      "reason": "tool-calls",
      "tokens": {
        "total": 6481,
        "input": 6316,
        "output": 82,
        "reasoning": 83,
        "cache": {
          "write": 0,
          "read": 0
        }
      },
      "client_cost_usd": 0
    },
    {
      "elapsed_ms": 25256,
      "reason": "stop",
      "tokens": {
        "total": 6635,
        "input": 6530,
        "output": 96,
        "reasoning": 9,
        "cache": {
          "write": 0,
          "read": 0
        }
      },
      "client_cost_usd": 0
    }
  ],
  "exit_code": 0,
  "baseline": {
    "tests": 4,
    "pass": 1,
    "fail": 3,
    "exit_code": 1
  },
  "tools": [
    {
      "tool": "glob",
      "status": "completed"
    },
    {
      "tool": "read",
      "status": "completed",
      "file": "slugify.mjs"
    },
    {
      "tool": "read",
      "status": "completed",
      "file": "slugify.test.mjs"
    },
    {
      "tool": "edit",
      "status": "completed",
      "file": "slugify.mjs"
    },
    {
      "tool": "bash",
      "status": "completed",
      "command": "node --test slugify.test.mjs",
      "exit_code": 0,
      "output": "✔ lowercases and joins words (2.3435ms)\n✔ trims whitespace and collapses punctuation (0.2539ms)\n✔ collapses repeated separators (0.2248ms)\n✔ keeps digits and returns empty for punctuation only (0.1989ms)\nℹ tests 4\nℹ suites 0\nℹ pass 4\nℹ fail 0\nℹ cancelled 0\nℹ skipped 0\nℹ todo 0\nℹ duration_ms 212.5302\n"
    }
  ],
  "client_estimated_cost_usd": 0,
  "tests_unchanged": true,
  "test_sha256": "a86b36c60e8d19281abbd656dafc9eabe87e66053bed8e57e466696e65e04884",
  "final_code": "export function slugify(text) {\n  return text\n    .toLowerCase()\n    .replace(/[^a-z0-9]+/g, \"-\")\n    .replace(/^-+|-+$/g, \"\");\n}\n",
  "final_reply": "All 4 tests pass:\n\n```\n✔ lowercases and joins words\n✔ trims whitespace and collapses punctuation\n✔ collapses repeated separators\n✔ keeps digits and returns empty for punctuation only\ntests 4, pass 4, fail 0\n```\n\nThe fix in slugify.mjs: lowercase, replace runs of non-`[a-z0-9]` characters with a single hyphen, then trim leading/trailing hyphens.",
  "independent_rerun": {
    "exit_code": 0,
    "stdout": "✔ lowercases and joins words (1.8327ms)\n✔ trims whitespace and collapses punctuation (0.2687ms)\n✔ collapses repeated separators (0.178ms)\n✔ keeps digits and returns empty for punctuation only (0.1737ms)\nℹ tests 4\nℹ suites 0\nℹ pass 4\nℹ fail 0\nℹ cancelled 0\nℹ skipped 0\nℹ todo 0\nℹ duration_ms 198.9705\n"
  },
  "tool_events": [
    {
      "elapsed_ms": 769,
      "tool": "glob",
      "status": "completed"
    },
    {
      "elapsed_ms": 4708,
      "tool": "read",
      "status": "completed"
    },
    {
      "elapsed_ms": 5641,
      "tool": "read",
      "status": "completed"
    },
    {
      "elapsed_ms": 13577,
      "tool": "edit",
      "status": "completed"
    },
    {
      "elapsed_ms": 19899,
      "tool": "bash",
      "status": "completed"
    }
  ],
  "recorded_tool_failures": 0,
  "scope": "One retained successful session, five model steps. Earlier attempts and multi-run reliability were not recorded. No long-context boundary, image quality or sustained load test."
}

Evidencias y límites de Qwen → · Volver a selección de modelo y herramienta →