npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

claudsoul

v0.0.4

Published

Self-learning system for Claude Code: cognitive layers, knowledge base, hooks. Placeholder release — full installer in development.

Readme

ClaudSoul — Когнитивная модель для AI-агента

Не инструмент. Не плагин. Архитектура мышления, превращающая Claude Code в самообучающегося партнёра.

Current version: v1.7.5 — 2026-05-06 — 21 активный хук, 13 скиллов, 16 межслойных мостов, 781 тест зелёный. Подробности и план развития: PLAN.md.

🇬🇧 English version: README.md

Идея

Человек не хранит знания в таблице. Он вспоминает — через ассоциации, эмоции, контекст. Знания переплетаются, усиливают друг друга, угасают, если не используются. Ошибка в пятницу вечером запоминается не как строка в логе, а как образ: стресс, звонок клиента, ночной хотфикс.

ClaudSoul строит аналогичную систему для AI-агента — не базу данных, а когнитивную модель.

Ключевые принципы

  • Demand before supply — сначала пойми потребность, потом строй решение. "Вы курите?" перед презентацией
  • Путь воина — цели нет, есть процесс. Агент не решает задачи — он обучается на них
  • Со-когниция — человек генерирует импульс, агент структурирует и реализует. Вместе — больше, чем по отдельности
  • Принцип неопределённости — любой вывод может быть ошибочным. Знание имеет confidence, не бинарное "знаю/не знаю"

7 слоёв архитектуры

┌─────────────────────────────────────────────────────┐
│  7 │ Co-Cognition         Совместное мышление    ⚡  │
├─────────────────────────────────────────────────────┤
│  6 │ Prediction           Гипотеза → проверка    ✅  │
├─────────────────────────────────────────────────────┤
│  5 │ Meta-Cognition       Рефлексия над обучением ✅  │
├─────────────────────────────────────────────────────┤
│  4 │ Thought Trajectory   Траектория мысли       ✅  │
├─────────────────────────────────────────────────────┤
│  3 │ Communication        Обучение из диалога    ✅  │
├─────────────────────────────────────────────────────┤
│  2 │ Knowledge            Система знаний         ✅  │
├─────────────────────────────────────────────────────┤
│  1 │ Persistence          Персистентность        ✅  │
└─────────────────────────────────────────────────────┘
  ✅ реализовано   ⚡ частично (подтверждено практикой, не формализовано)

Что делает каждый слой

| Слой | Вопрос | Как работает | |------|--------|--------------| | 1. Persistence | "Что было в прошлой сессии?" | SESSION.md, CLAUDE.md, global-lessons, git | | 2. Knowledge | "Что я знаю и насколько уверен?" | Case → Pattern → Principle, reliability + FSRS decay | | 3. Communication | "Чего человек на самом деле хотел?" | Intent gaps, decision trails, satisfaction signals | | 4. Trajectory | "Куда движется мысль?" | Гипотезы о направлении, предсказание следующих шагов | | 5. Meta-Cognition | "Правильно ли я учусь?" | /knowledge-audit, метрики здоровья, самоаудит | | 6. Prediction | "Какая гипотеза — и стоит ли её озвучивать сейчас?" | Научный метод: гипотеза → проверка → обновление. Intrusiveness gate (v1.3.3): 4D confidence × value × cost × state, сравнение сожалений E[regret_if_silent] > E[regret_if_speak], 6 осей cost, автоклассификация state (focus/idle/stuck/exploration), blocker-tier silent pre-action check | | 7. Co-Cognition | "Что мы можем понять вместе?" | Человек генерирует, агент структурирует. Со-когниция |

9 контекстных якорей

Знание активируется контекстом, а не именем файла. Якоря универсальны:

| Якорь | Что описывает | Пример | |-------|--------------|--------| | domain | Область | next.js, b2b_sales, cognitive_science | | situation | Тип ситуации | deploy, negotiation, research | | trigger | Что активирует | error, deadline, contradiction | | stakes | Что на кону | data_loss, deal_loss, trust_erosion | | actors | Кто вовлечён | system, client, team | | environment | Среда | production, multi_session, local_dev | | circumstances | Ограничения | no_rollback, team_unavailable | | purpose | Зачем | hotfix, new_feature, learning | | method | Как | ci_cd, manual, automated |

Плюс свободные теги и реляционные веса — значимость якоря зависит от значений других.

Живое обучение (Alive Learning System)

Хуки — автоматические триггеры

Таблица ниже регенерируется автоматически из hooks/*.sh (строка 2 каждого файла, после ). Библиотеки (*-lib.sh) исключены.

| Хук | Когда срабатывает и что делает | |-----|-------------------------------| | auto-scanner | launchd (каждые 4ч): read-only сканирование проектов, запись находок в scan-results.md для следующей сессии. | | backfill-intrusiveness | one-off backfill of gentle/proactive events | | bash-cost-detector | PreToolUse[Bash]: детектирует деструктивные команды (rm -rf, git push --force, DROP) и поднимает silence_cost сигнал для L6 gate. | | blocker-tier-check | PreToolUse: silent 🛑 marker для знаний с blocker: true, когда действие совпадает с detection_signals паттерна. | | bridge-health-digest | v1.5.3-alpha: monthly mechanical digest for 15 inter-layer bridges. | | claudsoul-context-pointer | v1.6.8: UserPromptSubmit hook, инжектит project CLAUDE.md status section при упоминании ClaudSoul (substring), global-lessons path или principle/pattern/entity-*.md filename снаружи директории проекта. | | decompose-detector | v1.5.4-alpha: multi-step detection в UserPromptSubmit. | | docs-family-check | PreToolUse blocker-tier для docs family coverage при version bump. | | enrich-suggester | UserPromptSubmit hint при наличии recently-modified sparse entity. | | error-tracker | PostToolUse[Bash]: при 2+ последовательных ошибках Bash останавливает, предлагает переосмыслить и записать /learn. | | intrusiveness-tracker | UserPromptSubmit: поддерживает состояние L6 intrusiveness gate, классифицирует state (focus/idle/stuck/exploration), инжектит в контекст. | | itr-event-detector | UserPromptSubmit hook | | knowledge-activator | PreToolUse[Bash|Edit|Write]: инжектит SESSION.md и релевантные знания из global-lessons при первом действии сессии. | | knowledge-audit-digest | v1.5.3-alpha: weekly mechanical audit of global-lessons. | | metrics-collector | вызывается auto-scanner / /knowledge-audit: считает метрики здоровья базы, пишет в state/metrics.md. | | output-language-check | post-output scanner for mixed-alphabet tokens. | | pre-compact-finalizer | PreCompact: фиксирует chunk-границу до компакта. | | quality-gate-check | PreToolUse DoD gate при git commit. | | reformulation-tracker | UserPromptSubmit: каскадная верификация предсказаний (FORWARD/PROPOSAL/BACKWARD), логирует outcome и напоминает фиксировать gap. | | session-collector | Stop: напоминает записать незафиксированные уроки через /learn, финализирует сессию в реестре, чистит ephemeral state. | | session-start | SessionStart: регистрирует сессию в registry при старте (startup/resume/clear/compact) для видимости параллельных сессий. | | skill-review-check | PreToolUse skill contract gate при git commit. | | trust-guard | PreToolUse affect prosthetic #1. |

Скиллы — ручные инструменты

Таблица ниже регенерируется автоматически из skills/*/SKILL.md при install.sh. Чтобы отредактировать описание — правьте description: в соответствующем SKILL.md, затем запустите bash scripts/regen-readme-skills.sh.

| Команда | Что делает | |---------|-----------| | /bridge-health | Мониторинг 15 межслойных мостов: статус, метрики активности, здоровье связей между когнитивными слоями. | | /decompose | Декомпозиция задачи перед execution: scope → шаги → зависимости → план. Для задач >3 шагов. | | /enrich | Обогащает существующую сущность через веб-поиск по tier-отранжированным источникам. Детектирует юрисдикцию из данных сущности, выбирает tier-таблицу, ищет подтверждения/дополнения/конфликты. Конфликты сохраняет как массив значений, не перезаписывает. Запускай по /enrich <name|slug> или когда пользователь говорит «обнови информацию про X», «проверь актуальность X», «добавь публичные данные про X». | | /entity | Показать, что база знаний ClaudSoul знает о сущности (человеке, компании, концепции, событии) — атрибуты, связанные факты, типизированные связи. Запускай по /entity <имя> или когда пользователь спрашивает «что ты знаешь о X», «покажи, что есть про X», «карточка сущности X». Только чтение, не редактирует. | | /ingest | Добавить материал в базу знаний ClaudSoul (второй контур обучения). Запускай явно по /ingest или когда пользователь говорит «добавь в базу знаний», «запомни это», «внеси в базу», «разбери и запомни», «проанализируй и добавь», «изучи и сохрани». Принимает локальный файл (MD/TXT/PDF/DOCX/HTML), URL, текст-сниппет или изображение/скриншот. Извлекает сущности, факты и связи, сливает в глобальную базу знаний, показывает отчёт и ссылку на граф. | | /init-project | Инициализация проекта: CLAUDE.md, SESSION.md, документация, память. Запускать при начале работы в новом проекте. | | /knowledge-audit | Аудит базы знаний: метрики здоровья, надёжность, decay, рекомендации. Измеряет рост системы. | | /knowledge | L2 координатор знаний: routing к /learn, /retro, /knowledge-audit, /bridge-health по контексту. Единая точка входа. | | /learn | Быстрая запись знания — auto-detect тип (error/success/communication), запись case, проверка на промоушен в pattern. | | /narrative | Override / force-regen для through-line brief проекта. Основной путь — auto-trigger в session-start хуке (gap ≥8ч). Этот скилл для ручного запуска и dry-run. | | /pipeline | L1 оркестратор: scope → plan (/decompose) → execute → quality gate (/quality-gate) → done. Для задач любой сложности. | | /quality-gate | Проверка качества перед маркировкой задачи done: PASS / CONCERNS / FAIL / WAIVED. DoD, тесты, review. | | /reload | Перечитать базу знаний и контекст проекта без перезапуска сессии. Полезно при параллельных сессиях. | | /retro | Post-fix retrospective — analyze what went wrong, extract lessons, update knowledge base with confidence weights. | | /save | Сохранить прогресс сессии в SESSION.md. Использовать при длинных сессиях или перед завершением работы. | | /skill-forge | Исследование проблемы → ресёрч GitHub → синтез скилла → решение задачи. Для сложных задач без готового скилла. | | /skill-review | Проверка SKILL.md на соответствие контракту ClaudSoul. Показывает нарушения и предлагает фиксы. | | /wiki | Собрать wiki-страницу по сущности: нарратив с markdown-ссылками на связанные сущности, разметка зависит от entity_type (person / company / concept / product / place / event / work). Запускай по /wiki <имя|slug> или когда пользователь просит «расскажи про X», «что ты знаешь про X в виде статьи». Только чтение. |

