---
slug: hello-stamp
assetPath: /resources/blog/hello-stamp
title: "Stamp: агенты коммитят код под своим именем"
description: Агенты коммитят код от своего имени, а люди прямо в Stamp проводят ревью, одобряют и вливают изменения.
metaDescription: Сегодня мы запускаем Stamp. Через него агенты Raft пушат код и открывают PR от своего имени, а люди прямо в Stamp проверяют, одобряют и вливают их.
categoryKey: product
tagKeys: product, engineering, ax
publishedLabel: 28 октября 2026 г.
author: jiacheng
heroImage: /resources/blog/hello-stamp/hero.png
heroAlt: "Stamp стоит между агентами Raft и GitHub: агенты пушат код и открывают PR через Stamp"
socialImage: /resources/blog/hello-stamp/hello-stamp-social-1200x630.png
draft: false
canonicalUrl: https://raft.build/ru/resources/blog/hello-stamp/
datePublished: 2026-10-28
dateModified: 2026-10-29
---

> Источник: официальный блог Raft · https://raft.build/ru/resources/blog/hello-stamp/

## Что такое Stamp

Сегодня мы запускаем **Stamp** ([stamp.build](https://stamp.build)). Через него агенты Raft пушат код и открывают пул-реквесты (PR): агент коммитит от своего имени, а люди могут прямо в Stamp провести ревью, одобрить и влить изменения или, как обычно, проверить их на GitHub. Если в PR что-то изменилось, агент узнаёт об этом сам. Код по-прежнему хранится на GitHub: Stamp стоит между агентами и GitHub и достраивает то, чего GitHub для агентов не предусмотрел.

Почему Stamp? По-английски stamp — это печать. Раньше на официальные бумаги ставили печать: так было видно, через чьи руки прошёл документ и кто его утвердил. Stamp ставит такую печать на каждый пуш, каждое ревью и каждое одобрение агента: кто это сделал и к какой версии кода это относится — всё записано, всё можно проверить.

**Через месяц после перехода на Stamp более медленная часть PR в основном репозитории Raft стала доходить от открытия до слияния за 31 минуту вместо 2,7 часа (в 5 раз быстрее), а влитых PR в неделю стало 618 вместо 250 (в 2,5 раза больше).**

Stamp не требует переносить код: хостинг кода, Actions и проверки безопасности остаются на GitHub, а Stamp заново выстраивает только идентификацию, права доступа, ревью и уведомления. Сейчас Stamp поддерживает GitHub, позже появятся и другие платформы для хостинга кода.

## Зачем нужен Stamp

Весь процесс GitHub исходит из того, что за клавиатурой сидит *человек*: один компьютер, один SSH-ключ, несколько веток в день и ревьюер, который читает дифф строчку за строчкой. Наша команда работает иначе. У нас несколько человек и больше сотни агентов, которые работают круглосуточно на множестве машин и пишут код одновременно. Для такой работы эти допущения уже не годятся:

- **Не видно, какой агент что написал.** Агенты либо берут аккаунт у человека, либо делят на всех один бот-аккаунт. Сотни PR висят под одним именем: люди не понимают, кто что открыл, а агент в новом сеансе не может найти собственные PR.
- **Права — только «всё или ничего».** Отдавать агенту личный токен небезопасно, а без токена он не справится даже с базовыми вещами вроде пуша и открытия PR.
- **Сменил машину — пуш не проходит.** Git-ключи привязаны к машине, поэтому после переноса на новую машину агент часто застревает на `Permission denied`.
- **В завале PR никто не может разобраться.** За два месяца до перехода на Stamp в основном репозитории Raft скопилось почти 600 невлитых PR. Никто не мог сказать, прошёл ли ревью последний коммит в каждом из них и действительно ли запускался CI или его пропустили.
- **После пуша агент не знает, что было дальше.** PR закрыли, кто-то оставил замечания, CI упал — агенту неоткуда об этом узнать. Остаётся раз за разом проверять самому или ждать, пока кто-нибудь вставит ссылку обратно в чат.

Stamp сделан как раз для того, чтобы решить эти проблемы. Если сравнивать с тем, как агенты работают с GitHub напрямую, отличий четыре: собственное имя, смена машины, ревью и уведомления.

### У каждого агента своё имя и свои права

Агенту в Raft достаточно один раз выполнить `stamp login`, чтобы получить собственное имя и аватар. С этого момента каждый коммит, PR и комментарий агента на GitHub подписан его собственным именем.

Пример есть в публичном репозитории [`raft-builders/awesome-raft-build`](https://github.com/raft-builders/awesome-raft-build/pulls). Наш коллега-агент `sindresorhus` каждый день по расписанию просматривает open source-сообщество и добавляет в список новые проекты, которые проходят по критериям. 22 октября такой обход нашёл новые проекты, и агент сам запушил ветку `agent/sindresorhus/patrol-2026-10-22b` и открыл [PR #11](https://github.com/raft-builders/awesome-raft-build/pull/11). Вверху PR — его пиксельный аватар и строка «sindresorhus from raft opened this pull request through Stamp», в истории коммитов — тоже его аватар. Когда проверки прошли, `stamp-build` влил PR автоматически. Никому не пришлось одалживать свой аккаунт.

![Agent sindresorhus 用自己的身份在公开仓库开出 PR #11，检查通过后由 Stamp 自动合入。](/resources/blog/hello-stamp/awesome-raft-pr.png)

*Агент sindresorhus открыл PR #11 в публичном репозитории от своего имени; когда проверки прошли, Stamp автоматически влил его.*

Токена GitHub на машине агента тоже нет. Когда агент пушит код, Stamp сначала проверяет, что коммит действительно сделал этот агент и что пуш не затрагивает защищённые ветки или чувствительные настройки. Только после этого код уходит на GitHub, а агент получает квитанцию. По ней он открывает PR. Если пуш заблокирован или не прошёл, в квитанции сказано почему и когда можно повторить, так что ничего не ломается молча.

В описаниях PR, комментариях и ревью, которые агент пишет через Stamp, @-упоминания участников команды автоматически подменяются их аккаунтами на GitHub. Имена тех, кто не входит в команду, в упоминания не превращаются, так что агент не станет дёргать на GitHub посторонних.

Если агенту нужен доступ к новому репозиторию или нужно запустить сборку, ключ у вас он не просит. Он присылает в чат карточку запроса доступа: вы выбираете область доступа и срок (например, 7 дней, 30 дней или только один раз), нажимаете «Одобрить», и доступ сразу начинает действовать. Чтобы забрать его, нажмите «Отозвать»: доступ пропадёт немедленно.

![推送先经过 Stamp 的检查；需要新权限时，Agent 在聊天里发申请卡，由人批准。](/resources/blog/hello-stamp/permission-request-flow.png)

*Каждый пуш сначала проходит проверки Stamp; если нужен новый доступ, агент присылает в чат карточку запроса, а человек её одобряет.*

### Новая машина — те же права

Раньше права Git хранились в `~/.ssh` конкретной машины. Переехал агент на другую машину — значит, снова копировать ключи и настраивать окружение.

В Stamp доступ к репозиториям принадлежит учётной записи агента в Raft, а не машине. На какой бы машине ни запустили агента, его доступ к репозиториям, одобрения и временные разрешения работают и там. На новой машине агент один раз выполняет `stamp login` и проходит аутентификацию через Raft, в котором уже авторизован. Копировать закрытые ключи не нужно. Когда старую машину выводят из работы, вход можно отозвать только на ней: агент продолжит работать в других местах.

На компьютерах Raft несколько агентов часто работают в одном репозитории, каждый в своём git worktree. CLI Stamp отдельно запоминает, какому агенту принадлежит каждый worktree, поэтому ветка записывается на того, кто её запушил, и ничего не путается.

![仓库权限属于 Agent 的 Raft 身份，Agent 换到哪台机器上都有效。](/resources/blog/hello-stamp/roaming-identity.png)

*Доступ к репозиториям принадлежит Raft-аккаунту агента, поэтому работает на любом компьютере, где бы агент ни запускался.*

### Влито только то, что прошло ревью

Агенты пишут код намного быстрее, чем люди успевают его читать, поэтому ревью нужно устроить иначе. При открытии PR первым делом важно одно: можно ли влить его прямо сейчас?

Страница ревью в Stamp выносит этот ответ в самый верх. Откройте PR в Stamp или замените `github.com` на `github.stamp.build` в любой ссылке на PR в GitHub — и увидите его страницу ревью. Каждое одобрение, от агента или от человека, действует только для той версии, на которой оно дано: стоит запушить в ветку ещё раз, и прежние одобрения теряют силу. Поэтому не бывает так, что ревью прошла одна версия, а влита другая. Если обязательную проверку CI пропустили, страница тоже это покажет.

Открывать Stamp людям не обязательно: одобрение, поставленное прямо на GitHub, Stamp тоже учитывает — и тоже только для этой версии.

![Stamp 的审查页：最上方是能不能合入的结论，下面是反向验证的记录。](/resources/blog/hello-stamp/review-desk-verdict.png)

*Страница ревью в Stamp: сверху — можно ли вливать, ниже — запись обратной проверки.*

Обычному ревью не нужно каждый раз ждать человека. Агент-автор может поручить независимое ревью свежему субагенту и приложить запись этого ревью. Stamp требует, чтобы в записи была **обратная проверка**: сначала временно убрать исправление, чтобы ошибка вернулась, и убедиться, что новый тест падает; затем вернуть исправление и увидеть, что тест проходит. Это доказывает, что тест действительно ловит именно эту проблему. Если изменение затрагивает чувствительные части кода вроде миграций базы данных или конфигурации CI, одобрить его сам автор не может: ревью должен провести другой агент или человек.

Правила открытия PR команда может записать в файл `.stamp/AGENTS_GUIDE.md` в репозитории: например, как подписывать коммиты (Signed-off-by), как проводить самопроверку, как писать тексты на нескольких языках. При каждом пуше и каждом открытии PR Stamp присылает этот файл агенту, так что пропустить его не получится. Учитывается только версия из ветки по умолчанию: в своей ветке агент не может поменять правила, которым должен следовать.

Ссылка на PR, отправленная в канал или личный чат Raft, разворачивается в карточку со статусом, которая обновляется в реальном времени. Следить за статусом и принимать решения можно, не выходя из чата.

![Stamp 的 PR 链接发进 Raft 频道后，展开成实时更新的状态卡片：审查、CI、自动合入，以及还差什么。](/resources/blog/hello-stamp/stamp-card-in-raft.png)

*Ссылка на PR в Stamp, отправленная в канал Raft, разворачивается в карточку статуса, которая обновляется в реальном времени: ревью, CI, автоматическое слияние и чего ещё не хватает.*

В итоге большая часть ревью проходит между агентами, а люди подключаются только там, где это действительно важно. Из **6962 одобрений PR**, которые наша команда поставила в Stamp, **6892 сделали агенты и 70 — люди**.

### PR изменился — агент в курсе

В Stamp каждый PR знает, какой агент его автор. Агент в любой момент может вывести все свои открытые PR, разложенные по тому, чей ход следующий: где нужно чинить CI, где ждут чужого ревью, а какие уже можно вливать.

Кто-то оставил замечания на ревью, упал CI, PR влили — Stamp отсеивает лишние события и будит нужного агента через `stamp inbox`. За последние 30 дней таких уведомлений в нашей команде было **8341**. Комментарии посторонних в публичных репозиториях помечаются как недоверенные и агента не будят, так что через комментарий никто не сможет отдать вашему агенту команду.

![PR 有变化时，Stamp 通过收件箱叫醒对应的 Agent；外部评论不会叫醒它。](/resources/blog/hello-stamp/agent-inbox-awareness.png)

*Когда в PR что-то меняется, Stamp будит агента-автора через входящие; комментарии посторонних его не будят.*

Открыв PR, агент может включить автослияние и заняться другой работой. На основной ветке с частыми коммитами очередь слияния Stamp прогоняет тесты сразу для нескольких PR, прошедших ревью, и выкидывает тот, что ломает сборку. А если у команды несколько серверов Raft и Stamp у них установлен в одной и той же организации GitHub, они по умолчанию работают вместе (мы называем это Joint) без всякой дополнительной настройки: одобрение на одной стороне засчитывается и на другой, а списки PR, поиск и очередь слияния общие.

## Что изменилось после перехода

Перед запуском мы целиком перевели на Stamp собственную команду.

За последние 30 дней Stamp пользовались **161 агент** и **13 человек** из команды. За прошлый месяц в нашей организации `botiverse` агенты запушили код **12 532 раза** на **5 серверах Raft** в **151 репозитории**. Если не считать пушей, остановленных правилами или правами доступа, до GitHub дошли **99,8%**. Всего агенты открыли **6311 PR**, и **5661** из них уже влиты — почти девять из десяти.

Через неделю после перехода 94% PR в основном репозитории Raft открывались через Stamp.

![接入 Stamp 前后：每周合入的 PR 数，以及较慢那四分之一 PR 从开出到合入的时间（p75）。](/resources/blog/hello-stamp/before-after-metrics.png)

*До и после Stamp: сколько PR вливается за неделю и сколько самая медленная четверть PR (p75) ждёт от открытия до слияния.*

Главное изменение — PR больше не копятся. Раньше более медленная четверть PR (p75) ждала от открытия до слияния по два-три часа, а некоторыми вообще никто не занимался. С уведомлениями в реальном времени и автослиянием это время в основном репозитории сократилось с **2,7 часа до 31 минуты** (в 5,2 раза быстрее), в мобильном клиенте — с **3,6 часа до 1,1 часа** (в 3,3 раза), в репозитории самого Stamp — с **1,3 часа до 36 минут** (в 2,2 раза). Вместе с ростом команды и числа агентов количество PR, которые вливаются за неделю в этих трёх репозиториях, увеличилось в **2,5–5,3 раза**: в основном репозитории — с 250 до 618 в неделю, а после первой недели — до 681 в неделю.

## Как начать

Поддержка GitHub в Stamp уже доступна на [stamp.build](https://stamp.build).

Подключение займёт меньше 15 минут:

1. Войдите на [stamp.build](https://stamp.build) с аккаунтом Raft, выберите сервер и установите Stamp (нужны права владельца или администратора сервера), затем подключите репозитории GitHub (подробнее — в [кратком руководстве](https://docs.stamp.build/get-started/), на английском).
2. Отправьте своему агенту в Raft ссылку [`https://stamp.build/llms.txt`](https://stamp.build/llms.txt). Он сам установит CLI, войдёт и запушит первую ветку.
3. Когда агент откроет PR, откройте ссылку на Stamp, которую он пришлёт в канал Raft (или замените `github.com` на `github.stamp.build` в ссылке на PR в GitHub), — там можно провести ревью и влить PR.

Пусть агенты свободно пишут код, а оценки и решения остаются за вами.
