Переведено с китайского оригинала. При расхождении приоритет у оригинала.
Confer — Дорожная карта MVP и список дел
Нарезано по вехам; каждая веха — версия, которую можно отдать и показать.
v0.1 — Core proof of concept (4–6 недель)
Цель: чтобы на одной машине насквозь работала цепочка «пользователь ↔ его собственный Агент ↔ чужой Агент».
Объём (обязательно)
- сервер: gateway + agent runtime + conversation + identity (четыре службы, одним процессом или порознь — неважно)
- схема PostgreSQL (см. 04-data-model.md) под управлением инструмента миграций
- регистрация и вход пользователей (пароля достаточно; ни OAuth, ни passkey)
- создание и публикация DID:web-документа (
/.well-known/did.json) - создание и публикация документа AgentFacts
- протокол A2A на вход и на выход (проверка HTTP-подписи; capability token пока не реализован, см. список задач ниже)
- agent runtime: цикл обращений к модели (пока только два поставщика — Claude и DeepSeek)
- простой движок политик: пиры из белого списка, всё разрешено либо всё запрещено
- клиент: одно приложение на Tauri, сначала три настольные системы (Linux / macOS / Windows; мобильные позже)
- чтобы клиент умел: входить, добавлять контакты (по DID), вести разговор один на один и показывать ссылки на источники
- доставка сообщений в реальном времени по WebSocket (одного экземпляра хватит; без раздачи через NATS)
- потоковый вывод модели через SSE
- локальное окружение разработки одной командой Docker Compose
Out of scope:
- групповые разговоры, раздача на несколько устройств, мобильные, многоязычный интерфейс, CDN, внешний OAuth, сложные политики
- плагин Claude Code в эту порцию пока не входит
Acceptance:
Два человека поднимают у себя по экземпляру Confer, добавляют друг друга, разговаривают и видят ссылки на источники.
v0.2 — MVP плагина Claude Code (3–4 недели)
Цель: иметь возможность спросить чужого Агента прямо из Claude Code, а ответ чтобы оседал в проекте.
Scope:
- реализовать MCP-сервер — сегодня в нём пятнадцать инструментов (
ask_agent,list_agents,read_project_memory,write_project_memory,request_code_reviewи другие); именаask_peer/list_peers, стоявшие в этой строке, никогда не существовали - привязка учётной записи Confer к экземпляру Claude Code в духе OAuth
- разбор файла настроек
.claude/confer.toml - чтение и запись каталога
.claude/peers/{slug}/(facts.md, decisions.md, conversations/, meta.json) - автоматическое извлечение фактов: после ask_peer вытащить из ответа структурированные факты и записать их в facts.md
- инструмент командной строки
confer(add peer, list peers, ask, sync) - один демонстрационный чужой Агент (mock-vendor.confer.dev), чтобы было на чём проверять
Acceptance:
Человек ставит claude mcp add confer, настраивает, и из Claude Code может спросить mock vendor; ответ приходит со ссылками, пишется в .claude/peers/mock-vendor/facts.md, коммитится в git и в следующей сессии подхватывается сам.
v0.3 — Групповые разговоры и корпоративный экземпляр (4–5 недель)
Цель: поддержать групповые разговоры (люди и Агенты вперемешку) и разворачивание «корпоративного экземпляра» на одной машине.
Scope:
- модель данных и интерфейс групповых разговоров
- управление участниками группы (добавлять и убирать людей и Агентов)
- несколько упомянутых Агентов отвечают разом (свёрнутый показ, механизм «принять ответ»)
- корпоративный экземпляр: собственный домен и вход по SSO (достаточно OIDC)
- поиск контактов по домену (ввели acme.com — нашлись Агенты, которые этот домен публикует)
- раздача на несколько устройств (шлюз сегодня однопроцессный: таблица WS-соединений, антиповторные nonce для A2A и счётчики ограничения частоты — всё это
Mapвнутри процесса. Настройки Redis/NATS, к которым никто ни разу не обращался, удалены 2026-08-07; принимаясь за это, сначала переносить эти три, и прежде всего nonce) - мобильные (iOS, Android)
Acceptance:
Команда из пяти человек и двух Агентов ведёт обсуждение проекта в одной группе, и это удобно. Компания может поднять собственный экземпляр Confer, опубликовать наружу Агентов и оказаться найденной другими экземплярами.
v0.4 — Многоязычность и ответ в отсутствие хозяина (3 недели)
Цель: сделать продукт полезным в международных сценариях и при полуасинхронном общении.
Scope:
- i18n интерфейса (для начала китайский и английский, с заделом на японский, немецкий и французский)
- разговор между Агентами на разных языках (перевод происходит внутри Агента-адресата, а цитата сохраняет оригинал)
- добавить в AgentFacts поле
primary_language - ответ в отсутствие хозяина: интерфейс задания standing policy, очередь ожидания и push-уведомления
- добавить в MCP-сервер инструмент pre-flight design review
- добавить в MCP-сервер инструмент post-flight code review
Acceptance:
Разработчик в Китае спрашивает по-китайски у Агента немецкого поставщика (документация на немецком) и получает ответ по-китайски со ссылкой на немецкий оригинал. Когда standing policy задана, Агент в отсутствие хозяина верно обрабатывает подходящие под правило запросы, а сомнительные откладывает.
v1.0 — Готовность к промышленной эксплуатации (4–6 недель)
Цель: годиться для промышленной эксплуатации и коммерческой поддержки.
Scope:
- полная наблюдаемость (трассировка OTel, метрики Prometheus, логи Loki)
- резервное копирование и восстановление (физическая копия PG + инкремент в S3)
- аудит безопасности (у важных операций есть audit log)
- точная настройка ограничения частоты (все четыре измерения)
- панель расхода на модели (месячный расход токенов по моделям, ответы контактам — отдельно; без сумм в деньгах: цены локально не хранятся)
- полный сценарий BYO LLM key (шифрованное хранение, ротация, квота)
- сайт документации (руководство пользователя, руководство по самостоятельному развёртыванию, справочник API)
- запуск публичного экземпляра Confer Cloud (
cloud.confer.ai)
Acceptance:
Не меньше 100 зарегистрированных пользователей, 10 самостоятельно развёрнутых чужих Агентов и один экземпляр, устойчиво проработавший больше 30 дней.
v1.5+ — Рост и экосистема (постоянно)
Scope:
- публичный каталог Агентов (подключение к NANDA Index)
- граф доверия и система репутации
- версия для частных лиц (более лёгкий интерфейс)
- защита от спама на основе репутации
- webhooks (подключение сторонних систем)
- несколько Агентов на пользователя (у одного человека несколько узкоспециальных Агентов)
- расширение для браузера (вызвать Агента прямо на веб-странице)
Дробность задач (для Claude Code)
Каждая веха разбивается на 50–200 небольших задач. У каждой задачи:
- ясные вход и выход
- проверяемые критерии приёмки
- объём не больше одного человеко-дня
Например, часть задач версии v0.1:
Каркас серверной части
- создать монорепозиторий (workspaces у pnpm или у Bun)
packages/shared: общие определения типов (на zod или valibot)packages/gateway: каркас приложения Bun + Honopackages/agent-runtime: каркас автомата состояний Агента— поглощена шлюзом (packages/conversation: служба хранения и доставки сообщенийws/handler.ts+routes/conversations.ts); у отдельного пакета не было ни одного потребителя, и 2026-08-07 его удалилиpackages/identity: DID + AgentFacts + проверка A2A- инструмент миграций PostgreSQL (drizzle-kit или prisma)
- создать файлы миграций для всех таблиц
Слой базы данных
- CRUD для User (регистрация, вход, просмотр профиля)
- CRUD для Agent (создать своего Агента, изменить настройки)
- CRUD для PeerAgent (добавление, просмотр, удаление контактов)
- CRUD для Conversation и управление Participant
- CRUD для Message и постраничность
- запись и чтение таблицы Permission
Личность и протокол
- создание DID-документа (на каждого пользователя своя пара ключей ed25519)
/.well-known/did.jsonendpoint- создание AgentFacts и его эндпоинт
- подписыватель HTTP-подписей (исходящие)
- проверяющий HTTP-подписей (входящие)
- выпуск и проверка capability token
- загрузчик DID-документов + кэш
Абстракция модели
- интерфейс поставщика LLM (chat, stream, tools)
- реализация поставщика Claude
- реализация поставщика DeepSeek
- шифрованное хранение ключей API (Vault / env)
- применение настроек модели для каждого Агента
Agent runtime
- автомат состояний Агента: цикл load → process → save
- цикл обращений к модели с tool calling
- простой движок политик (белый список + allow/deny)
- исходящий вызов A2A (Агент пишет другому)
- обработка входящего A2A (пришло сообщение чужого Агента)
Шлюз и API
- middleware выпуска и проверки JWT
- все эндпоинты
/api/v1/auth/* - все эндпоинты
/api/v1/conversations/* - обработчик WebSocket (подписка, отправка сообщений)
- обработчик SSE (потоковый вывод модели)
- входящие эндпоинты A2A + middleware проверки подписи
- middleware ограничения частоты (сначала простой вариант: фиксированное окно)
Клиент
- инициализировать проект Tauri 2.0
- страницы входа и регистрации
- главный экран: список контактов слева, разговор справа
- окно добавления контакта (по DID или по домену)
- список сообщений разговора (потоковая отрисовка)
- отрисовка капсул со ссылками на источники
- отрисовка карточки запроса разрешения
- управление WebSocket-соединением
- локальный кэш SQLite на последние 100 сообщений
Демонстрационное наполнение
- развернуть Агента mock-vendor (для показа)
- учебное руководство X100 (несколько страниц PDF как данные для RAG)
- демонстрационное видео или документ: весь путь от добавления контакта до полученного ответа
Риски и ранние решения, которые придётся принять
| Риск | Что делаем |
|---|---|
| SDK для MCP ещё развивается, и его API может сломаться | Держаться стабильной версии, следить за changelog, сделать слой адаптации |
| Протокол A2A (Google) и стандарт NANDA тоже ещё развиваются | Начать с минимального подмножества, оставив место для слоя адаптации протокола |
| Tauri 2.0 на iOS и Android сравнительно нов и может преподнести сюрпризы | На этапе MVP — только три настольные системы; мобильные в v0.3 |
| Расходы на модели выходят из-под контроля | Квота по умолчанию + явный BYO key + панель расхода пораньше |
| SDK китайских поставщиков моделей (DeepSeek/Qwen) нестабильны | Использовать OpenAI-совместимый интерфейс (его поддерживают все эти поставщики) как единую точку входа |
Подсказки по реализации для Claude Code
- Сначала модульные тесты, потом интеграция: каждая служба должна проходить свои тесты, не требуя, чтобы остальные были запущены
- Миграции базы идут через инструмент миграций, никакого SQL руками
- Типы общие и лежат в пакете
@confer/shared, ими пользуются и клиент, и сервер - В каждом PR есть правка документации (если он затронул протокол или API)
- Протокол A2A лучше реализовывать готовой библиотекой (например npm-пакетом
http-message-signatures), а не изобретать велосипед - Для DID:web лучше взять
did-resolver+did-jwt— это инструменты W3C - Для MCP-сервера лучше взять официальный SDK (
@modelcontextprotocol/sdk) - Пиши тему коммита предложением о том, что делает изменение, а не условным префиксом. Учти:
.github/scripts/gen-release-notes.shраспознаёт только префиксы видаfeat:/fix:, так что заметки к выпуску пишутся руками — из тем, написанных прозой, он их не соберёт