feat(share): conversations, owner-authored replies, local-CLI composer - #22
Merged
Conversation
A question is rarely answered in one shot. Threads let the asker follow up without restating everything and let the owner ask back before answering — and, most valuably, let the owner answer in their own words when the real answer was never in the index. That path needs no approval: typing it IS the authorization, so only machine-drafted text still needs /ok. What crosses the wire is the answer, never the transcript: sessions ids and project names stay home (the asker cannot read them anyway and they are exactly the metadata worth not leaking), and the composer is told to cite artifacts that exist outside this machine — PRs, commits, file paths, commands — because those are what make an answer usable. Only a source count travels, so a grounded answer is still distinguishable from a guess. The composer now defaults to the locally installed `claude` CLI: no API key, no extra cost, and stripped to text-in/text-out via --tools "" and --strict-mcp-config, argv rather than a shell, in an empty working directory. Note in the module: print mode writes a transcript that session-recall indexes, so CLAUDE_CONFIG_DIR must point elsewhere before real use. The scanner now also reads the source fragments, flagging a candidate whose sources sat next to a secret even when the composed answer looks clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Три вещи из обсуждения с Максимом.
Треды. Вопрос редко закрывается одним ходом. Теперь можно доуточнять в обе стороны: Егор задаёт follow-up без пересказа контекста, твоя сторона может переспросить.
threadедет внутри зашифрованного тела — relay не узнаёт, какие конверты относятся к одному разговору. Треды закрываются по 40 ходам или двум неделям тишины: открытая ветка это постоянный канал, а не вопрос.Владелец отвечает своими словами — без апрува. Часто настоящего ответа в индексе нет, он в голове. Пишешь реплаем в тред обычный текст — он уходит как есть. Правило: авторство и есть авторизация, отдельное подтверждение собственного набранного текста — ритуал, а не рубеж.
/okостаётся только для машинных черновиков.Сырой контекст не отдаём вообще. Наружу идёт ответ — то же, что владелец сказал бы, посмотрев свою историю, — плюс счётчик источников (отличить обоснованное от выдуманного). Session id и названия проектов остаются дома: прочитать их спрашивающий всё равно не может, а метаданные это ровно те, что не стоит светить. Композеру велено ссылаться на то, что существует вне машины: PR, коммиты, пути файлов, команды.
Композер на локальном CLI.
claude -pвместо API: ключ не нужен, платит подписка. Ужат до текста:--tools ""снимает все встроенные тулзы,--strict-mcp-configотрезает MCP, промпт идёт argv (не через шелл), рабочий каталог пустой. В модуле зафиксирована найденная побочка: print-режим пишет транскрипт, который session-recall индексирует, — перед боевым использованиемCLAUDE_CONFIG_DIRнадо увести в сторону.Сканер теперь читает и источники — поднимает флаг, если модель читала материал рядом с ключом, даже когда итоговый текст чистый.
Живой прогон композера на реальных фрагментах вернул: «Чинили пином, не миграцией…
mcp>=1.2.0,<2в pyproject.toml, PR #13… чего в фрагментах нет: деталей миграции».Новые CLI:
share reply <thread>,share threads. 15 новых тестов, сюита 256 passed.🤖 Generated with Claude Code