6.6 KiB
6.6 KiB
AI Change Log
Дата создания: 2026-04-18
Как пользоваться
Этот файл - рабочий журнал изменений для Codex.
Перед новыми правками нужно прочитать этот файл и учитывать:
- что уже было изменено;
- какие файлы трогались;
- какие проверки запускались;
- какие ограничения и договоренности есть по задаче.
После каждой осмысленной правки нужно добавлять новую запись с:
- кратким описанием изменения;
- списком измененных файлов;
- результатом проверок;
- открытыми рисками или TODO, если они есть.
Договоренности
- Не менять контракты
POST /index,POST /sparse_embedding,POST /search. - По текущей задаче фокус держать на
index, если пользователь не просит иначе. - Не трогать
docker-compose.ymlи инфраструктуру без отдельной просьбы. - Не откатывать чужие или пользовательские изменения.
Записи
2026-04-18 - разрешены конфликты с upstream/main
Что сделано:
- Объединены записи журнала из ветки PR и
upstream/main. - В
search/main.pyсохранены расширенные retrieval/rerank доработки из обеих веток. - Убраны конфликтные маркеры после merge
upstream/main. - Сохранены безопасные лимиты retrieval и защита от падения rerank.
Измененные файлы:
.ai_update/changes.mdsearch/main.py
Проверки:
python3 -m py_compile index/main.py search/main.py- Прямой smoke
build_chunksнаdata/Go Nova.json: 15 чанков, покрыто 25 из 25 сообщений. - Pure smoke для
search/main.pyhelper-функций через stub-модули.
Открытые риски:
- Полный интеграционный прогон с настоящими Qdrant/dense/rerank зависит от внешних сервисов.
2026-04-18 - index P1 and search retrieval/rerank
Что сделано:
- В
index/main.pyзаменен символьный chunking на сборку чанков окнами сообщений. - Добавлен учет временного разрыва между сообщениями через
INDEX_TIME_GAP_SECONDS. - Overlap теперь работает по границам сообщений через
INDEX_CHUNK_OVERLAP_MESSAGES, а не по хвосту строки. - Сообщения рендерятся структурно:
author,time,thread,mentions, флаги,quote,forward,file,system_event. file_snippetsпарсятся как JSON; в индекс попадают имя файла, mime, url, владелец и дата создания.member_eventпревращается в индексируемый системный текст.page_content,dense_content,sparse_contentразведены.- В
index/DockerfileстарыйCHUNK_SIZE=10заменен на реальныеINDEX_*настройки chunking. - В
search/main.pyисправлен runtime-баг с неинициализированнымmust_conditions. - Основной query в search теперь берется из
question.search_textс fallback наquestion.text. question.variants,question.hyde,question.keywordsи entities используются как дополнительные dense/sparse запросы.- Retrieval делает несколько prefetch-запросов и fusion через Qdrant.
- Rerank больше не выбрасывает retrieval-хвост.
- Retrieval points дедуплицируются по Qdrant point id.
- Финальные
message_idsагрегируются по score, дедуплицируются и ограничиваютсяtop-50.
Измененные файлы:
index/main.pyindex/Dockerfilesearch/main.py.ai_update/changes.md
Проверки:
python3 -m py_compile index/main.py search/main.py- Прямой smoke
build_chunksнаdata/Go Nova.json. - Прямой smoke endpoint-функции
index(...)наdata/Go Nova.json. - Pure smoke для
searchhelper-функций через stub-модули, потому в host env нетqdrant_clientиhttpx.
Результаты проверки индекса:
- Было 29 чанков, стало 15.
- Покрытие сообщений на
data/Go Nova.json: 25 из 25. - Системное сообщение с
member_eventбольше не выпадает. file_snippetsсIMG_8471.webpпопадает вsparse_content.- Quote и forward маркеры попадают в
dense_content. page_content,dense_content,sparse_contentбольше не одинаковые.
Открытые риски:
- Полный интеграционный прогон
searchс настоящими Qdrant/dense/rerank локально не выполнялся. date_rangeфильтр включается только если установленныйqdrant_clientподдерживаетmodels.DatetimeRange.- Полный docker build локально не запускался.
2026-04-18 - создан журнал изменений
Что сделано:
- Создан файл
.ai_update/changes.md. - Зафиксировано, что до этого код не менялся, была только разведка репозитория и ТЗ.
Контекст по текущему состоянию:
index/main.pyтогда использовал символьный chunking.render_messageбрал толькоmessage.textиparts[*].text.page_content,dense_content,sparse_contentбыли одинаковые.- В примере
data/Go Nova.jsonстарыйbuild_chunksпокрывал 24 из 25 сообщений; системное сообщение сmember_eventвыпадало из индекса.
Измененные файлы:
.ai_update/changes.md
Проверки:
- Код не запускался, потому что создан только журнал.