실제 코드 변경.4개의 합격 테스트.

OpenCode 1.19.0 · Qwen3.8-27B · Windows · 2026년 10월 14일. 코드 및 작업 로그로 표시되는 원본 실행 증거.

1 → 4테스트 통과 / 4
25.256초에이전트 이벤트 창
30,911클라이언트가 보고한 토큰
0기록된 도구 실패

이는 10월 15일에 실행된 새 API가 아닌 10월 14일에 유지된 실행입니다. 25.256초는 첫 번째 step_start부터 마지막 ​​step_finish까지를 포함합니다.설치, 프로세스 시작 및 독립적인 테스트 재실행은 제외됩니다.전체 프로세스 벽 시간은 기록되지 않았습니다.

시작점을 재현

Node.js 25.2.1 및 OpenCode 1.19.0.버전, 구성, 스타터 및 테스트는 소스 예제에 고정되어 있습니다.구성된 공급자는 IteraCompute 전용이며 파일 작업 및 node --test가 허용됩니다.

고정된 예제 및 잠금 파일 → · 원본 승인 증거 · OpenCode CLI · 공급자 참조

1 · 설정(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
확인된 공급자 구성
오픈코드.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" }
  }
}
이전 · slugify.mjs
export function slugify(text) {
  return text.toLowerCase().replaceAll(" ", "-");
}
이후 · 모델 작성 slugify.mjs
export function slugify(text) {
  return text
    .toLowerCase()
    .replace(/[^a-z0-9]+/g, "-")
    .replace(/^-+|-+$/g, "");
}
네 가지 원래 테스트 모두(변경되지 않음)
slugify.test.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(" !!! "), "");
});

정확한 입력 및 작업 로그

2 · 정확한 프롬프트
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 · 작업공간에서 실행 (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. 기준: 4개 테스트, 1개 통과, 3개 실패;종료 1. 세 가지 실패로 인해 구두점, 반복되는 구분 기호 및 잘림이 노출됩니다.
  2. +0.769s · glob · completed 프로젝트 파일 나열
  3. +4.708s · read · completed 읽기 기능
  4. +5.641s · read · completed 테스트 읽기
  5. +13.577s · edit · completed 편집 기능
  6. +19.899s · bash · completed node --test slugify.test.mjs 실행 · 0 종료
  7. 최종 답변: 비어 있지 않은 완성;독립적인 재실행: 4번 통과, 0번 실패, 종료 0. 테스트 파일 SHA-256은 동일하게 유지되었습니다.
4 · 에이전트 테스트 출력
✔ 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 · 최종 상담원 답변
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 · 독립적 검증: node --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

사용량, 비용 및 오류

단계입력출력추론합계
15,48432215,537
25,609131225,762
36,1431581956,496
46,31682836,481
56,5309696,635
합계30,08249933030,911

이는 5개 모델 단계에 걸쳐 합산된 OpenCode step_finish 카운터입니다.반복되는 컨텍스트는 각 단계마다 다시 계산됩니다.이 고객 기록에서 출력(499)은 추론(330)을 제외합니다.총계에는 이미 추론이 포함되어 있습니다. 입력 30,082개 + 출력 499개 + 추론 330개 = 토큰 30,911개입니다.다시 추론을 추가하지 않고 tokens.total을 합산합니다.캐시 읽기/쓰기: 0. 클라이언트 비용 추정: $0.이는 콘솔 청구 영수증이나 독립적인 토크나이저 측정이 아닙니다.

정리된 원본 타이밍 및 토큰 이벤트(JSONL) 다운로드 →

JSONL 발췌 부분은 기록된 stdout에서 5개의 step_start 및 5개의 step_finish 이벤트를 모두 유지합니다.세션, 메시지, 부분 및 스냅샷 식별자는 생략됩니다.타임스탬프, 이벤트 유형, 이유, 토큰 및 비용 필드는 변경되지 않습니다.최종 타임스탬프(1791954330940)에서 첫 번째 타임스탬프(1791954305684)를 빼면 25,256ms가 됩니다.이전 승인 파일은 코드와 테스트를 지원합니다.이러한 타이밍 및 토큰 필드는 포함되지 않습니다.

성공적인 실행에는 chat_template_kwargs.enable_thinking=false가 사용되었습니다.클라이언트 기록에는 여전히 330개의 추론 토큰이 포함되어 있습니다.이 구성만으로는 추론 사용이 0이 되지 않습니다.

실패: 세 가지 기본 테스트 실패;유지된 성공적인 세션에는 실패한 도구가 없습니다.이전 시도, 요청 재시도 및 반복 실행 성공률은 기록되지 않았습니다.한 번의 작은 수리로는 128K 컨텍스트, 이미지 이해, 대규모 저장소, 지속적인 로드 또는 기타 운영 체제를 확인하지 않습니다.

완전 삭제된 증거(JSON)
오픈코드-워크플로우.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."
}

Qwen 증거 및 한계 → · 모델 및 도구 선택으로 돌아가기 →