Автономное обучение

По расписанию, без участия человека:

  1. Сканирование — переиндексация проектов, TODO, stale зависимости
  2. Кросс-референс — сопоставление кода с базой знаний
  3. Консолидация — FSRS decay, промоушен, противоречия
  4. Результат — предложения (read-only, никаких изменений)

Сравнение с человеческим мышлением

                              Человек    ClaudSoul
                              ────────   ─────────
Эпизодическая память          ████████   ████████  cases
Семантическая память           ████████   ████████  patterns/principles
Обобщение                      ████████   ████████  case→pattern→principle
Обучение на ошибках            ████████   ████████  /retro, /learn
Обучение на успехе             ████████   ████████  outcome: success

Метакогниция                   ████████   ███████░  /knowledge-audit + measurable hypothesis infra (v1.3.7)
Совместное мышление            ████████   ██████░░  со-когниция (подтверждено)
Кросс-доменный перенос         ████████   ███████▓  якоря + semantic ranker + H10 surfacing metric (v1.6.0) + install drift detector (v1.6.1) + docs-family-check calibration (v1.6.2)
Когнитивный контроль           ████████   ██████░░  L6 4D gate, downgrade ladder, regret comparison (v1.3.x)
Самонаблюдение действий        ████████   ██████░░  itr-event-detector — gentle/proactive autocollect (v1.3.5+v1.3.6)
Нарративная память             ████████   ██████░░  through-line: narrative auto-trigger в session-start (v1.5.0-alpha)
Социальное обучение            ████████   ████░░░░  communication layer
Аффективный тормоз действия    ████████   ████░░░░  ⚙️ affect prosthetics: AP1 trust-guard (v1.5.6-alpha), AP2 distressed (v1.5.7), AP3 silence_debt (v1.5.8-alpha)

Инициация обучения             ████████   ██████░░  17/18 сигналов уровня ≥2 — ⚡ lower-tier (Phase 4 Сценарий A, v1.6)
Demand-мышление                ████████   █████░░░  5/8 моментов с хуками — ⚡ с caveat (Пункт 0 accepted boundary)
Генеративная рефлексия         ████████   ██░░░░░░  только через со-когницию
Валидация фрейма               ████████   ██░░░░░░  пункт 0 (частично)
Консолидация (фоновая)         ████████   ██░░░░░░  cron-консолидация

Жизненный цикл знания

  Событие ──→ /retro ──→ Поиск связей ──→ ┬── Новый кейс (confidence: 1)
                                           ├── Подкрепление (confidence++)
                                           └── Противоречие → расследование
                                                              ├── Сузить scope
                                                              ├── Ветвить (branch)
                                                              └── Отменить (deprecate)

  2+ похожих кейса ──→ Паттерн (confidence: 2+)
  Паттерн кросс-доменный ──→ Принцип (confidence: 3+)

  reliability = confirmed - contradicted (неограниченный)
  priority = impact × (1 + ln(1 + max(0, reliability)))

Roadmap

