Инжиниринг и harness в Claude Code: как оптимизировать модели

Пока ты читаешь ответ Claude, он уже пишет следующий (это я изучаю сорсы Claude Code). Напомнило популярный трюк Instagram, когда они подгружали фотку на сервак, пока ты выбирал фильтры и вписывал текст.

Инжиниринг и harness в Claude Code: как оптимизировать модели

Готовлюсь к сегодняшнему вебинару и захотелось поделиться/тизернуть. Но сначала история :)

В субботу пили пиво с товарищами в Mountain View и я проиллюстрировал понятие harness: обьяснил, что я выбрал столик со стульями со спинкой вместо скамеек, потому что так, сколько ни выпей, не упадешь с него 🤡 —> вот это настоящий harness 😉

К чему я это? Рассматривая исходники CC очень быстро становится понятно, что инжиниринг - детерминированные проверки, система пермишнов, управление контекстом и памятью, одним словом, обвязки (harness) - это подавляющая часть исходного кода; сам цикл не менее 100 строк. Как кто-то написал: модель это CEO, а claude code со всеми обвязками - это исполнитель + процессы. В ту же тему мой разбор autoresearch Карпатого

И это не просто слова. Стэнфорд буквально на днях опубликовал работу на эту же тему, где наглядно показал, как harness не только повышает точность модели, но и в 4 раза снижает обьем расходуемых токенов. Но вы то это все знаете, в том числе, надеюсь, из моих постов типа этого

Собственно, возвращаюсь к кейсу а-ля инстаграм: оказывается, пока мы читаем ответ Claude - он уже прикидывает наш следующий промпт (помните, фичу когда он советует следующее сообщение)? Ну так вот, он не только прикидывает его, но и "форкает" агента и выполняет до 20 ходов вперед o__O Внутреннее кодовое имя: «tengu_speculation».

// speculation.ts — Claude Code предвычисляет ваш следующий ход

const MAX_SPECULATION_TURNS = 20

const MAX_SPECULATION_MESSAGES = 100

async function startSpeculation(suggestionText, context) {

if (process.env.USER_TYPE !== 'ant') return // пока только для сотрудников

// Создаем изолированную overlay-файловую систему

const overlayPath = join(tmpDir, 'speculation', process.pid, id)

await mkdir(overlayPath, { recursive: true })

// Форкаем агента с предсказанным промптом пользователя

const result = await runForkedAgent({

promptMessages: [createUserMessage({ content: suggestionText })],

canUseTool: async (tool, input) => {

// Записи идут в overlay (copy-on-write), не в реальные файлы

if (WRITE_TOOLS.has(tool.name)) {

await copyFile(join(cwd, rel), join(overlayPath, rel))

input = { ...input, file_path: join(overlayPath, rel) }

}

// Останавливаемся на опасных операциях

if (tool.name === 'Bash' && !isReadOnly(command)) {

abortController.abort()

return deny('Speculation paused: bash boundary')

}

}

})

// Если пользователь ввел то, что мы предсказали — применяем overlay

await copyOverlayToMain(overlayPath, writtenPaths, cwd)

logEvent('tengu_speculation', { timeSavedMs: Date.now() - startTime })

}

Важно: пока это работает только у сотрудников Anthropic. Но архитектура готова - так что скоро увидим, надеюсь. Ну или можно у себя реализовать такое, если токенов не жалко 😉

Собственно, инженеры пока еще нужны (phew) - велком на вебинар с 18 до 20 мск за подробностями:

Подписывайтесь на Telegram EDU.

Начать дискуссию