y83 code / справочник

Треды

Экран «Треды» показывает все диалоги агента внутри одной рабочей папки. Тред — это отдельная переписка с агентом: своя история, своё имя, свой набор команд и своё состояние. Экран открывается тапом по карточке проекта, а кнопка «+» сразу создаёт новый тред в той же папке.

раздел
Чат с агентом (Codex)
пунктов возможностей
54
источник
docs/codex/threads.md

Здесь можно найти нужный диалог, переименовать его, спрятать в архив, посмотреть его технические данные или удалить.

Возможности

  • Список показывает треды только одного проекта. Пути сравниваются после нормализации: лишние пробелы, повторяющиеся слеши и слеш в конце пути не мешают попасть в свой проект. Треды, у которых рабочая папка неизвестна, попадают в отдельную группу No project.
  • Шапка экрана несёт три сведения: название codex@threads, число тредов в текущем виде списка и состояние соединения с агентом. Пока агент не отвечает, в шапке горит «connecting…», при обрыве — «offline», а при повторной попытке подключения — «retry in 5s». Если сервис codex выключен, вместо состояния соединения пишется «agent disabled».
  • Кнопки в шапке: назад к списку проектов, поиск, «+» для нового треда и меню списка.
  • Кнопка «+» создаёт новый тред в текущей рабочей папке и сразу открывает чат с ним. Название нового треда — «New thread», пока агент не ответит.
  • Меню списка «// threads» содержит четыре пункта: Refresh перечитывает список полностью, Show archived переключает вид на архивные треды и помечается галочкой, Git открывает экран Git для этой папки, Services открывает список серверов и процессов. Пункт Services показывается только у локального агента.
  • Жест потянуть вниз перечитывает список полностью, с индикатором обновления на самой карточке списка.
  • Поиск включается кнопкой с лупой и открывает поле прямо под шапкой. Поиск идёт по имени треда и по первой фразе переписки, без учёта регистра, а поле очищается крестиком справа. Пустой результат показывается как «Nothing found» с подсказкой поменять запрос.
  • Треды разложены по группам свежести: // live для тех, где прямо сейчас что-то происходит, дальше // today, // yesterday, // this week и // earlier. У каждой группы в заголовке стоит число тредов. Тред, который ожил, уезжает в группу // live независимо от даты, а внутри неё порядок идёт по свежести.
  • Карточка треда начинается с квадрата 44×44, в котором стоит первая буква названия, а если названия нет — знак «#». Цвет буквы зависит от состояния: бирюзовый — идёт работа, жёлтый — ждут ответа или тред завис, серый — тихо.
  • Название треда выводится в одну строку с многоточием в конце. Считается оно так: явное имя, если оно задано, иначе первая фраза переписки, а если нет и этого — «New thread».
  • Под названием идёт строка состояния. Слева может стоять число ходов вида «12 turns», дальше маркер и подпись состояния, а справа — либо таймер хода, либо «updated 5m», либо слово «archived».
  • Три состояния карточки читаются по-разному. Когда агент работает, слева едут три бирюзовые точки и горит подпись «working», а под строкой появляется бегущая полоса. Когда тред ждёт ответа человека, показываются жёлтые песочные часы с подписью «awaiting you». Когда ход долго молчит, показывается жёлтое предупреждение с подписью «stuck · silence 5m», где 5m — минуты тишины.
  • Бегущая полоса под карточкой есть только у работающего треда и держится на высоте 2dp. Полоса не показывает процент выполнения: точного значения у сервера нет, поэтому вместо заполнения используется пробегающий сегмент длиной 35% ширины карточки.
  • Меню карточки открывается тремя точками справа и даёт четыре действия: Rename, Info, Archive или Unarchive и Delete, который отделён линией и выделен как опасное действие.
  • Rename открывает полноэкранное окно с полем имени, подписью «// thread name» и фокусом, который сразу ставится в поле. Кнопка Save становится активной только тогда, когда имя действительно изменилось и не пустое, а во время сохранения на её месте крутится индикатор.
  • В окне переименования виден будущий вид карточки с буквой в квадрате, названием и первой фразой под ним. Под полем висит подсказка: у безымянного треда она обещает оставить первой фразой заголовок, а у именованного говорит, что первая фраза останется видимой под именем.
  • Кнопка Use first message возвращает первую фразу треда в качестве имени. Кнопка появляется только у треда, у которого уже есть имя и есть первая фраза переписки.
  • Info открывает полноэкранную справку о треде. Наверху крупно стоит короткий номер — первые восемь символов идентификатора с решёткой, а дальше идут карточки-секции.
  • Секция Identity собирает название, короткий номер, полный идентификатор, источник треда, родительский тред, имя и роль агента, а в конце — отметку об архиве.
  • Секция Status показывает статус, который отдаёт сервер, вид активности приложения и список флагов треда, например ожидание одобрения или ожидание ввода.
  • Секция Model & project показывает провайдера модели, имя проекта, полный рабочий путь и отдельную отметку, если тред идёт в git-рабочей копии.
  • Секция Time показывает время создания, время последнего обновления и время последней активности. У второго и третьего времени рядом стоит человеческая подпись вроде «5m ago».
  • Секция Context показывает расход токенов: занятый процент контекста, текущее число токенов, размер окна, остаток, стоимость последнего хода и разбивку последнего хода и всего треда по входным, кэшированным, выходным и рассуждающим токенам. Числа округляются: тысячи показываются с буквой K, миллионы — с буквой M, а стоимость хода выводится с четырьмя знаками после запятой.
  • Секция Stats появляется, когда известно число ходов из локального кэша, и показывает его как «turns (cached)».
  • Кнопка копирования есть у короткого номера и у полного идентификатора треда. Остальные значения копируются только выделением текста. Внизу окна стоят кнопка Copy id с идентификатором треда и кнопка Close, а после копирования надпись на секунду меняется на «Copied».
  • Archive убирает тред из обычного списка, а Unarchive возвращает его обратно. Если у треда идёт ход, приложение откажется архивировать и покажет предупреждение «Stop the current turn before archiving».
  • Show archived не добавляет архивные треды к обычным, а полностью заменяет список. Вернуться обратно можно только повторным нажатием на тот же пункт меню.
  • Delete открывает диалог с названием треда и кнопками Delete и Cancel. После подтверждения тред удаляется у агента, стирается из локального кэша приложения, вместе с сохранённым расходом контекста и счётчиком уведомлений.
  • Список сам обновляется каждые 20 секунд. Пока экран открыт и соединение живо, приложение делает быстрый запрос статусов, чтобы ход, который закончился в фоне, не остался висеть как работающий.
  • Пустой список объясняет, что делать. При пустом поиске показывается «Nothing found», а при пустом проекте — «No threads» с подсказкой нажать «+», чтобы создать тред в текущей папке.
  • Сообщения о результатах операций появляются полосой под интерфейсом: обычные сообщения и успех исчезают через три секунды, предупреждения держатся шесть секунд, а ошибка остаётся на экране до тех пор, пока её не уберут вручную.
  • Пункт Git работает по текущей папке. У локального агента открывается экран Git для папки на телефоне, а у удалённого агента — для папки на сервере, с его адресом и логином.

