Skip to content

Recall для регистратора: привязка к репо, доска статусов, разнообразная выдача - #62

Merged
AbsoluteMode merged 1 commit into
mainfrom
claude/recall-for-registrar-1220aa
Oct 25, 2026
Merged

AbsoluteMode merged 1 commit into
mainfrom
claude/recall-for-registrar-1220aa

Conversation

@AbsoluteMode

Copy link
Copy Markdown
Owner

Зачем

Recall становится памятью «регистратора» — агента, который только отвечает на «что происходит в проекте X», «кто что делает», «к какому проекту это относится». Аудит живого индекса 25.10 показал четыре помехи; этот PR закрывает все четыре (пункты 1–4 аудита, согласованы с Максимом).

Что изменилось

  1. Привязка сессии к репо (repos.py). Пути во входах вызовов инструментов (Edit, cd, git -C, Codex workdir/exec) сводятся к git-репо: worktree → основной чекаут, симлинк → realpath, удалённый Codex-worktree → одноимённый чекаут в ~. Чужому репо нужно ≥3 вызова, папка запуска засчитывается всегда. Плагин-кэши в ~/.claude, /tmp и прочие системные папки не засчитываются.
  2. project= во всех поисковых тулзах; scope_cwd теперь включает сессии, которые работали с репо из другой папки; у хитов новое поле repos.
  3. recent_sessions как доска статусов: label (первый настоящий запрос, из брифа side-сессии берётся Task:), last_user, last_assistant, git_branch, repos, started_by (user/agent/automation, по метаданным), active.
  4. Разнообразие и сниппеты: не больше 2 хитов на сессию (per_session, 0 = выкл.) с добором; сниппет вокруг совпадения с запросом, шапка compaction-пересказа срезается.

Хаб: клиент и сервер пробрасывают project/per_session. Схема — три новые таблицы, старые клиенты их не замечают; переэмбеддинг не нужен.

Проверено

  • pytest: 503 passed (25 новых в tests/test_registrar.py по живым сценариям + тест хаба).
  • Клон живого index-qwen.db (876 сессий): догон фактов за 25 с без новых эмбеддингов; whytap — 224 сессии под одним именем (раньше 89 + 136 под двумя), 0 без атрибуции; «Гармония» — 6 разных сессий в топ-10 вместо 4; scope_cwd=~/harmonia находит работу из worktree food_sferyx. Локальная часть поиска 0.8 с против 1.0 с.
  • На живых данных нашлись и закрыты два бага: зависание на путях из URL (//github.com/…) и пропуск Codex-worktree в ~/.codex/worktrees.

Обоснование — docs/decisions/2026-10-25-recall-for-registrar.md. README обновлён во всех четырёх языках.

Не в этом PR

Шум в grep (пункт 5 аудита) и тулза project_state (пункт 6).

🤖 Generated with Claude Code

…в, разнообразная выдача

- repos.py: сессия привязывается к репо по путям во входах вызовов инструментов
  (Edit, cd, git -C, Codex workdir/exec). Worktree, симлинк-псевдонимы и
  удалённые Codex-worktree сводятся к одному чекауту; чужому репо нужно >=3 вызова.
  Факты — в session_repos/session_info/repo_scans, старый индекс догоняется
  без новых эмбеддингов.
- project= во всех поисковых тулзах; scope_cwd включает сессии, работавшие с
  репо из другой папки; у хитов новое поле repos.
- recent_sessions: первый настоящий запрос, последний запрос и ответ, ветка,
  repos, started_by (user/agent/automation), active.
- recall_search: не больше 2 хитов на сессию (per_session) с добором;
  сниппет вырезается вокруг совпадения с запросом, шапка compaction срезается.
- Хаб: project/per_session пробрасываются клиентом и сервером.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@AbsoluteMode
AbsoluteMode merged commit 1138325 into main Oct 25, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants