Перейти до змісту

Швидкий старт

ЦільПровести одну задачу від чернетки до коміту на прикладі, спершу без жодного токена.

Що потрібно

ІнструментНавіщо
Node 26 або новішийharness-demo — це TypeScript, який Node запускає напряму, без збірки
pnpmставить harness-demo і прикладний застосунок
gitкожен проєкт — git-репозиторій, а цикл працює на гілках
Claude Code (claude), з входомлише для справжніх юнітів, наприкінці цієї сторінки
GitHub CLI (gh), з входомлише для доставки через pull request, описаної в Житті задачі
npx і Google Chromeлише для браузера справжніх юнітів qa і prototype; проєкт-приклад задає app

Отримай harness-demo

git clone https://github.com/floatrx/harness-demo
cd harness-demo
pnpm install
alias harness="node $PWD/harness/bin/harness.ts"
harness self-test

self-test проганяє кожен випадок контрактів на одноразовому git-репозиторії з fake agent, тож не витрачає токенів. Це триває близько п'ятнадцяти секунд і закінчується так:

41/41 cases passed

Alias живе до кінця цього shell. Команди нижче запускай із теки harness-demo.

Створи прикладний проєкт

harness example ~/harness-bookmarks
copied examples/app → ~/harness-bookmarks
pnpm install …
initial commit on main
registered aab2de · harness-bookmarks

next:
  harness submit T-002 --project harness-bookmarks
  harness run --project harness-bookmarks --once-through

harness example копіює невеликий застосунок закладок з examples/app в окремий git-репозиторій, ставить залежності, робить перший коміт і реєструє його як harness-bookmarks. Цикл створює гілки й коміти там, а не всередині harness-demo. Id на твоїй машині буде інший, а шляхи тут скорочено. Три задачі-зразки чекають як чернетки:

Задача-зразокЩо вона перевіряє
T-001 · Search box that filters the bookmark listUI-задача: етап прототипу
T-002 · Do not add the same URL twiceлогічна задача з тестом
T-003 · Make the bookmarks betterрозмита чернетка: інтерв'ю

Відкрий дашборд

У другому терміналі, в теці harness-demo, запусти дашборд із fake agent:

AGENT_CMD="node $PWD/harness/testkit/fake-agent.ts" pnpm dashboard

Одразу після рядка Ready від Next термінал називає агента, якого запускає Start:

harness · Start runs a stand-in for claude (AGENT_CMD: node …/fake-agent.ts) — no tokens

Відкрий http://127.0.0.1:4777 і вибери harness-bookmarks. Рядок над дошкою каже "3 drafts are yours — Submit starts the loop on each.": три чернетки чекають на тебе. Дошка оновлюється сама, поки працює цикл. Розділ Дашборд показує кожен екран.

Перша задача без жодного токена

Fake agent грає кожну роль за сценарієм. Він нічого не витрачає, тож можна побачити, як рухається ціла задача, ще до того, як за неї платити.

Обери один шлях: дашборд або CLI. У дашборді натисни Submit на T-002, потім Start · stand-in, потім Approve, коли план чекатиме на тебе, і дивись, як картка проходить implement, qa і judge до done. У CLI — крок за кроком:

  1. Направ harness на fake agent і подай T-002:

    export AGENT_CMD="node $PWD/harness/testkit/fake-agent.ts"
    harness submit T-002 --project harness-bookmarks
    

    Картка переходить з draft у spec.

  2. Запусти цикл, доки він не потребуватиме тебе:

    harness run --project harness-bookmarks --once-through
    
    supervisor · start · pid 78911 · once-through
    supervisor · billing: a stand-in replaces claude — no tokens
    unit 1 · T-002 · spec · writer · start
    unit 1 · T-002 · spec · exit 0 · spec → plan
    unit 2 · T-002 · plan · planner · start
    unit 2 · T-002 · plan · exit 0 · plan → planned
    supervisor · exit 0 · drained: nothing left to take
    

    Writer написав специфікацію, planner — план. Картка зупиняється в planned: зі стандартним autonomy.mode: gated план чекає твого схвалення.

  3. Схвали план і запусти ще раз:

    harness approve T-002 --project harness-bookmarks
    harness run --project harness-bookmarks --once-through
    
    supervisor · start · pid 79005 · once-through
    supervisor · billing: a stand-in replaces claude — no tokens
    unit 3 · T-002 · implement · implementer · start
    unit 3 · T-002 · implement · exit 0 · implementing → qa · commit 40b83f1
    unit 4 · T-002 · qa · qa · start
    unit 4 · T-002 · qa · exit 0 · qa → judge
    unit 5 · T-002 · judge · judge · start
    unit 5 · T-002 · judge · exit 0 · judge → done
    supervisor · exit 0 · drained: nothing left to take
    
  4. Перевір результат:

    harness status --project harness-bookmarks
    git -C ~/harness-bookmarks log --oneline --all
    
    supervisor: not running
    T-001  draft        Search box that filters the bookmark list
    T-002  done         Do not add the same URL twice
    T-003  draft        Make the bookmarks better
    
    40b83f1 T-002: Do not add the same URL twice (round 1)
    da96747 chore: example app from harness-demo
    

    Harness зробив один коміт у гілку задачі, після того як пройшов гейт. Більше нічого не змінилось.

Перейди на справжній Claude

Прибери fake agent. Спершу подивись, що отримає справжній юніт. Жодна з команд нижче не витрачає токенів:

unset AGENT_CMD
harness preview T-001 --project harness-bookmarks
harness agents --check --project harness-bookmarks

T-001 ще чернетка, тож preview показує spec-юніт, який вона отримає після Submit, і нічого не пише в задачу. Він друкує точний рядок команди claude і повний промпт:

# T-001 is a draft: this is the spec unit it gets after Submit
# T-001 · stage spec · coordinator writer
# specialists: writer
# argv: claude "-p" "--output-format" "stream-json" "--verbose" "--model" "sonnet" "--permission-mode" "dontAsk" …
# prompt (4948 chars) — sent on stdin:

# Stage: spec — coordinator
…

agents --check показує дев'ять агентів з їхніми моделями й етапами і закінчується рядком ok: no drift, no model clash. Коли обидва виглядають правильно, подай T-001 і запусти цикл:

harness submit T-001 --project harness-bookmarks
harness run --project harness-bookmarks --once-through

Прогін зупиняється щоразу, коли колонка твоя: питання в needs-input, план у planned, а оскільки T-001 — UI-задача, ще й прототип у prototype. Відповідай, схвалюй чи приймай — у дашборді або через CLI, — потім запусти знову. Щоб вести задачу з дашборду, спершу перезапусти його без AGENT_CMD: кнопка тоді покаже Start · claude.

Потім harness stats --project harness-bookmarks друкує юніти, час, токени і вартість в еквіваленті API по етапах і по задачах.

Коли приклад працює, підключи harness до свого репозиторію.

ДаліПід свій проєкт→
Гайд10 розділів · ~55 хвилин
  1. 1Поняття
  2. 2Ролі
  3. 3Координація
  4. 4Життя задачі
  5. 5Керування циклом
  6. 6Контракти
  7. 7Дашборд
  8. 8Швидкий стартти тут
  9. 9Під свій проєкт
  10. 10Уроки
ОглядДемоПрикладGitHub