Технические данные

ПараметрЗначение
Главный заголовокcodex@threads
Что показывает строка метрикчисло тредов в текущем виде списка и состояние соединения
Быстрый запрос списка25 тредов за страницу, только из базы состояний агента
Полный запрос списка100 тредов за страницу, с чтением истории с диска
Максимум страниц за одну загрузку50
Таймаут быстрого запроса10 секунд
Таймаут полного запроса30 секунд
Фоновый опрос статусовраз в 20 секунд, только при живом соединении
Сортировка спискапо свежести последней активности, новые сверху
Группы спискаlive, today, yesterday, this week, earlier
Когда тред признаётся зависшим4 минуты тишины без событий хода, проверка живости не чаще раза в 2 минуты
Высота бегущей полосы2dp, сегмент 35% ширины, проход за 1,3 секунды
Обновление таймера ходараз в секунду, формат мм:сс, а после часа ч:мм:сс
Цвета состоянийбирюзовый — работа, жёлтый — ожидание и зависание, серый — тишина
Размер квадрата с буквой44×44dp, радиус 12dp
Радиус карточки16dp
Нажатие на карточкууменьшается до 94% и пружинит обратно
Что показывает команда агентамаксимум 100 тредов за один вызов
Треды субагентовна экране скрыты, но команде агента возвращаются
Сейчас у агента332 треда всего, 83 из них в репозитории, у 2 задано имя, 1 сейчас активен

Что агент умеет

  • Агент может открыть этот экран командой открытия экрана и посмотреть на него снимком. На снимке видны группы, карточки, их состояния и счётчики.
  • Список тредов агент читает отдельной командой, минуя экран. В ответе приходят общее число тредов и по каждому треду идентификатор, имя, первая фраза, статус, провайдер модели, время обновления и рабочая папка.
  • Команду чтения можно повторять со смещением или с курсором, поэтому весь список агент достаёт постранично, а не одним длинным ответом.
  • Агент умеет открыть конкретный тред командой открытия треда и читать его ходы командой чтения ходов с ограничением по количеству и по времени.
  • Агент умеет удалить тред отдельной командой удаления. Диалог подтверждения при этом не показывается, тред удаляется сразу.
  • Кнопки экрана агент нажимает командами управления интерфейсом. Так он может открыть поиск, создать новый тред, раскрыть меню списка, нажать Refresh, переключить архив, а также раскрыть меню отдельной карточки.
  • Мост открывает экран для первого агента из списка, а не для того, о котором спросили. Если первым в списке идёт не Codex, карточки будут не от того агента.
  • Имя проекта мост не передаёт. Рабочая папка берётся из агента, а подсказка в пустом состоянии остаётся без названия папки.
  • Отдельными командами агент не может ни переименовать тред, ни архивировать его, ни вернуть из архива. Таких команд у моста нет: эти три действия делаются только через интерфейс.

Ограничения

  • Экран полностью на английском, даже когда приложение на русском.
  • Переключиться на другой проект с этого экрана нельзя. Сначала нужно вернуться назад к списку проектов и открыть нужную карточку.
  • Треды субагентов на экране не показываются. У них есть родительский тред или они помечены как порождённые субагентом, и экран их намеренно скрывает.
  • Число ходов в карточке берётся из локального кэша приложения. У треда, который давно не открывали на этом устройстве, счётчика не будет, хотя сам тред виден.
  • Расход токенов в справке тоже местный. Для треда, который не открывали в приложении, вместо цифр пишется «no data (thread not opened here)».
  • Бегущая полоса не показывает, сколько процентов работы сделано. Точное значение есть только у самого агента, поэтому карточка ограничивается фактом «ход идёт».
  • Таймер хода виден только у треда, который работает прямо сейчас, и считается по времени старта хода в текущей сессии приложения.
  • Поиск не идёт по содержимому переписки. Он смотрит только на имя треда и на первую фразу, поэтому найти словом из середины диалога нельзя.
  • Длинное название обрезается до одной строки. Полный текст виден в справке о треде и в окне переименования.
  • Переименование меняет только подпись. История переписки, файлы и рабочая папка не затрагиваются.
  • Удаление треда необратимо. Через интерфейс перед удалением есть диалог с подтверждением, а вот команда агента удаляет тред сразу и без вопросов.
  • Архивные треды не смешиваются с обычными. Включённый показ архива полностью заменяет список, и число тредов в шапке меняется соответственно.
  • Если агент удалённый, пункт Services в меню списка не появляется. Управление процессами остаётся только у локального агента.

Источник: docs/codex/threads.md. Страница собрана из документации проекта при сборке сайта — без пересказа.