Research Chat

Панель «Спросить агента» в локальном ResearcherOS: вопрос уходит в очередь, ответ строится сначала из research.json, отчёты читаются только если не хватает деталей. Доставка ответа — через Inbox Cursor, hooks IDE или фоновый API.

Слот для картинки или видео Положите файл в media/chat-hero.png (или .jpg / .webp / .mp4 / .webm).

Как работает

Вопрос не отправляется в «весь репозиторий». Политика ответа:

  1. Сопоставить вопрос с записями в research.json (вопрос / рассказ для человека / краткий технический ответ, уверенность, важность, карточка-источник).
  2. Собрать связный ответ из подходящих записей.
  3. Открыть отчёт эксперимента только если нужны цифры или метод, которых нет в записи.
  4. Если в базе пусто — сказать об этом и предложить закрыть эксперимент (колонка «готово» → сценарий вывода) или уточнить вопрос.

Если вопрос хорошо совпадает с базой, API может ответить сразу (автоответ), без агента.

Три режима доставки (Настройки → «Агент в чате»):

Режим Поведение
Inbox-чат (cursor_inbox, рекомендуется) Watcher пишет wake-строку в лог; чат Cursor слушает AGENT_CHAT_WAKE (~1–3 с)
Hooks (cursor_ide) Очередь подхватывается при старте/остановке чата агента в IDE
Фоновый API (api) Воркер + ключ Cursor API

Очередь: .run/agent-chat-queue.json. Скилл агента: koi-agent-chat (claim → context → ответ → complete).

Рядом по тому же Inbox-паттерну живут чаты литературы и статьи — отдельные страницы каталога; эта страница только про панель вопросов по проекту.

Как человек работает в интерфейсе

  1. Откройте проект. Кнопка открытия панели чата (на главной рабочей области).
  2. При первом запуске Inbox: в панели — шаги «Скопировать сообщение» → вставить в чат ResearchOS Chat Inbox в Cursor → «Inbox готов». Статус watcher видно в подсказке.
  3. Введите вопрос в поле (плейсхолдер вроде «помогает ли …»). Отправьте форму.
  4. В ленте: ваш вопрос, статусы «в очереди» / «прочитано» / «Агент пишет…», затем ответ. Область видимости может учитывать текущий метод или узел (scope).
  5. В Настройках переключите режим агента в чате, если нужен hooks или API вместо Inbox.

Без настроенного Inbox (в режиме inbox) панель покажет инструкцию bootstrap; без ключа API — соответствующее уведомление в режиме api.

Какие сценарии для агента подключаются

Сценарий (skill) Роль
koi-agent-chat Основной: claim / context / ответ по политике «сначала research.json».
koi-done-research Наполняет базу, из которой чат отвечает; без done-выводов чат часто пустой.
koi-knowledge-curator Курируемые заметки — дополнительный контекст, не замена research.json как первого источника.
Hooks скилла agents/skills/koi-agent-chat/hooks/ — session/stop для режима IDE.

Команды локально:

python -m koi.agent_chat.cli pending
python -m koi.agent_chat.cli claim <queue_id>
python -m koi.agent_chat.cli context <queue_id>
python -m koi.agent_chat.inbox_cli bootstrap
python -m koi.agent_chat.inbox_cli watch

Подробности Inbox: docs/agent-chat-inbox.md.

Как устроено технически

Поток данных

UI → HTTP постановка вопроса в очередь → (опционально автоответ по совпадению с research.json) → watcher/hook/worker будит агента → агент claim + context (в JSON: вопрос, project, scope, весь research_database, политика) → ответ пишется обратно в очередь/API → панель показывает сообщение.

Пакет: koi/agent_chat/ (cli, inbox_cli, очередь под .run/). Клиент: #agent-chat-panel в web/index.html, логика в web/app.js (режимы agent_chat_mode, bootstrap, watcher status).

Контекст scope

Если пользователь смотрел метод или узел, в context попадают scope_method / scope_node — ответ можно сузить, не теряя доступ ко всей базе проекта.

Ограничения

  • Чат не заменяет онбординг и не пишет дерево сам по себе.
  • Качество ответа упирается в заполненность research.json и отчётов.
  • Inbox на macOS без inotify поллит очередь (~2 с); нужен запущенный koi-serve / watcher.

Связанные страницы

Текст: content/chat.md. Медиа: media/chat-hero.*.