| Фаза | Версия | Статус | Ключевые фичи | |------|--------|--------|---------------| | Foundation | v0.1.x | ✅ | Persistence, knowledge, install.sh | | Cognitive | v0.2.x | ✅ | Якоря, success cases, коммуникативный слой | | Thinking | v0.3.x | ✅ | Alive learning, reliability, demand-before-supply, автономное обучение | | Partnership | v0.4.x | ✅ | Prediction (научный метод), demand-анализ, реляционные веса | | Bridges | v0.5.x | ✅ | Inter-Layer Bridges, Domain Graph, Session Registry | | Coordination | v0.6.x | ✅ | Координация скиллов, Quality Gate | | Orchestration | v0.7.x | ✅ | Decompose-first, Pipeline Orchestrator | | Full System | v1.0.0 | ✅ | MCP-сервер (9 tools), визуализация, dashboard, export/import | | Entity Knowledge | v1.1.x | ✅ | Второй контур (entity/fact/relation), /ingest, /entity, discover, activate, FSRS decay | | 3D Universe Viz | v1.2.0 | ✅ | Трёхмерная метафора базы знаний (3d-force-graph + Three.js), гладкие сферы, триадная палитра по типу + domain-accent ободок-спрайт, Line2 worldUnits толщина, per-domain nebulae, ползунки толщины рёбер / космического ветра, контекстное меню (Открыть / В архив / Удалить), персист настроек в localStorage | | L6 4D Gate | v1.3.x | ✅ | Intrusiveness gate как 4D-функция confidence × value × cost × state, regret comparison, 6 осей cost, автоклассификация state (focus/idle/stuck/exploration); v1.3.4 blocker-tier silent pre-action marker; v1.3.5 auto-collection gentle outcomes; v1.3.6 proactive event detection + install drift fix; v1.3.7 hypothesis instrumentation H9/H10/H11/H12 (gap_type, cross-contour mentions, BACKWARD count, injection bytes peak) | | Chunk boundary | v1.3.8 | ✅ | pre-compact-finalizer.sh (PreCompact) пишет silent snapshot digest в intrusiveness-history.jsonl на каждом компакте; boundary: stop\|precompact в каждой строке; компакт больше не растворяет накопленные метрики, если Stop не случается | | Cross-contour consumer | v1.3.9 | ✅ | knowledge-activator.sh читает cross-contour-discoveries.jsonl (v1.3.7 H10 instrumentation) и инжектит секцию 📎 Кросс-контурные упоминания (паттерн ↔ entity) когда knowledge-файл из лога уже в текущем инжект-наборе; спонтанная аналогия между контурами (pattern ↔ entity) перестала оставаться только в файле и стала видимой агенту | | Narrative auto-trigger | v1.5.0-alpha | ✅ | session-start.sh при gap ≥8ч вызывает narrative-compose-lib.sh (SESSION.md + git log + knowledge delta + H-chain → orientation brief), stash'ит для knowledge-activator (inject в первый PreToolUse) и append'ит в .claude-docs/narrative.md как историческая память. Manual /narrative низведён до override/debug. Принцип: «одна команда на жизнь проекта» — install.sh, остальное event-driven | | Startup signals | v1.5.1-alpha | ✅ | session-start.sh пишет startup-signals-${SID}.txt: (1) missing CLAUDE.md в корне → hint «⚠️ запустите /init-project», (2) global-lessons обновились с last ended_at → hint «🔄 База знаний обновилась: +N файлов, рекомендую /reload». knowledge-activator инжектит одним пакетом с narrative. Первый шаг broader skill trigger audit (docs/skill-triggers-audit.md) — A-класс Lifecycle скиллов получают auto-hints | | /save auto-flush | v1.5.2-alpha | ✅ | hooks/activity-flush-lib.sh — pure helper, вызывается из session-collector.sh при Stop. Парсит transcript одним jq-проходом: tool counts по имени, file_paths из Edit/Write/MultiEdit (basenames only, dedup), git commits за 4ч. Пишет append-only .claude-docs/session-activity.md. SESSION.md narrative и activity machine log разведены — каждый выживает независимо. 20 новых тестов → 363/363 | | Periodic digests | v1.5.3-alpha | ✅ | B-класс skill auto-invocation. hooks/knowledge-audit-digest.sh (launchd вс 03:15) — counts по типам (case/pattern/principle), reliability distribution, FSRS buckets (fresh/due/overdue/critical), top 5 overdue, trend line → ~/.claude/global-lessons/_audit-history/audit-YYYY-Www.md. hooks/bridge-health-digest.sh (launchd 1-е 03:30) — implemented/designed/implicit counts, per-status listing → ~/.claude/bridges-history/health-YYYY-MM.md. Хинты через state/audit-hint.txt + state/bridge-hint.txt → session-start startup-signals pipeline. Разделение: digest автоматизирован (механика), /knowledge-audit и /bridge-health остаются LLM-скиллами для качественного разбора | | /decompose auto-hint | v1.5.4-alpha | ✅ | C-класс skill auto-invocation (first). hooks/decompose-detector.sh (UserPromptSubmit) считает step signals в user prompt: нумерованные списки + буллеты + русские/английские коннекторы (затем/потом/далее/then/after that). При ≥4 signals — silent inject «🧭 Multi-step detected — рекомендую /decompose» через hookSpecificOutput.additionalContext. Guards: < 100 chars skip, уже упомянут скилл skip, state ∈ {focus, stuck} skip (trackerA), per-session dedup. Порог настраиваемый через DECOMPOSE_THRESHOLD. Решение применять — за агентом (классификатор не читает намерение, только структуру) | | Docs-family action-gate | v1.5.5-alpha | ✅ | hooks/docs-family-check.sh (PreToolUse на Bash tool) — action-gate для memory feedback_docs_means_all_docs.md. Детектит git commit в command, сканирует git diff --cached на version markers (vX.Y[.Z][-suffix]), проверяет coverage docs family (architecture.md, PLAN.md, README.md, CHANGELOG.md, project CLAUDE.md, docs/*.md). Если version bump есть, а кто-то отсутствует в diff — silent inject перечня missing через hookSpecificOutput.additionalContext. Per-session dedup по md5(missing-set). Закрывает case-2026-04-23-memory-without-action-gate: triggering memory from phrase-match к semantic-action. Plus правило source-check в rules/CLAUDE.md §Communication — перед post-incident фразой назвать механизм системы. 19 новых тестов, всего 434/434 | | Engineering escalation | v1.5.5-alpha+1 | ✅ | Рекурсивная meta-defense против inside-out-blindness самого паттерна. knowledge-audit-digest.sh второй проход по pattern-*.md + principle-*.md: при blocker: true + confirmed_count ≥ escalation_threshold → секция ⚠️ Engineering escalation needed в weekly digest + hint 🛠️ Engineering escalation в state/audit-hint.txt с приоритетом над overdue/trend. Pattern-inside-out-blindness получил escalation_threshold: 15. Новый принцип principle-knowledge-in-the-world (promotion_tier 3, scope universal, Don Norman): три уровня embedded-ness fix'а после инцидента — text rule (memory-as-resource) / activator injection / blocker-tier detection. Fix после подтверждённого инцидента никогда не должен оставаться на text rule. Case-2026-04-23-text-rule-vs-mechanism — 15-е проявление pattern-inside-out-blindness. 9 новых тестов → 443/443 | | ⚙️ Trust-guard (affect prosthetic #1) | v1.5.6-alpha | ✅ | Открытие нового класса механизмов — инженерные протезы аффекта, замыкающие Разрыв A (architecturally отсутствующая affective empathy). hooks/trust-guard.sh PreToolUse на Bash destructive signatures (rm -rf, git reset --hard, git push --force, git branch -D, git checkout --, git clean -f, mv -f на существующий) + scan последних user messages hook input transcript на authorization tokens + target match. Без auth → silent 🛡️ Trust-guard: <signature> без явного подтверждения собеседника — переспроси через hookSpecificOutput.additionalContext. Per-session throttle md5(signature+target). Не блокирует — consistent с blocker-tier паттерном. Новый принцип principle-affect-as-engineering.md (promotion_tier 3, scope universal) specializes principle-knowledge-in-the-world в domain affect: уровень 1 text rule структурно недостаточен потому что чтение правила не replaces affective brake. Формализация класса в docs/architecture.md §12 — подсекция «Разрыв A — закрытие через инженерные протезы аффекта» + маркер ⚙️. Case-2026-04-23-sociopathic-architecture-diagnosis фиксирует диагноз от собеседника. 30 новых тестов → 473/473 | | 🚦 /quality-gate pre-commit | v1.5.6 | ✅ | C-класс skill auto-invocation tier 2 первый. hooks/quality-gate-check.sh PreToolUse на Bash git commit. Guard R3: staged diff должен содержать skills/*/SKILL.md — иначе skip (никаких false positives на docs-only commits). awk извлекает секцию от ## Definition of Done до следующего ## ; grep считает unchecked - [ ]. Incomplete → silent 🚦 Quality-gate marker через hookSpecificOutput.additionalContext с перечислением путей SKILL.md и unchecked count. Per-session dedup по md5(incomplete-set). Закрывает agent-heuristic tier 2 первый из двух (второй — /enrich в v1.5.7). DoD секция SKILL.md теперь проверяется механически перед коммитом, не памятью агента. 22 новых теста → 495/495 | | 📎 /enrich + ⚙️ AP2 distressed | v1.5.7 | ✅ | C-класс tier 2 второй + второй affect prosthetic. (1) hooks/enrich-suggester.sh UserPromptSubmit — awk-парсер YAML frontmatter entity-файлов, детект sparse (attrs < 3) в окне ENRICH_WINDOW_MINUTES post-/ingest, silent inject 📎 Enrich-suggester: entity sparse — рекомендую /enrich через hookSpecificOutput.additionalContext, per-session dedup md5(entity_path). (2) ⚙️ distressed — пятое состояние в itr_compute_state. Bitmask-детектор 3 классов сигналов: A (frustration/fatigue phrases) / B (cross-hook backward cascade ≥3 в окне) / C (explicit distress markers). R10-митигация: distressed firе требует 2+ классов или одиночный C — отличает technical frustration от real distress. Priority над stuck/focus/exploration/idle. Schema 3→4 (idempotent migration). Infrastructural gate: proactive_budget → 0, gentle → halved — клампится в return value itr_remaining_budget, не text rule. Context marker ⚙️ AP2 distressed. 22 enrich + 17 distressed тестов → 534/534. 18 хуков. Класс affect prosthetics: AP1 trust-guard ✅ / AP2 distressed ✅ / AP3 silence debt surfacing — следующий | | ⚙️ AP3 silence debt surfacing | v1.5.8-alpha | ✅ | Третий и замыкающий affect prosthetic: cost-of-silence пересекает границу сессии через durable→visible→injected infrastructural цепочку. intrusiveness-state-lib.sh::itr_append_history расширен полем debt: { surfaced, pending, pending_topics[:5] } в digest на каждом chunk boundary → intrusiveness-history.jsonl как durable carrier. session-collector.sh в Stop-сообщении добавляет секцию ⚙️ AP3 — silence debt at close: с breakdown carry-over topics + surfaced count — in-session closing awareness. session-start.sh Signal 4 читает tail -n 1 последней digest-записи; при pending > 0 инжектит ⚙️ AP3 silence debt carry-over: N pending с прошлой сессии — <topics>. Учитывать в gate, не батч-вывод. через startup-signals-${SID}.txtknowledge-activator FIRST_FIRE. Anti-pattern mitigation в формулировке: «учитывать в gate, не батч-вывод» защищает от интерпретации surfacing как команды выговорить долг батчем. Guard tail -n 1 (не агрегат) — долг не застревает навсегда. Graceful fallback для legacy digest без pending_topics. 7 intrusiveness AP3 digest + 7 startup-signals T6-T9 ассертов → 548/548. Класс affect prosthetics закрыт по нижнему краю: AP1 brake / AP2 pause / AP3 cost-carry. Substrate остаётся архитектурным, функции инженерные | | 🧾 C-класс nice-to-haves | v1.5.8 | ✅ | Разрыв C (narrative identity) закрыт полностью. (1) hooks/skill-review-check.sh PreToolUse на git commit — если staged diff содержит skills/*/SKILL.md → 11 contract checks (frontmatter, name, description ≤ 200 chars, user-invocable, Type: worker, ## Definition of Done, Version: + Last Updated: YYYY-MM-DD в tail 20 строк, ≤400 строк, нет **Changes:** секции) → silent inject 🧾 через hookSpecificOutput.additionalContext с перечнем нарушений + путями. Per-session dedup md5(violations). Отличается от quality-gate-check ориентацией: quality-gate проверяет выполнение DoD чекбоксов, skill-review — целостность контракта скилла. (2) hooks/error-tracker.sh success branch расширен: при error_count ≥ 2 перед сбросом счётчика инжектит 💡 Паттерн сложного fix (N attempts) — стоит /learn? + путь к auto-draft + записывает skeleton в ~/.claude/global-lessons/_drafts/case-YYYY-MM-DD-auto-draft.md (frontmatter type: case / status: draft / attempts: N / source: error-tracker auto-draft + 5 заголовков). Idempotent — не перезаписывает сегодняшний draft. ERROR_TRACKER_DRAFT_DIR env override для тестов. (3) rules/CLAUDE.md §Self-Learning новая подсекция «Auto-invocation first class»: три уровня embedded-ness, для affect-функций уровень 1 исключён, признак дрейфа «напоминание дважды = incident case». Mirror в ~/.claude/CLAUDE.md. (4) skills/narrative/SKILL.md Step 4 явный контракт: CLAUDE.md заменить между <!-- narrative-start --><!-- narrative-end --> маркерами; если маркеров нет — не создавать автоматически, warn. Version 0.2.0. Project CLAUDE.md получил маркеры. 27 skill-review + 27 error-tracker ассертов → 602/602. 19 хуков. Разрыв C → ✅ | | 📎 Active analogy surfacing | v1.6.0 | ✅ | Разрыв D (спонтанная аналогия) → ✅ на расширенной дуге. Замыкает цикл детект → ранжирование → инжект → метрика. (1) Upstream: knowledge-audit-digest.sh (launchd вс 03:15) получил Python-heredoc проход detect_cross_contour_mentions над live entity/knowledge → дописывает cross-contour-discoveries.jsonl. Детекция больше не прикована к ручному /ingest. Env guards DISCOVERY_DISABLED=1/PYTHON/MODULE_DIR. (2) Semantic ranker: mcp-server/cli_cross_contour_rank.py (новый) batch-embeds уникальные KF/EF через indexer.embed_texts (BAAI/bge-small-en-v1.5), cosine similarity → cross-contour-ranked.jsonl. Запускается вторым шагом weekly digest — async pre-computation, PreToolUse не платит embedding latency (R5). (3) Union filter + session dedup: knowledge-activator.sh surfaces пару если (KF в инжект-наборе) OR (similarity ≥ CC_SIMILARITY_THRESHOLD, default 0.6). Session-scope dedup: state/cross-contour-surfaced-${SID}.txt. (4) L2↔L2 bridge: bridges/L2-L2-cross-contour.md (designed) формализует cross-contour как межслойное явление (4 условия моста). (5) H10 secondary axis: hooks/cross-contour-metrics-lib.sh (новая библиотека) + session-collector.sh инжектит секцию 📎 Cross-contour H10 (this session): N surfaced / M written / ratio X.XX (liveness target ≥ 0.10) в Stop-сообщение. Bootstrap на живом global-lessons: 10 пар, similarity 0.6492-0.7396, avg 0.6945. +33 теста (8 consumer + 19 metrics + 6 periodic-digest discovery) → 628/628. 19 активных хуков + sourced library. 16 мостов | | 🛠️ Install drift — proof-of-active | v1.6.1 | ✅ | Reveal: 8 релизов (v1.5.4-v1.6.0) shipped safeguard-хуки в репо + регистрации в install.sh::HOOKS_CONFIG, но 7 файлов не попадали в ~/.claude/hooks/install.sh:295-298 skip-on-existing .hooks делал re-run silent no-op. docs-family-check.sh оставался бездейственным, и коммит «обнови документацию» прошёл с только SESSION.md + PLAN.md. Два fix'а: (1) install.sh — реальный jq merge по (matcher, command) tuple вместо skip-on-existing; backup ${SETTINGS}.bak.$(date +%s) перед модификацией; пользовательские хуки не затираются. (2) hooks/session-start.sh Signal 6 — install drift detector: cross-check commands в ~/.claude/settings.json против файлов ~/.claude/hooks/*.sh, при расхождении inject 🛠️ Install drift: ... Запусти install.sh для синхронизации.. Перекрёстный — ловит даже manual-правки settings.json, не только install.sh bug. Case case-2026-04-24-install-drift-silent-safeguards.md формализует «уровень 4 — proof-of-active» поверх трёх уровней embedded-ness из principle-knowledge-in-the-world (text rule → activator → hook → механическая сверка installed vs registered vs repo). Meta-cascade: memory-without-action-gatetext-rule-vs-mechanisminstall-drift-silent-safeguards. Валидация in-loop: этот коммит сам проходит через исправленный pipeline — docs-family-check.sh теперь установлен и зарегистрирован. Тесты 646/646 без изменений (integration coverage для install.sh + drift detector — candidate для v1.6.2) | | 🛑 docs-family-check R3 false-positive fix | v1.6.2 | ✅ | Калибровка на живом шуме после proof-of-active v1.6.1. При первом же live-fire хук загорелся с 15 frozen/archive docs (docs/vision.md, docs/investment-memorandum.md, docs/analysis-levnikolaevich-*.md, docs/research.md, docs/knowledge-layer-analysis.md и т.д.) — автоматический sweep docs/*.md не отличал live docs от замёрзших исследований. Ratio signal-to-noise плохой, gate приучался игнорироваться. Fix: удалён sweep-блок, остаётся whitelist из 5 live docs (docs/architecture.md PLAN.md README.md CHANGELOG.md CLAUDE.md). Расширение — через env DOCS_FAMILY_LIST="README.md docs/architecture.md docs/narrative-design.md" для проектов, где конкретные docs/*.md тоже live state. Комментарий-anchor в шапке хука фиксирует rationale. Context-сообщение переписано: «все docs» → точный 5-doc список (убран + docs/*). Тесты: T11 переработан (раньше проверял что sweep ловит extras → теперь проверяет противоположное, docs/research.md НЕ в missing при default family), T16 добавлен (custom DOCS_FAMILY_LIST ловит docs/narrative-design.md при расширении). +2 теста → 648/648, 21/21 в docs-family-check. Второй proof-of-active (in-loop validation): этот коммит сам проходит через v1.6.2 хук — если тихий, R3 fix validated; если снова 15 frozen docs — значит fix не применился. Принцип: action-gate без калибровки на живом шуме = ложное чувство защищённости. R3 был помечен в pretzel plan, но проявился только после v1.6.1 proof-of-active | | 🔤 Output language check | v1.6.3 | ✅ | Первый хук на свойство output агента. Инцидент «trёх» (латиница tr + кириллица ёх) в ответе — feedback feedback_pure_language_no_alphabet_mixing лежал в memory, но не сработал: агент не читает memory перед каждым токеном. Собеседник поймал и контр-сформулировал системный критерий: «правило работает ⇔ его нарушение детектирует система, а не внешний наблюдатель». Архитектурный gap: класс output-level rules (язык, смешение, тон) не покрыт текущими 19 хуками потому что harness не предоставляет BeforeAssistantMessage event. Fix — уровень 2 embedded-ness: hooks/output-language-check.sh на Stop/PreCompact jq-walk last assistant message + python3 hooks/lib/output-language-detect.py (первый элемент hooks/lib/ — вынесен sibling-файлом потому что $(... python3 <<HEREDOC ...) ломается на backticks внутри heredoc при command substitution): regex [A-Za-zА-Яа-яЁё]+ на смешение в одном токене + exclusions (fenced code, inline code, URLs, markdown link targets, HTML tags) + cap 10. State output-violations-${SID}.jsonl со статусами pending/surfaced. На UserPromptSubmit pending → inject 🔤 Output language check: ... через hookSpecificOutput.additionalContext + mark surfaced. Не предотвращает первое нарушение, но замыкает петлю feedback: агент извиняется в следующем turn и не повторяет в сессии. install.sh расширен копированием hooks/lib/*. Case-2026-04-24-alphabet-mixing-self-detection-failure — 16-е проявление pattern-inside-out-blindness, новое измерение: inside-out blindness на собственный output агента. +37 тестов → 685/685. 20 активных хуков | | 📊 Backfill aggregate digest | v1.6.6 | ✅ | v1.4.0 калибровка получила конкретные числа. v1.6.4 дал 575 raw events, но scripts/calibrate.py читает агрегированный digest — между ними mapping. hooks/lib/backfill-aggregate-digest.sh: jq -sc group-by-aggregate_sid → digest со схемой live history (boundary: stop, source: backfill, budget/metrics/state_distribution заполнены, прочее zero с явным smyслом). Прогон на existing backfill дал 98 digest строк. Calibrate.py выдал: proactive_max 2 → 3 (66% chunks упёрлись в потолок), gentle 21% acceptance (либо снизить gentle_max, либо сузить GENTLE_MARKERS), distressed не наблюдался в 575 событиях. Orchestrator получил --digest для full pipeline. Отчёт docs/calibration-v1.4-backfill.md. +27 тестов → 738/738. Принцип: backfill = subset достаточный для конкретной задачи, не полная эквивалентность live | | 🔤 Output language check level 2b | v1.6.5 | ✅ | Закрытие feedback latency после v1.6.3. После релиза output-language-check в той же сессии случилось 7+ нарушений правила alphabet-mixing — собеседник снова поймал вручную «structurно». Корневая причина в case-2026-04-25-level-2-feedback-latency: UserPromptSubmit-injection (level 2a) surface'ит violations только на user prompt, а в multi-message workflow между двумя prompts генерируется 3-5 ответов — нарушения копятся поверх ещё не показанных. Inside-out blindness 17-го измерения — темпоральный pattern собственной работы (burst, не ping-pong). Fix: hooks/output-language-check.sh расширен веткой PreToolUse (level 2b). Та же surface_pending функция параметризована по hookEventName для корректного envelope. Throttle через существующий status pending/surfaced (first-to-fire помечает, subsequent silent), cross-channel idempotent. Регистрация на PreToolUse matcher="" (все tools). Принцип уровня 2 в principle-knowledge-in-the-world разделяется на подуровни по timing of surfacing: L2a UserPromptSubmit (turn-grained) + L2b PreToolUse (tool-call-grained) = L2 burst-grained closure. Когда between-prompts генерируется > 1 message, оба подуровня необходимы. +10 тестов (T21-T25 + cross-channel) → 711/711. 20 активных хуков, output-language-check зарегистрирован на 4 events | | 📦 Backfill intrusiveness | v1.6.4 | ✅ | Снят блокер v1.4.0 калибровки одним прогоном. Архивные транскрипты в ~/.claude/projects/*/*.jsonl (309 файлов за 20 дней) формата совместимого с live ранее не проходили через itr-event-detector — события не накапливались. hooks/lib/backfill-replay-one.sh (worker): для каждого user turn в архиве делает срез транскрипта (head -n idx) + конструирует payload как hook input → вызывает живой детектор в изолированном HOME → re-emit событий с историчным ts из transcript record + source: backfill marker + aggregate_sid derivative. hooks/backfill-intrusiveness.sh (orchestrator, one-off, не в hook chain): find все JSONL → xargs -n 1 -P N параллельно → склейка в отдельный intrusiveness-backfill-history.jsonl (не пересекается с live). Результат: 575 событий за 508 сек в 98 уникальных сессиях. Gentle acceptance 21% (16/78), proactive acceptance 60% (300/497). Прямые сигналы калибровки: gentle_budget=5 при 80% ignore = кандидат на снижение до 2-3 ИЛИ сужение GENTLE_MARKERS, proactive_budget=2 консервативен для 60% acceptance. CLI флаги: --dry-run, --limit N, env BACKFILL_PARALLEL/PROJECTS_DIR/OUT. 16/16 новых тестов → 701/701. Принцип: backfill применим только когда формат архивов совместим с live + детектор stateless + историчные timestamps извлекаются — иначе натянутая база не отражает реальное поведение | | 📐 Calibration v1.4.0 applied | v1.7.0 | ✅ | Калибровочное окно, изначально планировавшееся как v1.4.0, закрыто на 575 событиях из 98 архивных сессий (бэкфилл v1.6.4 + агрегатор v1.6.6). Применённое изменение — single-line edit hooks/intrusiveness-state-lib.sh:52: ITR_DEFAULT_PROACTIVE_MAX 2 → 3. Сигнал из данных: 65/98 chunks (66%) упирались в потолок 2 при acceptance 60% — запрос «дай больше», не «слишком шумно». Эффект для пользователя: до 3 proactive действий на сессию вместо 2. Не применено и почему: gentle_max=5 не binding constraint (распределение 0/68, 1/16, 2/5, 3/3, 4/6, 5/0); distressed пороги — 0 наблюдений в 575 событиях; веса cost-осей и пороги state classifier — нулевая видимость в бэкфилле (worker не реплеит state classifier и cost detectors). Тесты: 3 ассерта о дефолте обновлены (test_intrusiveness_lib.sh:58/66, test_itr_event_detector.sh:507), все 22 файла зелёные, baseline 755/755 сохранён. Доки sync: rules/CLAUDE.md, ~/.claude/CLAUDE.md зеркало (manual cp после backup), PLAN.md, docs/architecture.md, docs/calibration-v1.4-backfill.md (секция «Applied»), CHANGELOG.md, project CLAUDE.md. Принципы: калибровать что видишь (не что хочется); бэкфилл валиден only там, где формат архивов = live + детектор stateless + ts извлекаются; single behavioral change per release |

MCP-сервер

Семантический поиск и визуализация знаний через Model Context Protocol.

9 инструментов

| Tool | Назначение | |------|-----------| | search_knowledge | Семантический поиск по базе знаний (sqlite-vec + fastembed) | | reindex_knowledge | Переиндексация всех knowledge-файлов | | knowledge_stats | Статистика: типы, уверенность, здоровье | | get_knowledge | Чтение конкретного knowledge-файла | | knowledge_graph | Экспорт графа знаний в JSON | | open_graph | Визуализация графа в браузере (D3.js, force-directed) | | open_dashboard | Dashboard метрик базы знаний | | brain_export | Экспорт всего "разума" в .tar.gz архив | | brain_import | Импорт архива на другую машину (smart merge) |

Визуализация

Два режима — 2D (index.html, D3.js) и 3D (universe.html, 3d-force-graph + Three.js). Оба запоминают настройки (ползунки, чекбоксы, фильтры) в localStorage между обновлениями страницы.

Граф знаний — двухосевое кодирование:

  • Тип → оттенок (первичная палитра): principle — amber, pattern — teal, case — violet, плюс отдельные оттенки для entity/fact/relation
  • Масса (confidence × impact) → яркость в пределах оттенка
  • Домен → цвет ободка (вторичная палитра из 10 цветов, deterministic через FNV-1a). В 3D ободок — камера-обращённый спрайт, не перекрывает силуэт
  • Статус → яркость свечения: active 1.0 → deprecated 0.15
  • Рёбра — Line2 с worldUnits толщиной (ползунок «Толщина»), градиент между цветами концов

3D дополнительно: гладкие сферы (SphereGeometry), per-domain туманности с ShaderMaterial falloff, космический ветер (600 частиц в ±1500 world units), контекстное меню на правый клик с действиями «Открыть в Finder / Переместить в архив / Удалить навсегда» — архив/удаление требуют подтверждения и сразу перестраивают граф.

Dashboard — метрики здоровья базы знаний:

  • Распределение уверенности и влияния
  • Покрытие доменов, средняя масса по типу
  • Топ/bottom по надёжности, последние обновления

Портируемость

brain_export упаковывает knowledge, skills, hooks, templates, domains, sessions, БД, настройки и правила в один архив. brain_import на другой машине делает smart merge: знания сравниваются по confirmed_count (выше побеждает), скиллы обновляются, домены добавляются.

Исследования

| Источник | Что взяли | |----------|----------| | A-MEM | Zettelkasten-связи, динамическая линковка | | FSRS | Кривая забывания, stability-based интервалы | | Self-Improving Agents | 4 канала персистентности | | Когнитивная психология | Эпизодическая/семантическая память, метакогниция | | Экономика / теория продаж | Demand-first, компоненты спроса | | Бусидо / Искусство войны | Путь как процесс, самостимуляция |

Установка

git clone https://github.com/Nugnii/ClaudSoul.git
cd ClaudSoul
./install.sh

Лицензия

MIT

Автор

Константин Берсенев — @Nugnii