К основному содержанию
скилл CX Codex

codex-history-ingest — скилл для Claude Code: история Codex в Obsidian

Разбирает логи сессий Codex CLI и складывает из них страницы Obsidian. Пригодится, если накопились сотни rollout-файлов, а знаний из них не достать.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add Ar9av/obsidian-wiki --skill codex-history-ingest -a claude-code
Открыть на GitHub

Что делает codex-history-ingest

Скилл читает ~/.codex/: session_index.jsonl, rollout-логи в sessions/**/rollout-*.jsonl и, если включено сохранение, history.jsonl. Из событий он вытаскивает намерения пользователя и видимые ответы ассистента, а телеметрию, подсчёт токенов и сырой вывод команд отбрасывает. Дальше материал группируется по темам, а не по сессиям: одна страница вики может собраться из десятка разговоров за разные месяцы.

Перед первым запуском нужен путь к хранилищу Obsidian и путь к истории Codex. Скилл разрешает конфиг по протоколу из llm-wiki/SKILL.md: сначала инлайн-переопределение @name, потом поиск .env вверх по дереву каталогов, затем глобальный конфиг. Если ничего не нашлось, он спросит настройки. По умолчанию CODEX_HISTORY_PATH указывает на ~/.codex.

Режим append смотрит в .manifest.json и берёт только новые файлы или те, что изменились после ingested_at. Полный режим перебирает всё заново, его имеет смысл включать после wiki-rebuild. В логах попадаются ключи API и чужие промпты, поэтому скилл их вычищает и пересказывает транскрипты вместо дословного цитирования.

Какие задачи решает

  • вытащить повторяющиеся решения из старых сессий Codex
  • разложить разговоры по темам, а не по датам
  • дописать в вики только то, что появилось с прошлого прогона
  • убрать из транскриптов ключи и токены перед публикацией
  • связать сессии из разных проектов через cwd

Примеры запросов агенту

  • прогони codex-history-ingest по моим сессиям Claude и обнови вики
  • сделай полный переингест истории Claude после wiki-rebuild
  • покажи, какие rollout-файлы новые с прошлого запуска

Как установить codex-history-ingest

1Через Skills CLI (Vercel)

npx skills add Ar9av/obsidian-wiki --skill codex-history-ingest -a claude-code

2Вручную: положить файлы

~/.claude/skills/codex-history-ingest/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/codex-history-ingest/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора38

wiki-dashboard Скилл собирает живые таблицы и карточки по заметкам Obsidian: фильтры по папкам и тегам, группировка, вычисляемые колонки. Пригодится, когда нужен обновляемый индекс хранилища. CX Codex +1 2 800установок wiki-research Гоняет несколько раундов поиска по теме, сводит найденное и раскладывает результат по страницам Obsidian-вики. CX Codex +1 2 800установок wiki-capture Превращает текущий диалог и результаты отладки в структурированные заметки Obsidian. Поддерживает быстрый сброс черновиков в папку _raw/ и точечные исправления. CX Codex +1 2 800установок wiki-synthesize Сканирует вики в Obsidian, ищет концепции, которые часто соседствуют на страницах, но своей страницы синтеза не имеют, и создаёт связующие страницы. CX Codex +1 2 700установок memory-bridge Скилл показывает, какой ИИ-инструмент что записал в вашу Obsidian-вики, и сравнивает наборы знаний между агентами. Полезно, когда сессии Claude, Codex и Copilot копятся в разных углах. CX Codex +1 2 400установок wiki-agent Скилл ищет решения в истории диалогов конкретного ИИ-агента, переносит найденное в базу Obsidian и формирует готовый ответ. Пригодится для точечного обмена контекстом между разными ассистентами. CX Codex +1 2 400установок hermes-history-ingest Собирает знания из памяти и истории Hermes в Obsidian. Нужен для регулярного импорта сессий и поиска устойчивых выводов. CX Codex +1 2 400установок daily-update Скилл обновляет Obsidian-вики: проверяет свежесть источников, синхронизирует индекс и hot.md, а также настраивает ежедневный запуск. CX Codex +1 2 300установок

Похожие

wiki-ingest sanyuan0704 Собирает статьи, документы и заметки в связанную базу знаний с отдельными страницами сущностей. Пригодится для пополнения проектной вики из текста, файлов или каталогов. CX Codex +1 2 700установок second-brain NicholasSpisak Разворачивает хранилище заметок в Obsidian по модели вики для ИИ. Интерактивный опросник настраивает каталоги на диске, инструкции агентам и вспомогательные утилиты. CX Codex +1 2 800установок wiki AgriciDaniel Инициализирует и подключает отдельное хранилище Obsidian, а также маршрутизирует задачи между специализированными вики-скиллами. Пригодится для ведения базы знаний прямо из агента. CX Codex +1 539установок save AgriciDaniel Сохраняет выбранный ответ, решение или итог сессии в хранилище Obsidian через проверенную транзакцию. Пригодится, когда нужно зафиксировать знание из диалога без ручного копирования. CX Codex +1 511установок obsidian-project-kb-core Galaxy-Dawn Скилл ведёт проектную исследовательскую базу в Obsidian: создаёт структуру, распределяет заметки и поддерживает индексы, реестр и проверки. CX Codex +1 323установок obsidian-source-ingestion Galaxy-Dawn Скилл складывает внешние материалы в проектную базу Obsidian как заметки-источники: статьи, веб-страницы, данные, интервью. Пригодится, когда источники надо не пересказывать, а хранить по полкам. CX Codex +1 320установок

