Здесь можно найти нужный диалог, переименовать его, спрятать в архив, посмотреть его технические данные или удалить.
Возможности
- Список показывает треды только одного проекта. Пути сравниваются после нормализации: лишние пробелы, повторяющиеся слеши и слеш в конце пути не мешают попасть в свой проект. Треды, у которых рабочая папка неизвестна, попадают в отдельную группу 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 в меню списка не появляется. Управление процессами остаётся только у локального агента.