<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Claude Code on Mikhail Shogin</title><link>https://mshogin.com/tags/claude-code/</link><description>Recent content in Claude Code on Mikhail Shogin</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Mikhail Shogin</copyright><lastBuildDate>Wed, 11 Feb 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://mshogin.com/tags/claude-code/index.xml" rel="self" type="application/rss+xml"/><item><title>Архитектура памяти для AI-агентов: как я научил Claude Code помнить</title><link>https://mshogin.com/blog/memory-architecture-for-ai-agents/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate><guid>https://mshogin.com/blog/memory-architecture-for-ai-agents/</guid><description>&lt;img src="https://mshogin.com/blog/memory-architecture-for-ai-agents/cover.svg" alt="Featured image of post Архитектура памяти для AI-агентов: как я научил Claude Code помнить" /&gt;&lt;h2 id="боль-агент-с-амнезией"&gt;Боль: агент с амнезией
&lt;/h2&gt;&lt;p&gt;Каждый, кто работает с AI-агентами, знает ощущение: ты объяснил контекст проекта, показал структуру, обсудил решения - а в следующей сессии агент всё забыл. Опять здрасьте. Опять &amp;ldquo;расскажите про ваш проект&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Это как работать с архитектором, у которого каждое утро стирается память. Он талантлив, быстр, но каждый день - новый человек.&lt;/p&gt;
&lt;p&gt;У меня 12+ активных контекстов: рабочие проекты (Wildberries), личные проекты (aitrader, archlint), блог, коучинговая практика, обучение, целеполагание. Переключение между ними без памяти превращалось в ритуал: 5-10 минут на &amp;ldquo;загрузку контекста&amp;rdquo; в начале каждой сессии.&lt;/p&gt;
&lt;p&gt;Стало ясно: нужна архитектура памяти.&lt;/p&gt;
&lt;h2 id="как-устроена-человеческая-память"&gt;Как устроена человеческая память
&lt;/h2&gt;&lt;p&gt;Прежде чем проектировать, я посмотрел на то, как работает память у людей. Параллельно с архитектурой я изучаю коучинг - и там постоянно всплывает тема того, как люди обрабатывают информацию. Заметил структурное сходство.&lt;/p&gt;
&lt;div class="mermaid"&gt;
flowchart TD
A["Входящие данные"] --&gt; B["Рабочая память\n(Short-Term)\nАктивные задачи,\nтекущий контекст"]
B --&gt; C{"Фильтр ценности\n(еженедельный ревью)"}
C --&gt;|"Ценно"| D["Долговременная память\n(Long-Term)\nПаттерны, принципы, уроки"]
C --&gt;|"Обработано"| E["Архив\n(забыто, но доступно)"]
&lt;/div&gt;
&lt;p&gt;У людей так же:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Рабочая память&lt;/strong&gt; (Short-Term) - то, с чем работаешь прямо сейчас. Ограничена: ~7 элементов одновременно. Через 3-6 месяцев без обращения - забывается.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Долговременная память&lt;/strong&gt; (Long-Term) - дистиллированные знания. Не &amp;ldquo;что я делал во вторник&amp;rdquo;, а &amp;ldquo;какой паттерн я увидел за три месяца работы&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Архив&lt;/strong&gt; - не удалено, но не на поверхности. Доступно при целенаправленном поиске.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ключевой момент: переход из Short-Term в Long-Term - не автоматический. Нужна осознанная обработка. В коучинге это рефлексия. В моей системе - еженедельный ревью.&lt;/p&gt;
&lt;h2 id="архитектура-решения"&gt;Архитектура решения
&lt;/h2&gt;&lt;h3 id="три-уровня-памяти"&gt;Три уровня памяти
&lt;/h3&gt;&lt;p&gt;Я реализовал три уровня, зеркалирующих человеческую модель:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;~/my/org-roam/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+-- Short-Term-Memory/ # Рабочая память (3-6 месяцев)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| +-- Wildberries/ # Рабочий контекст
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| +-- Coaching/ # Коучинговые сессии
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| +-- daily/ # Ежедневные заметки
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| +-- todos.md # Задачи
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;|
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+-- Long-Term-Memory/ # Долговременная память
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| +-- Coaching/ # Методики, паттерны, кейсы
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| +-- Architecture/ # Архитектурные решения
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| +-- Posts/ # Публикации
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| +-- Personal/ # Личные принципы
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;|
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+-- Archive/ # Архив (по месяцам)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; +-- 2026/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; +-- 01-January/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; +-- 02-February/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Short-Term&lt;/strong&gt; - inbox для всего нового. Сырые заметки, текущие задачи, эксперименты. Максимум 50 активных файлов. Если больше - пора делать ревью.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Long-Term&lt;/strong&gt; - база знаний. Сюда попадает только то, что прошло фильтр ценности:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Переиспользуемость (применимо 3+ раз)&lt;/li&gt;
&lt;li&gt;Обучающая ценность (ага-момент, важная ошибка)&lt;/li&gt;
&lt;li&gt;Референсная ценность (пример для копирования)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Archive&lt;/strong&gt; - завершенные проекты, обработанные заметки. Не удалено, но убрано с глаз.&lt;/p&gt;
&lt;h3 id="контексты-переключение-за-секунду"&gt;Контексты: переключение за секунду
&lt;/h3&gt;&lt;p&gt;Вторая проблема - переключение между проектами. Решение: система контекстов.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;contexts&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;coaching&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;coaching&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Коучинговые сессии и практика развития&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;directory&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;~/my/coaching&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;memory&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;short_term&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;~/my/org-roam/Short-Term-Memory/Coaching&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;long_term&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;~/my/org-roam/Long-Term-Memory/Coaching&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;archlint&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;archlint&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ArchLint - линтер архитектуры Go проектов&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;directory&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;~/my/archlint&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;memory&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;short_term&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;long_term&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Каждый контекст знает:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;directory&lt;/strong&gt; - рабочая директория проекта&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;memory.short_term&lt;/strong&gt; - где хранить текущие заметки&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;memory.long_term&lt;/strong&gt; - где хранить дистиллированные знания&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Переключение: одна команда &lt;code&gt;/w coaching&lt;/code&gt; - и агент знает где он, что помнить, какие файлы читать.&lt;/p&gt;
&lt;h3 id="индекс-активностей-навигация-по-всему"&gt;Индекс активностей: навигация по всему
&lt;/h3&gt;&lt;p&gt;Контексты решают проблему &amp;ldquo;где я&amp;rdquo;. Но остается вопрос: &amp;ldquo;где искать информацию по теме X?&amp;rdquo;. Для этого - глобальный индекс активностей.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### Коучинг / Практика
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Keywords: сессия, клиент, практика, рефлексия
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Файлы:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;-&lt;/span&gt; Практика: ~/my/org-roam/Long-Term-Memory/Coaching/03-Практика/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;-&lt;/span&gt; Гайды сессий: ~/my/org-roam/Long-Term-Memory/Coaching/session-guides/INDEX.md
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### Здоровье и психология
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Keywords: психолог, здоровье, границы, стыд
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Файлы:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;-&lt;/span&gt; Темы: ~/my/org-roam/Long-Term-Memory/Темы для психолога.md
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Связанные активности: Коучинг / Запросы для проработки
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Принцип работы:&lt;/p&gt;
&lt;div class="mermaid"&gt;
flowchart TD
A["Промпт пользователя"] --&gt; B["Поиск по keywords\nв memory-index.md"]
B --&gt; C{"Найдена\nактивность?"}
C --&gt;|"Да"| D["Работай в её контексте"]
C --&gt;|"Нет"| E["Спроси пользователя,\nпредложи варианты"]
&lt;/div&gt;
&lt;h3 id="кросс-контекстный-поиск-связи-между-контекстами"&gt;Кросс-контекстный поиск: связи между контекстами
&lt;/h3&gt;&lt;p&gt;Самая интересная архитектурная задача. Информация часто пересекает границы контекстов.&lt;/p&gt;
&lt;p&gt;Пример: тема &amp;ldquo;границы&amp;rdquo; может всплыть в коучинге (запрос клиента), в психологии (тема для терапии), в рабочем контексте (обратная связь коллеге). Как не потерять связь?&lt;/p&gt;
&lt;p&gt;Решение: &lt;strong&gt;кросс-ссылки на уровне глобального индекса&lt;/strong&gt;, а не дублирование информации между контекстными индексами.&lt;/p&gt;
&lt;div class="mermaid"&gt;
flowchart TD
G["memory-index.md\n(глобальный индекс)"] --&gt; C1["Coaching\nINDEX.md"]
G --&gt; C2["Здоровье\n(файлы)"]
G --&gt; C3["Работа\nINDEX.md"]
G --&gt; C4["..."]
C1 -.-|"кросс-ссылка"| C2
C2 -.-|"кросс-ссылка"| C3
style G fill:#0f3460,color:#fff
style C1 fill:#533483,color:#fff
style C2 fill:#533483,color:#fff
style C3 fill:#533483,color:#fff
style C4 fill:#333,color:#999
&lt;/div&gt;
&lt;p&gt;Правило: каждый контекстный индекс отвечает только за свой контекст. Связь между контекстами - через поле &amp;ldquo;Связанные активности&amp;rdquo; в глобальном индексе.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Кросс-ссылки между активностями
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| Активность A | Активность B | Связь |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;|--------------------------|------------------------|-------------------------------------|
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| Коучинг / Запросы | Здоровье и психология | Запрос &lt;span class="ni"&gt;#11&lt;/span&gt; = Тема &lt;span class="ni"&gt;#2&lt;/span&gt; (границы) |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| Семья | Коучинг / Запросы | Запрос &lt;span class="ni"&gt;#3&lt;/span&gt; (темы с супругой) |
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Антипаттерн: дублировать ссылки на &amp;ldquo;Темы для психолога&amp;rdquo; внутри Coaching/INDEX.md. Это нарушает single responsibility - индекс коучинга не должен знать про психологию. Связь - только через глобальный уровень.&lt;/p&gt;
&lt;h2 id="жизненный-цикл-знаний"&gt;Жизненный цикл знаний
&lt;/h2&gt;&lt;p&gt;Данные без обработки - мусор. Система памяти работает, только если есть процесс трансформации.&lt;/p&gt;
&lt;div class="mermaid"&gt;
flowchart LR
subgraph ST ["Short-Term (сырые данные)"]
A1["Заметки по сессии\nс клиентом X"]
A2["Тикеты проекта\nархитектуры"]
A3["Исследование\nTarjan алгоритма"]
end
subgraph LT ["Long-Term (знания)"]
B1["Паттерн: Работа с\nпрокрастинацией\nчерез ценности"]
B2["ADR-0042: Выбор\nмежду монолитом\nи микросервисами"]
B3["Библиотека\nалгоритмов\nпоиска циклов"]
end
A1 --&gt;|"трансформация"| B1
A2 --&gt;|"трансформация"| B2
A3 --&gt;|"трансформация"| B3
&lt;/div&gt;
&lt;h3 id="критерии-перехода-в-long-term"&gt;Критерии перехода в Long-Term
&lt;/h3&gt;&lt;p&gt;Не всё заслуживает долговременной памяти. Четыре фильтра:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Переиспользуемость&lt;/strong&gt; - применимо 3+ раз (методики, шаблоны, чек-листы)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Обучающая ценность&lt;/strong&gt; - ага-момент, важная ошибка, смена парадигмы&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Референсная ценность&lt;/strong&gt; - пример для копирования (код, кейс, формат)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Паттерн&lt;/strong&gt; - повторяющаяся проблема + решение&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Всё остальное - одноразовые заметки, устаревшие TODO, рутинные логи - удаляется или уходит в архив.&lt;/p&gt;
&lt;h3 id="еженедельный-ревью"&gt;Еженедельный ревью
&lt;/h3&gt;&lt;p&gt;Раз в неделю - 30-40 минут на обработку Short-Term:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Просмотреть файлы за неделю&lt;/li&gt;
&lt;li&gt;Выделить ценное для Long-Term&lt;/li&gt;
&lt;li&gt;Трансформировать: сырые данные -&amp;gt; структурированные знания&lt;/li&gt;
&lt;li&gt;Архивировать обработанное&lt;/li&gt;
&lt;li&gt;Удалить мусор&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Метрики здоровой системы:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Short-Term: 30-50 активных файлов&lt;/li&gt;
&lt;li&gt;Long-Term: +2-5 новых записей в неделю&lt;/li&gt;
&lt;li&gt;Archive: регулярное пополнение&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="параллель-с-коучингом"&gt;Параллель с коучингом
&lt;/h2&gt;&lt;p&gt;Когда я проектировал эту систему, я заметил параллели с тем, что изучаю в коучинге.&lt;/p&gt;
&lt;h3 id="short-term--рабочая-осознанность"&gt;Short-Term = Рабочая осознанность
&lt;/h3&gt;&lt;p&gt;Когда человек разбирается в сложной ситуации, он сначала выгружает всё, что на поверхности: факты, эмоции, людей, обстоятельства. Это рабочая память - хаотичная, перегруженная, но актуальная. Short-Term Memory в моей системе работает так же: собирает всё, что сейчас активно, без фильтрации.&lt;/p&gt;
&lt;h3 id="long-term--мудрость-через-рефлексию"&gt;Long-Term = Мудрость через рефлексию
&lt;/h3&gt;&lt;p&gt;Long-Term - это не &amp;ldquo;запомнить всё&amp;rdquo;. Это &amp;ldquo;понять, что важно&amp;rdquo;. Лучшие инсайты приходят не в момент обсуждения, а позже - когда человек рефлексирует и видит паттерн. Еженедельный ревью - это та самая рефлексия, только для базы знаний.&lt;/p&gt;
&lt;h3 id="кросс-контекст--системное-мышление"&gt;Кросс-контекст = Системное мышление
&lt;/h3&gt;&lt;p&gt;Проблема редко живет в одном контексте. Одна и та же тема может всплыть и на работе, и в личных проектах, и в обучении. Кросс-ссылки в системе памяти - это способ видеть одну тему с разных сторон, расширить перспективу.&lt;/p&gt;
&lt;h3 id="architect-of-thinking"&gt;Architect of Thinking
&lt;/h3&gt;&lt;p&gt;Изучая коучинг, я разработал авторский фреймворк на стыке архитектуры и работы с мышлением - Architect of Thinking. Формула:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Контекст -&amp;gt; Цель -&amp;gt; Карта -&amp;gt; Узел -&amp;gt; Решение -&amp;gt; Шаг&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Это ровно то, как архитектор работает с системой: сначала изучи (контекст), определи цель, построй карту, найди bottleneck (узел), спроектируй решение, сделай первый шаг. Тот же подход - к человеческим задачам.&lt;/p&gt;
&lt;h2 id="результаты"&gt;Результаты
&lt;/h2&gt;&lt;h3 id="до-системы-памяти"&gt;До системы памяти:
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;5-10 минут на &amp;ldquo;загрузку контекста&amp;rdquo; каждую сессию&lt;/li&gt;
&lt;li&gt;Потеря решений между сессиями&lt;/li&gt;
&lt;li&gt;Дублирование работы&lt;/li&gt;
&lt;li&gt;Невозможность связать темы между контекстами&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="после"&gt;После:
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Переключение контекста за 1 команду&lt;/li&gt;
&lt;li&gt;Знания накапливаются и структурируются&lt;/li&gt;
&lt;li&gt;Связи между контекстами через кросс-ссылки&lt;/li&gt;
&lt;li&gt;Еженедельный ревью превращает данные в знания&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="что-дальше"&gt;Что дальше
&lt;/h2&gt;&lt;p&gt;Система живая - она развивается вместе с моими проектами. Следующие шаги:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Автоматизация ревью (AI-помощник для еженедельной обработки Short-Term)&lt;/li&gt;
&lt;li&gt;Семантический поиск по Long-Term Memory&lt;/li&gt;
&lt;li&gt;Версионирование знаний (как знания меняются со временем)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Но главный урок не технический. Проектируя память для AI-агента, я лучше понял, как работает моя собственная. И это, пожалуй, самый ценный побочный эффект.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Исходный код и конфигурации описаны для Claude Code (Anthropic CLI). Подход применим к любому AI-агенту с файловой системой.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>$HOME in Git: One Config for Claude Code</title><link>https://mshogin.com/notes/claude-config-consolidation/</link><pubDate>Fri, 09 Jan 2026 00:00:00 +0000</pubDate><guid>https://mshogin.com/notes/claude-config-consolidation/</guid><description>&lt;p&gt;Multiple projects. Each with its own CLAUDE.md, its own rules. You improve something in one place - you want it elsewhere. Copy. Improve there. Copy back. Round and round.&lt;/p&gt;
&lt;p&gt;At some point I had a mess of different versions of the same rules scattered across a dozen projects. The copy-paste circus was annoying, but I kept putting it off.&lt;/p&gt;
&lt;p&gt;During the New Year holidays, I decided to fix it.&lt;/p&gt;
&lt;h2 id="the-solution"&gt;The Solution
&lt;/h2&gt;&lt;p&gt;Moved everything to my home directory &lt;code&gt;~/.claude/&lt;/code&gt;. One config for all projects.&lt;/p&gt;
&lt;p&gt;Yes, I&amp;rsquo;m now coupled to my home directory structure. But that structure hasn&amp;rsquo;t changed in years - &lt;code&gt;~/my/&lt;/code&gt; for projects, &lt;code&gt;~/education/&lt;/code&gt; for learning, &lt;code&gt;~/family/&lt;/code&gt; for family stuff. Risk is minimal.&lt;/p&gt;
&lt;h2 id="structure"&gt;Structure
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;~/.&lt;/span&gt;&lt;span class="n"&gt;claude&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;CLAUDE&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;md&lt;/span&gt; &lt;span class="c1"&gt;# Core principles (task confirmation, formatting)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;HOME_MAP&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;md&lt;/span&gt; &lt;span class="c1"&gt;# Home directory map for navigation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;rules&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# Rules (auto-loaded)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;architecture&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;md&lt;/span&gt; &lt;span class="c1"&gt;# Architecture principles&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;coaching&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;layer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;md&lt;/span&gt; &lt;span class="c1"&gt;# Coaching questions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;dna&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;md&lt;/span&gt; &lt;span class="c1"&gt;# Writing style&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;home&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;navigation&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;md&lt;/span&gt; &lt;span class="c1"&gt;# Context detection by keywords&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;projects&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# Project-specific rules&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;aitrader&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;md&lt;/span&gt; &lt;span class="c1"&gt;# Rules for aitrader&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;commands&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# Slash commands&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ms&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;todos&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;md&lt;/span&gt; &lt;span class="c1"&gt;# /ms-todos - task list&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ms&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;add&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;note&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;md&lt;/span&gt; &lt;span class="c1"&gt;# /ms-add-note - add note&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;skills&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# Skills&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;writing&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# Blog post writing&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;go&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;review&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# Go code review&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;social&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# Social media content&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;agents&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# Custom agents&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;go&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;reviewer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;md&lt;/span&gt; &lt;span class="c1"&gt;# Go code reviewer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;hooks&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# Hooks&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;py&lt;/span&gt; &lt;span class="c1"&gt;# Session logging&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="how-navigation-works"&gt;How Navigation Works
&lt;/h2&gt;&lt;p&gt;The key file is &lt;code&gt;HOME_MAP.md&lt;/code&gt;. It&amp;rsquo;s a map of the entire home directory with context detection rules.&lt;/p&gt;
&lt;p&gt;Claude sees keywords in your request and knows which directory to work in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;aitrader&lt;/code&gt;, &lt;code&gt;archlint&lt;/code&gt;, &lt;code&gt;blog&lt;/code&gt; -&amp;gt; &lt;code&gt;~/my/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;course&lt;/code&gt;, &lt;code&gt;book&lt;/code&gt;, &lt;code&gt;learning&lt;/code&gt; -&amp;gt; &lt;code&gt;~/education/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;memory&lt;/code&gt;, &lt;code&gt;remember&lt;/code&gt;, &lt;code&gt;mission&lt;/code&gt; -&amp;gt; &lt;code&gt;~/my/org-roam/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If context is ambiguous - it asks.&lt;/p&gt;
&lt;h2 id="project-specific-rules"&gt;Project-Specific Rules
&lt;/h2&gt;&lt;p&gt;Need specific rules for a project? Add them to &lt;code&gt;rules/projects/&lt;/code&gt;. For example, &lt;code&gt;aitrader.md&lt;/code&gt; contains:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How to run the collector (without proxy for Tinkoff API)&lt;/li&gt;
&lt;li&gt;Test commands&lt;/li&gt;
&lt;li&gt;Project specifics&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These rules load globally but apply only when working in the aitrader context.&lt;/p&gt;
&lt;h2 id="git"&gt;Git
&lt;/h2&gt;&lt;p&gt;Everything under git. One repository, one history.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;.gitignore&lt;/code&gt; is large - it excludes almost everything that shouldn&amp;rsquo;t be versioned: credentials, caches, Downloads, Documents, Library, .ssh. But everything else - configs, &lt;code&gt;.claude/&lt;/code&gt;, dotfiles - is tracked. Planning to add private repos as submodules, so one &lt;code&gt;git clone&lt;/code&gt; restores the entire home directory.&lt;/p&gt;
&lt;p&gt;No more copying between projects. Improve a rule once - it works everywhere.&lt;/p&gt;
&lt;h2 id="result"&gt;Result
&lt;/h2&gt;&lt;p&gt;Before: a dozen projects with scattered CLAUDE.md files, constant copying, different versions of the same thing.&lt;/p&gt;
&lt;p&gt;After: one &lt;code&gt;~/.claude/&lt;/code&gt;, structured rules, git for versioning. Improve once - works everywhere.&lt;/p&gt;
&lt;p&gt;Downside: tight coupling to home directory structure. For me it&amp;rsquo;s not a problem - the structure is stable.&lt;/p&gt;</description></item><item><title>Spec-driven development: Reproduce a project from specs alone</title><link>https://mshogin.com/notes/archlint-reproduction/</link><pubDate>Mon, 05 Jan 2026 00:00:00 +0000</pubDate><guid>https://mshogin.com/notes/archlint-reproduction/</guid><description>&lt;p&gt;Ran an experiment: can you reproduce a project if you give AI only specifications without source code?&lt;/p&gt;
&lt;h2 id="setup"&gt;Setup
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Original project: &lt;a class="link" href="https://github.com/mshogin/archlint" target="_blank" rel="noopener"
&gt;archlint&lt;/a&gt; - a Go architecture analysis tool&lt;/li&gt;
&lt;li&gt;Input: &lt;strong&gt;10 specifications&lt;/strong&gt; (Markdown + PlantUML), totaling &lt;strong&gt;73 KB&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Claude Code received an empty directory and specs&lt;/li&gt;
&lt;li&gt;Executor: Claude Code, started in an &lt;strong&gt;empty directory&lt;/strong&gt; and implemented the project from scratch.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Specs covered all the basics: module init, Makefile, data model, Go-analyzer, Cobra CLI, &lt;code&gt;collect&lt;/code&gt;/&lt;code&gt;trace&lt;/code&gt; commands, tracer library, tracelint, and integration tests.&lt;/p&gt;
&lt;h2 id="time"&gt;Time
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;~20 minutes&lt;/strong&gt; from empty directory to working project.&lt;/p&gt;
&lt;h2 id="results"&gt;Results
&lt;/h2&gt;&lt;p&gt;Final assessment of the cloned repository:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Structural identity: 100%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloning success: 85.5%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Semantic equivalence: ~75%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mutations: 23&lt;/strong&gt; (3 critical, 8 medium, 12 minor)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Interesting detail: the clone turned out &lt;strong&gt;shorter&lt;/strong&gt; than the original - 1,845 lines of Go vs 2,159 (-14.5%) with the same number of &lt;code&gt;.go&lt;/code&gt; files (13).&lt;/p&gt;
&lt;h2 id="mutations-that-actually-matter"&gt;Mutations that actually matter
&lt;/h2&gt;&lt;p&gt;Three &amp;ldquo;critical&amp;rdquo; mutations - exactly the places where the specification leaves room for interpretation (i.e., for creativity you didn&amp;rsquo;t order):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Sequence diagram building:&lt;/strong&gt; changed the algorithm for forming calls in the diagram (logic for call stack and write conditions).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tracerlint:&lt;/strong&gt; clone considers deprecated &lt;code&gt;Exit()&lt;/code&gt; call acceptable, while the original does not.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GoAnalyzer:&lt;/strong&gt; added &lt;code&gt;baseDir&lt;/code&gt; and &lt;code&gt;modulePath&lt;/code&gt; fields - AI &amp;ldquo;improved&amp;rdquo; the model because the specs didn&amp;rsquo;t explicitly define the analyzer&amp;rsquo;s responsibility boundary (what to store inside, what to compute outside).&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="takeaway"&gt;Takeaway
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Spec-driven development works as a mechanism for reproducing the &amp;ldquo;functional core&amp;rdquo;.&lt;/strong&gt; 73 KB of specifications was enough to quickly restore structure and core functionality.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Critical deviations occur where the specification describes &amp;ldquo;what should be&amp;rdquo; but doesn&amp;rsquo;t define &amp;ldquo;how to verify it&amp;rdquo;.&lt;/strong&gt; For such places you need:
&lt;ul&gt;
&lt;li&gt;precise rules (invariants),&lt;/li&gt;
&lt;li&gt;input/output examples,&lt;/li&gt;
&lt;li&gt;golden tests (byte-by-byte/structural comparison),&lt;/li&gt;
&lt;li&gt;prohibition on &amp;ldquo;model extension&amp;rdquo; without an explicit spec item.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In short: AI can clone a project from specs quickly. But if there&amp;rsquo;s a gap in the specs - it will definitely squeeze in some &amp;ldquo;engineering optimization&amp;rdquo;. Sometimes useful. In critical places - usually not.&lt;/p&gt;
&lt;p&gt;Clone repository: &lt;a class="link" href="https://github.com/mshogin/archlint-reproduction" target="_blank" rel="noopener"
&gt;mshogin/archlint-reproduction&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>