Рядом в теме «Настройка агента: память, контекст, субагенты»

Все скиллы по теме «Настройка агента: память, контекст, субагенты» →

Вопросы о codex-history-ingest

Как установить Claude-history-ingest в Claude?

Выполните npx skills add Ar9av/obsidian-wiki --skill codex-history-ingest -a claude-code. После этого файл скилла лежит в ~/.claude/skills/codex-history-ingest/SKILL.md.

Что делает Claude-history-ingest?

Читает историю сессий Claude CLI и превращает её в страницы вики Obsidian: проекты, концепции, повторяющиеся приёмы. Хронологию он не сохраняет, только знания.

Чем он отличается от wiki-agent?

Этот скилл забирает всю историю Claude и раскладывает её по вики. wiki-agent нужен для точечного поиска по конкретной теме.

Исходный текст

SKILL.md · MIT
---
name: codex-history-ingest
description: >
  Ingest Codex CLI conversation/session history into Obsidian as distilled knowledge. Use for importing or mining ~/.codex sessions, rollout files, indexes, or transcript logs; use wiki-agent for targeted topic-only recall.
---

# Codex History Ingest — Conversation Mining

You are extracting knowledge from the user's past Codex sessions and distilling it into the Obsidian wiki. Session logs are rich but noisy: focus on durable knowledge, not operational telemetry.

This skill can be invoked directly or via the `wiki-history-ingest` router (`/wiki-history-ingest codex`).

## Before You Start

**Writing profile:** Before drafting or rewriting natural-language Markdown, read and apply the `Writing Profile Resolution` section in `llm-wiki/SKILL.md`. Framework schema, provenance, safety, and operation-specific requirements take precedence.
`WRITING.md` preferences apply only to newly drafted or rewritten natural-language Markdown; preserve source content and structured records.

1. **Resolve config** — follow the Config Resolution Protocol in `llm-wiki/SKILL.md` (inline `@name` override → walk up CWD for `.env` → global config → prompt setup). This gives `OBSIDIAN_VAULT_PATH` and `CODEX_HISTORY_PATH` (defaults to `~/.codex`)
2. Read `.manifest.json` at the vault root to check what has already been ingested
3. Read `index.md` at the vault root to understand what the wiki already contains

## Ingest Modes

### Append Mode (default)

Check `.manifest.json` for each source file. Only process:

- Files not in the manifest (new session rollouts, new index files)
- Files whose modification time is newer than `ingested_at` in the manifest

Use this mode for regular syncs.

### Full Mode

Process everything regardless of manifest. Use after `wiki-rebuild` or if the user explicitly asks for a full re-ingest.

## Codex Data Layout

Codex stores local artifacts under `~/.codex/`.

```
~/.codex/
├── sessions/                          # Session rollout logs by date
│   └── YYYY/MM/DD/
│       └── rollout-<timestamp>-<id>.jsonl
├── archived_sessions/                 # Archived rollout logs
├── session_index.jsonl                # Lightweight index of thread id/name/updated_at
├── history.jsonl                      # Local transcript history (if persistence enabled)
├── config.toml                        # User config (contains history settings)
└── state_*.sqlite / logs_*.sqlite     # Runtime DBs (usually skip)
```

### Key data sources ranked by value

1. `session_index.jsonl` — best inventory source for IDs, titles, and freshness
2. `sessions/**/rollout-*.jsonl` — rich structured transcript events
3. `history.jsonl` — useful fallback/timeline aid if enabled

Avoid ingesting SQLite internals unless the user explicitly asks.

## Step 1: Survey and Compute Delta

Scan `CODEX_HISTORY_PATH` and compare against `.manifest.json`:

- `~/.codex/session_index.jsonl`
- `~/.codex/sessions/**/rollout-*.jsonl`
- `~/.codex/archived_sessions/**` (optional; only if user asks for archived history)
- `~/.codex/history.jsonl` (optional fallback)

Classify each file:

- **New** — not in manifest
- **Modified** — in manifest but file is newer than `ingested_at`
- **Unchanged** — already ingested and unchanged

Report a concise delta summary before deep parsing.

## Step 2: Parse Session Index First

`session_index.jsonl` typically has entries like:

```json
{"id":"...","thread_name":"...","updated_at":"..."}
```

Use it to:

- Build a canonical session inventory
- Prioritize recent/high-signal sessions
- Map rollout IDs to human-readable thread names

## Step 3: Parse Rollout JSONL Safely

Each `rollout-*.jsonl` line is an event envelope with:

```json
{
  "timestamp": "...",
  "type": "session_meta|turn_context|event_msg|response_item",
  "payload": { ... }
}
```

### Extraction rules

- Prioritize user intent and assistant-visible outputs
- Favor `response_item` records with user/assistant message content
- Use `event_msg` selectively for meaningful milestones; ignore pure telemetry
- Treat `session_meta` as metadata (cwd, model, ids), not user knowledge

### Skip/noise filters

- Token accounting events
- Tool plumbing with no semantic content
- Raw command output unless it contains reusable decisions/patterns
- Repeated plan snapshots unless they add novel decisions

### Critical privacy filter

Rollout logs can include injected instructions, tool payloads, and sensitive text. Do not ingest verbatim system/developer prompts or secrets.

- Remove API keys, tokens, passwords, credentials
- Redact private identifiers unless relevant and approved
- Summarize instead of quoting raw transcripts

## Step 4: Cluster by Topic

Do not create one wiki page per session.

- Group by stable topics across many sessions
- Split mixed sessions into separate themes
- Merge recurring concepts across dates/projects
- Use `cwd` from metadata to infer project scope

## Step 5: Distill into Wiki Pages

Route extracted knowledge using existing wiki conventions:

- Project-specific architecture/process -> `projects/<name>/...`
- General concepts -> `concepts/`
- Recurring techniques/debug playbooks -> `skills/`
- Tools/services -> `entities/`
- Cross-session patterns -> `synthesis/`

For each impacted project, create/update `projects/<name>/<name>.md` (project name as filename, never `_project.md`).

### Writing rules

- Distill knowledge, not chronology
- Avoid "on date X we discussed..." unless date context is essential
- Add `summary:` frontmatter on each new/updated page (1-2 sentences, <= 200 chars)
- Add confidence and lifecycle fields to every new page:
  ```yaml
  base_confidence: 0.42
  lifecycle: draft
  lifecycle_changed: <obsidian-wiki memory now --date>
  ```
  Leave `lifecycle` unchanged on update.
- Add provenance markers:
  - `^[extracted]` when directly grounded in explicit session content
  - `^[inferred]` when synthesizing patterns across events/sessions
  - `^[ambiguous]` when sessions conflict
- Add/update `provenance:` frontmatter mix for each changed page

## Step 6: Update Manifest, Log, and Index

### Update `.manifest.json`

For each processed source file:

- `ingested_at`, `size_bytes`, `modified_at`
- `source_type`: `codex_rollout` | `codex_index` | `codex_history`
- `project`: inferred project name (when applicable)
- `pages_created`, `pages_updated`

Add/update a top-level project/session summary block:

```json
{
  "project-name": {
    "source_path": "~/.codex/sessions/...",
    "last_ingested": "TIMESTAMP",
    "sessions_ingested": 12,
    "sessions_total": 40,
    "index_updated_at": "TIMESTAMP"
  }
}
```

### Update special files

Update `index.md`, `log.md`, and `hot.md` with one locked call:

```bash
obsidian-wiki memory sync CODEX_HISTORY_INGEST \
  sessions=<sessions> pages_updated=<pages_updated> \
  pages_created=<pages_created> mode=<mode> \
  --takeaways "Ingested 12 Codex sessions; surfaced recurring patterns in CLI tooling and shell scripting."
```

Never hand-edit `index.md`, `log.md`, or `hot.md` — the command takes the lock that keeps a parallel writer from dropping your update. `--takeaways` is the one-line conceptual summary that used to go in Recent Activity;
omit it to leave the previous takeaways untouched.

See `.skills/llm-wiki/references/MEMORY.md` for the full procedure.

## Privacy and Compliance

- Distill and synthesize; avoid raw transcript dumps
- Default to redaction for anything that looks sensitive
- Ask the user before storing personal/sensitive details
- Keep references to other people minimal and purpose-bound

## Reference

See `references/codex-data-format.md` for field-level parsing notes and extraction guidance.

## QMD Refresh After Vault Writes

QMD is a search index, not the source of truth. If `$QMD_WIKI_COLLECTION` is empty or unset, skip this step. Run it only after this skill has written or rewritten vault markdown. If QMD refresh fails, do not roll back the vault changes; report the QMD status separately.

Use `$QMD_CLI` if set; otherwise use `qmd`.

```bash
${QMD_CLI:-qmd} update
```

If the output says vectors are needed or embeddings may be stale, run:

```bash
${QMD_CLI:-qmd} embed
```

Verify the collection with either:

```bash
${QMD_CLI:-qmd} ls "$QMD_WIKI_COLLECTION"
```

or, when a specific page path is known:

```bash
${QMD_CLI:-qmd} get "qmd://$QMD_WIKI_COLLECTION/<page>.md" -l 5
```

Record one of:
- `QMD refreshed: update + embed + verified`
- `QMD refreshed: update only + verified`
- `QMD skipped: QMD_WIKI_COLLECTION unset`
- `QMD skipped: qmd CLI unavailable`
- `QMD failed: <short error summary>`

© Ar9av · MIT · Ar9av/obsidian-wiki

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой