t27.aiEnglish

Редактор с агентом рядом

Вы узнаете

Как работать с агентом в редакторе: вы описываете изменение, он правит, а что останется, решаете вы.

Редактор - это место, где вы читаете и меняете файлы. Агент сидит рядом: вы описываете изменение словами, а он правит файлы за вас. Он правит быстро, но принимать или отклонять каждое изменение - ваше дело. Правило в спеке - две проверки: можете ли вы прочитать изменение целиком и проходят ли по-прежнему тесты? Изменение в 3 строки, которое проходит, принимается. Изменение в 12 строк, которое не проходит, возвращается. Переписывание на 90 строк возвращается, даже если проходит, потому что никто его не прочитал. Спека ставит предел чтения в 20 строк; выберите свой и держитесь его.

Попробуйте

В спеке найдите READ_LIMIT и три предложенных изменения. Поставьте последнему KEEP значение 1 и запустите плеер: упадёт тест, где названо изменение, слишком длинное для чтения. Затем верните 0.

Открыть интерактивный урок →

Vibecoding 4: keep a change or send it back ↗

Three changes an agent might propose in your editor, and the rule that decides each one: can you read all of it, and do the tests pass. Lesson 4 of the vibecoding course.

specs/vibecoding/editor_agent.t27

// SPDX-License-Identifier: Apache-2.0
; specs/vibecoding/editor_agent.t27 -- lesson 4 of the vibecoding course: an editor with an agent beside it
; The agent proposes a change to your file; you read it and decide. This spec writes that decision
; as a rule: keep a change only if you can read all of it and the tests still pass.
; Three changes the agent might propose, as three columns of numbers.
; ASCII only (L3), English only (LANG-EN).
; phi^2 + 1/phi^2 = 3 | TRINITY

module vc_editor_agent;

; How many changed lines a person can honestly read in one go.
pub const READ_LIMIT : u8 = 20;

; Change 0 is a rename, change 1 adds a button, change 2 rewrites the whole file.
pub const CHANGED_LINES : [3]u8 = [3, 12, 90];
; 1 = the tests passed after the change, 0 = they failed.
pub const TESTS_PASS : [3]u8 = [1, 0, 1];
; The decision the rule must reach: 1 = keep, 0 = send it back.
pub const KEEP : [3]u8 = [1, 0, 0];

test a_small_change_that_passes_is_kept {
    assert CHANGED_LINES[0] <= READ_LIMIT;
    assert TESTS_PASS[0] == 1;
    assert KEEP[0] == 1;
}

test a_change_that_fails_is_sent_back_even_when_short {
    assert CHANGED_LINES[1] <= READ_LIMIT;
    assert TESTS_PASS[1] == 0;
    assert KEEP[1] == 0;
}

test a_change_too_long_to_read_is_sent_back_even_when_it_passes {
    assert CHANGED_LINES[2] > READ_LIMIT;
    assert TESTS_PASS[2] == 1;
    assert KEEP[2] == 0;
}

Открыть спеку урока в плеере ↗

Все уроки