OpenWiki: AI-агент генерирует вики для вашего кода

Логотип OpenWiki

OpenWiki — это CLI-инструмент, который создаёт и поддерживает вики для вашей кодовой базы или личной базы знаний. Агент читает исходные материалы, синтезирует связанную Markdown-вики, которая остаётся в вашем распоряжении, и актуализирует её при каждом изменении. Инструмент создан для того, чтобы агенты могли использовать вики как память, а для людей предусмотрен интерактивный визуализатор.

OpenWiki предоставляет:

  • Документацию, написанную агентом — точную и актуальную, созданную агентом документирования Deep Agents.

  • Два режима работы: code — вики для репозитория, и personal — вики для личных знаний.

  • Тринадцать провайдеров моделей из коробки: от OpenAI и Anthropic до Bedrock, Gemini и любого OpenAI-совместимого шлюза.

  • Интеграции с агентами написания кода — Codex, Claude Code и OpenCode, использующие модель и инструменты работы с репозиторием хост-агента.

  • Обоснованные утверждения (Grounded Claims) — отслеживание ключевых фактов вплоть до версионированных источников с оповещением при изменении доказательной базы.

  • Девять встроенных коннекторов для Custom MCP, Notion, Slack, Gmail, X, Web Search, Hacker News, LangSmith и локальных git-репозиториев.

  • Интерактивный визуализатор, превращающий любую вики в живой граф с возможностью исследования.

  • Автообновление через GitHub Actions, GitLab CI или Bitbucket Pipelines.

  • Вывод в формате Open Knowledge Format (OKF v0.2) с валидированными диаграммами Mermaid.

🎉 Что нового

  • Возобновляемая архитектура задач по страницам: генерация репозитория теперь следует схеме begin → submit_plan → next_page → submit_page → … → finish с устойчивой упорядоченной очередью страниц, специализированными воркерами для каждой страницы, строгим сохранением Claims и полной инвалидацией плана при изменении исходников репозитория. Прерванные запуски можно возобновить при сохранении того же рабочего дерева; эфемерные CI-раннеры не сохраняют незакоммиченное состояние запуска после сбоя.

  • Grounded Claims: ключевые факты в вики кода теперь снабжены версионированными исходными доказательствами. Когда эти доказательства меняются или исчезают, OpenWiki точно знает, какие утверждения нужно подтвердить, переписать или удалить.

  • Интеграции OpenWiki: запускайте OpenWiki непосредственно внутри Codex, Claude Code или OpenCode, используя аутентифицированную модель агента и его нативные инструменты для работы с репозиторием, пока OpenWiki управляет жизненным циклом документации.

  • OKF v0.2: каждая вики — это портативный пакет Open Knowledge Format с детерминированной записью о происхождении и валидированными метаданными доверия и жизненного цикла.

  • Публикуемые визуализаторы: экспортируйте интерактивный граф и Markdown-ридер как развёртываемый статический сайт для GitHub Pages, MkDocs или любого статического хостинга.

Быстрый старт

Установите CLI (требуется Node.js 22 или новее):

npm install -g openwiki

Сгенерируйте вики для текущего репозитория. При первом запуске будет предложено выбрать провайдера, ключ и модель, после чего документация будет записана в openwiki/:

openwiki --init

Повторный запуск openwiki --init заменяет существующую вики репозитория и Claims новой генерацией, сохраняя при этом пользовательский файл openwiki/INSTRUCTIONS.md. При работе с постоянным рабочим деревом OpenWiki записывает состояние текущей генерации репозитория в openwiki/.run.json, поэтому повторный запуск после прерывания возобновляет устойчивую очередь страниц. Эфемерные CI-раннеры начинают с чистого листа после сбоя, если их рабочее пространство не сохранено. Сбой на этапе настройки до того, как новое состояние запуска стало устойчивым, восстанавливает предыдущую вики.

Обновите существующую вики с учётом изменений в репозитории с момента последнего успешного запуска и устаревших Claims:

openwiki --update

Поддерживайте документацию актуальной автоматически, добавив плановое задание CI, которое открывает PR с обновлением вики при каждом изменении:

Примечание

На Windows устанавливайте через менеджер пакетов Node.js (npm install -g openwiki или pnpm add -g openwiki). Установка через bun может потребовать компиляции нативной зависимости better-sqlite3, для чего нужны Visual Studio Build Tools с рабочей нагрузкой «Разработка классических приложений на C++».

Интеграции с агентами написания кода

OpenWiki может работать внутри существующего агента написания кода вместо того, чтобы запускать собственную модель. Агент исследует репозиторий, планирует вики и последовательно пишет каждую назначенную страницу, используя нативные инструменты для работы с репозиторием. OpenWiki обеспечивает устойчивый жизненный цикл задач страниц через MCP, валидирует каждое завершение и детерминированно финализирует Claims, индексы, данные о происхождении, файлы настройки и метаданные.

Установите интеграцию для своего агента написания кода (выберите один вариант):

openwiki integrations install codex
openwiki integrations install claude
openwiki integrations install opencode

Поддерживаются Codex, Claude Code и OpenCode. По умолчанию установка выполняется на уровне пользователя, поэтому одна установка работает из любого git-репозитория. Пути проектов разрешаются до корня git-репозитория. Пользовательские интеграции OpenCode располагаются в ~/.config/opencode — глобальном каталоге конфигурации OpenCode на всех поддерживаемых платформах. Перезапустите агента написания кода после установки, откройте репозиторий и напишите:

Initialize this repository's OpenWiki from the current source and tests.

Для существующей вики напишите:

Update this repository's OpenWiki for changes since its last successful run.

Запуски, управляемые хост-агентом, в настоящее время поддерживают только вики кода репозитория, но не персональные базы знаний. Они используют аутентифицированную сессию модели агента написания кода, поэтому учётные данные провайдера OpenWiki не требуются. OpenWiki отвечает за устойчивую очередь, валидацию и сохранение Claims, обработку расхождений с источником и детерминированную финализацию; агент написания кода — за исследование репозитория, планирование и фактическое написание.

Внешние интеграции с агентами написания кода в настоящее время работают только с исходным кодом и тестами репозитория. Контекст из коннекторов, включая LangSmith, пока не поддерживается.

Интеграция предоставляет те же пять операций, что и нативная генерация: openwiki_begin, openwiki_submit_plan, openwiki_next_page, openwiki_submit_page и openwiki_finish. Codex, Claude или OpenCode отправляет полный предполагаемый набор Claims вместе с каждой страницей; OpenWiki внутренне сохраняет, обновляет, создаёт или отзывает Claims и отказывается завершать работу до тех пор, пока итоговое состояние не будет устойчивым.

Используйте openwiki integrations list для просмотра статуса установки на уровне пользователя или openwiki integrations uninstall <host> для безопасного удаления интеграции. Добавьте --project [path] к командам list, install или uninstall для работы с состоянием на уровне репозитория.

Участникам, желающим добавить поддержку другого агента написания кода, следует ознакомиться с разделом Adding a coding-agent integration в CONTRIBUTING.md.

Grounded Claims

OpenWiki делает вики кода самокорректирующейся, отслеживая ключевые утверждения, лежащие в основе фактических страниц, — а не просто время последней генерации Markdown-файла. Claims охватывают факты, на которые будут опираться будущие агенты: поведение, ответственности, архитектуру, потоки данных, инварианты, семантику сбоев, конфигурацию и границы безопасности. Каждое утверждение указывает на конкретные доказательства в репозитории, например repo://src/server.ts#L40-L82, вместе с версией этих доказательств, зафиксированной OpenWiki при установлении утверждения.

Перед обновлением OpenWiki проверяет каждую сохранённую версию доказательств — ещё до того, как решить, является ли репозиторий неизменным. Устаревшее или неразрешённое Claim требует работы для своей страницы, даже если планировщик её не включает. Воркер страницы получает полный существующий набор Claims и отправляет полный предполагаемый набор замен: неизменённые Claims сохраняют свои идентификаторы и обновляют версии доказательств, изменённые Claims обновляются на месте, действительно новые Claims получают новые идентификаторы, а пропущенные Claims отзываются. Markdown остаётся чистым; структурированное состояние Claims хранится рядом с ним в openwiki/.claims/.

Завершение страницы — это граница устойчивости. OpenWiki сохраняет согласованные Claims, проецирует верификацию, синхронизирует версию страницы в сайдкаре и проверяет полный результат перед тем, как отметить задачу страницы выполненной. Финализация повторяет доказательство всего запуска перед удалением openwiki/.run.json.

Grounded Claims в настоящее время применяются только к вики кода репозитория и доказательствам из репозитория. Факты, полученные через коннекторы, включая наблюдения только из LangSmith, не являются предметом Claims.

Два режима

OpenWiki работает в одном из двух режимов. Команды openwiki, openwiki --init и openwiki --update без аргументов по умолчанию используют режим code; добавьте позиционный аргумент personal (или --mode personal) для персональной базы знаний.

Режим Документирует Записывает в Начало работы

Code (по умолчанию)

Текущий репозиторий

openwiki/ в репозитории

openwiki --init

Personal

Подключённые источники

~/.openwiki/wiki

openwiki personal --init

По умолчанию CLI остаётся открытым после запуска, чтобы вы могли отправлять дополнительные сообщения. Добавьте -p / --print для однократного неинтерактивного запуска, который выводит итоговый результат и завершает работу. --init и --update автоматически завершаются после успеха в интерактивном терминале, поэтому одна и та же команда работает как в однократном, так и в интерактивном режиме.

Локальный каталог состояния

По умолчанию OpenWiki хранит локальные учётные данные, персональную вики, данные коннекторов, историю разговоров и навыки в ~/.openwiki. Чтобы использовать другой доступный для записи каталог, например смонтированный том контейнера, задайте переменную OPENWIKI_CONFIG_DIR перед запуском OpenWiki:

OPENWIKI_CONFIG_DIR=/data/openwiki openwiki personal --init

Это переключает на отдельный каталог состояния; OpenWiki не перемещает и не удаляет существующий ~/.openwiki. Скопируйте нужное состояние самостоятельно и укажите переменную на выделенный каталог, поскольку OpenWiki ограничивает его разрешения для текущего пользователя.

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

Превратите любую вики в интерактивный граф с живым Markdown-ридером рядом:

openwiki visualize
Визуализатор OpenWiki: интерактивный граф узлов и живой Markdown-ридер

Это запускает сервер для ./openwiki на локальном адресе обратной петли (127.0.0.1, без доступа из сети) и открывает браузер с графом. Изменения файлов вики подхватываются автоматически во время работы сервера. Передайте путь для визуализации другого каталога, --port <port> для выбора порта (при конфликте автоматически увеличивается; по умолчанию 4321) и --no-open, чтобы не открывать браузер:

openwiki visualize openwiki --port 4400 --no-open

Чтобы опубликовать визуализатор вместе со сгенерированной документацией, экспортируйте статический каталог вместо запуска сервера:

openwiki visualize openwiki --export docs/openwiki-visualizer

Экспорт содержит index.html, client.js, client-lib.js, styles.css и graph.json. Клиент читает соседний файл графа и не использует живую перезагрузку, поэтому каталог можно разместить на GitHub Pages, MkDocs или любом другом статическом хостинге. --export нельзя совмещать с --port или --no-open.

Примечание

Страница загружает граф, Markdown и библиотеки диаграмм из публичного CDN, поэтому для работы как локального, так и статического просмотрщика требуется интернет-соединение.

Подключение источников

В режиме personal OpenWiki поглощает знания из уже используемых вами инструментов и синтезирует их в локальную вики. При первоначальной настройке предлагается конфигурация для Custom MCP, локальных git-репозиториев, Notion, Gmail, X/Twitter, Web Search и Hacker News. Slack также доступен при настроенном OAuth-приложении и HTTPS-обратном вызове.

Во время запуска поглощения детерминированные инструменты коннектора записывают необработанные данные и манифесты в ~/.openwiki/connectors/<connector>/raw/, затем специализированные агентные запуски синтезируют вики в ~/.openwiki/wiki/. Один и тот же коннектор можно настроить несколько раз (например, один источник Web Search для исследования ИИ и другой для новостей NBA); OpenWiki хранит их как отдельные экземпляры, например web-search-1 и web-search-2.

openwiki auth notion        # запустить локальный OAuth-поток в браузере для провайдера
openwiki ingest all         # запустить все настроенные источники
openwiki ingest web-search  # запустить источники одного коннектора

Коннектор LangSmith (режим code)

Перечисленные выше коннекторы питают персональную вики. Коннектор LangSmith вместо этого обогащает вики кода: он извлекает последние трассировки LangSmith (вызовы инструментов, результаты и задержку) для выбранных вами проектов через официальный LangSmith SDK, так что документация репозитория отражает реальное поведение кода во время выполнения, а не только то, что написано в исходниках.

Настройте его во время openwiki --init в режиме code. В меню источников добавьте LangSmith, выберите регион рабочего пространства (US, EU или APAC) и перечислите проекты для документирования. OpenWiki записывает закоммиченный файл openwiki/.langsmith.json, в котором указаны рабочие пространства и проекты (но никогда не сам ключ), поэтому каждый участник команды и CI-запуск документируют один и тот же набор. API-ключ читается из переменной окружения:

OPENWIKI_LANGSMITH_API_KEY="<your-langsmith-key>"

Локально мастер настройки сохраняет это в ~/.openwiki/.env. В CI задайте его как секрет репозитория и экспортируйте для запуска.

Примечание

Ключ LangSmith привязан к рабочему пространству и региону. Чтобы документировать проекты из нескольких рабочих пространств, добавьте по одной записи на рабочее пространство, каждая со своим ключом с именами OPENWIKI_LANGSMITH_API_KEY_2, OPENWIKI_LANGSMITH_API_KEY_3 и т.д. Коннектор работает только с официальными хостами: US (api.smith.langchain.com), EU (eu.api.smith.langchain.com) и APAC (apac.api.smith.langchain.com).

Вики остаётся вашей

Ваша вики хранится в репозитории в виде обычного Markdown, которым вы владеете, а управляемые OpenWiki привязки и метаданные запуска версионируются вместе с ней.

  • Агенты читают её как память. При каждом запуске в режиме code OpenWiki поддерживает файлы AGENTS.md и CLAUDE.md в корне репозитория, указывающие вашему агенту написания кода на вики. Он перезаписывает только свой блок <!-- OPENWIKI:START -→…<!-- OPENWIKI:END -→ и не трогает остальное содержимое каждого файла.

  • Привязки хранятся вместе с вики. Версионированные сайдкары утверждений в openwiki/.claims/ перемещаются вместе с Markdown, поэтому доказательная база для поддержания фактических страниц доступна для проверки и ревью.

  • Вы задаёте направление. Инструкции для конкретного репозитория хранятся в openwiki/INSTRUCTIONS.md — файле, который пишет пользователь; OpenWiki читает его для определения области охвата и приоритетов, но никогда не перезаписывает при обычных запусках.

  • Холостые запуски не меняют документацию. При чистом обновлении модель не задействуется, содержимое вики остаётся нетронутым, а .last-update.json обновляется, фиксируя, что проверка была выполнена.

  • Локальная приватная конфигурация. Выбор провайдера, ключи и опциональная трассировка LangSmith сохраняются в ~/.openwiki/.env на вашей машине.

Open Knowledge Format (OKF v0.2)

OpenWiki формирует пакеты Google Open Knowledge Format (OKF) v0.2 в обоих режимах, поэтому ваша вики переносима в любой OKF-совместимый инструмент.

  • Каждый концептуальный документ содержит YAML-метаданные с непустым полем type; все остальные стандартные поля опциональны.

  • Новые и только что инициализированные страницы получают generated: {by, at}. При обновлениях любое изменение тела, включая пробелы, продвигает метку; неизменённое тело сохраняет предыдущее событие, а изменения только в метаданных его не продвигают. Производитель помечается как openwiki/<version> (или хост агента написания кода), делая происхождение явным. Устаревшее поле timestamp из v0.1 по-прежнему допускается на существующих страницах.

  • Страницы репозитория проецируют доказательства своих Grounded Claims в sources; OpenWiki согласовывает детерминированно идентифицированные записи, сохраняя независимо написанные источники.

  • Страницы репозитория получают verified: {by: openwiki/<version>, at: …​} только после того, как успешная отправка страницы согласует непустой полный набор Claims, пройдёт финальную проверку доказательств и сохранит сайдкар Claims. Одна лишь чистая предварительная проверка никогда не создаёт и не продвигает верификацию; события от людей и других процессов сохраняются.

  • Опциональные семейства v0.2 о происхождении, доверии и жизненном цикле (sources, verified, status, stale_after) проверяются при наличии.

  • Стандартные Markdown-ссылки между концептуальными документами выражают их отношения.

  • index.md и log.md — зарезервированные документы, а не концепции. Корневой индекс объявляет okf_version: "0.2".

  • Поля расширения, определённые производителем, сохраняются при обновлениях и миграциях.

Диаграммы

OpenWiki встраивает диаграммы Mermaid везде, где они лучше прозы объясняют концепцию: диаграммы последовательностей для потоков выполнения, ER-диаграммы для моделей данных, диаграммы состояний для жизненных циклов и блок-схемы для потоков управления. Диаграммы основаны на проверенных исходниках, добавляются там, где несут смысловую нагрузку, и синхронизируются при --update. Никакой настройки не требуется.

После каждого запуска OpenWiki проверяет каждый блок mermaid. Диаграмма, не прошедшая проверку, преобразуется на месте в обычный блок text с кратким комментарием, объясняющим причину, — то есть деградирует до читаемого текста вместо сломанного блока. При следующем --update этот комментарий будет обнаружен и диаграмма исправлена, так что качество восстанавливается со временем.

Совет

По умолчанию OpenWiki запускает лёгкую проверку без зависимостей, которая обнаруживает распространённые ошибки. Для авторитетной валидации, точно соответствующей тому, что рендерит GitHub, установите парсер Mermaid там, где запускается OpenWiki (например, в плановом рабочем процессе) — и ни одна сломанная диаграмма не попадёт в релиз:

npm install mermaid jsdom

Провайдеры моделей

По умолчанию при первоначальной настройке используется OpenAI с gpt-5.6-terra. Каждый провайдер включает предустановленные варианты моделей и поддержку пользовательских идентификаторов моделей; учётные данные сохраняются в ~/.openwiki/.env.

Провайдер Учётные данные

OpenAI (по умолчанию)

OPENAI_API_KEY

OpenAI (вход через ChatGPT)

Вход через браузер, использует ваш план ChatGPT

Anthropic

ANTHROPIC_API_KEY

Gemini (AI Studio)

GEMINI_API_KEY

Gemini Enterprise (Vertex AI)

Google ADC, без ключа

AWS Bedrock

Учётные данные IAM

GitHub Copilot

Сессия GitHub CLI

OpenRouter

OPENROUTER_API_KEY

Nebius / Fireworks / Baseten / NVIDIA NIM

API-ключ провайдера

OpenAI-совместимые (LiteLLM, Ollama, LM Studio, шлюзы)

Base URL + ключ

GitHub Copilot

Провайдер GitHub Copilot направляет инференс через OpenAI-совместимый Copilot API (https://api.githubcopilot.com), так что команды могут повторно использовать существующую подписку Copilot вместо того, чтобы получать отдельный ключ для инференса.

  1. Выберите GitHub Copilot во время openwiki --init. Если у вас есть активная сессия GitHub CLI, OpenWiki обнаружит её и предложит использовать повторно. В противном случае нажмите kbd:[Tab] в приглашении ввода учётных данных, чтобы запустить gh auth login и войти.

  2. Выберите модель (например gpt-5.5).

OpenWiki оставляет токен в собственном хранилище учётных данных GitHub CLI. Для CI или другой безголовой среды задайте COPILOT_API_KEY со значением GitHub OAuth token. Personal Access Token отклоняются Copilot API для сторонних интеграций. Локальная конфигурация может не содержать токен:

OPENWIKI_PROVIDER="copilot"
OPENWIKI_MODEL_ID="gpt-5.5"

В CI задайте секрет репозитория COPILOT_API_KEY и экспортируйте OPENWIKI_PROVIDER=copilot.

AWS Bedrock

Провайдер bedrock вызывает базовые модели на AWS Bedrock с использованием учётных данных IAM, а не единого вендорного ключа:

OPENWIKI_PROVIDER=bedrock
BEDROCK_AWS_ACCESS_KEY_ID=your-access-key-id
BEDROCK_AWS_SECRET_ACCESS_KEY=your-secret-access-key
BEDROCK_AWS_REGION=us-east-1
OPENWIKI_MODEL_ID=anthropic.claude-sonnet-5

Если явные учётные данные Bedrock не заданы, OpenWiki использует стандартную цепочку провайдеров учётных данных AWS SDK (OIDC/web identity, IAM-роли, профили AWS, ECS/EC2). Регион определяется из BEDROCK_AWS_REGION, AWS_REGION или AWS_DEFAULT_REGION. Доступные идентификаторы моделей зависят от того, какие базовые модели включены в вашем аккаунте и регионе, поэтому готового списка нет — вставьте идентификатор модели Bedrock напрямую.

Некоторые новые модели принимают вызовы по требованию только через профиль кросс-регионального инференса. Если вы видите ValidationException: Invocation of model ID …​ with on-demand throughput isn’t supported, добавьте к идентификатору модели код региона профиля, например us.anthropic.claude-sonnet-5. В этом случае ваша IAM-политика также должна включать bedrock:InvokeModel / InvokeModelWithResponseStream для типов ресурсов foundation-model и inference-profile.

Gemini (AI Studio) и Gemini Enterprise (Vertex AI)

Gemini (AI Studio) запускает модели Google Gemini с единым API-ключом:

OPENWIKI_PROVIDER=gemini
GEMINI_API_KEY=your-ai-studio-key

Gemini Enterprise запускает модели из Model Garden Gemini Enterprise (ранее Vertex AI): Gemini/Gemma от Google, Claude от Anthropic и партнёрские/open-weight модели (Llama, Mistral, DeepSeek, Qwen). Он автоматически направляет каждый идентификатор модели на нужный API и не требует API-ключа. Аутентификация выполняется с помощью Google Application Default Credentials (ADC):

  • через файл ключа сервисного аккаунта с помощью GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json,

  • через пользовательские учётные данные из gcloud auth application-default login, или

  • через workload identity при работе в Google Cloud или CI.

OPENWIKI_PROVIDER=gemini-enterprise
GOOGLE_CLOUD_PROJECT=your-gcp-project
GOOGLE_CLOUD_LOCATION=global   # опционально, по умолчанию global

Задайте OPENWIKI_MODEL_ID для любой модели Model Garden. Gemini и Claude поставляются как предустановки; партнёрские модели доступны через вставку их идентификатора (например publishers/meta/models/llama-3.3-70b-instruct-maas). Учётным данным нужен доступ к Vertex AI (roles/aiplatform.user), а модели должны быть включены в Model Garden. Конечная точка global обслуживает Gemini и Claude с наилучшей доступностью; задайте GOOGLE_CLOUD_LOCATION с региональной конечной точкой для размещения данных в регионе, и всегда указывайте его явно для региональных партнёрских (MaaS) моделей.

Для CI аутентифицируйтесь перед запуском задания обновления (например с помощью google-github-actions/auth) и задайте OPENWIKI_PROVIDER=gemini-enterprise и GOOGLE_CLOUD_PROJECT в среде задания.

OpenAI (вход через ChatGPT)

Провайдер openai-chatgpt вызывает бэкенд Codex от OpenAI с использованием вашей подписки ChatGPT вместо тарифицируемого API-ключа, расходуя включённое использование Codex по вашему плану Plus/Pro/Team. Предоставляет тот же список моделей, что и провайдер openai.

OPENWIKI_PROVIDER=openai-chatgpt openwiki code --init
# или
OPENWIKI_PROVIDER=openai-chatgpt openwiki personal --init

Мастер открывает https://auth.openai.com в браузере (и выводит URL для безголового использования или SSH). После входа OpenWiki перехватывает OAuth-обратный вызов, показывает вошедший адрес электронной почты и план, затем переходит к выбору модели. Он сохраняет токен доступа, токен обновления, срок действия, идентификатор аккаунта, адрес электронной почты и план в ~/.openwiki/.env. Всё это управляется автоматически, а токен доступа обновляется самостоятельно, поэтому вам обычно не нужно редактировать их вручную. Обращайтесь с токеном обновления как с паролем.

OpenAI-совместимые конечные точки (LiteLLM, Ollama, LM Studio, шлюзы)

Провайдер openai-compatible работает с любой OpenAI-совместимой конечной точкой chat-completions через обязательный base URL. Задайте идентификатор модели в соответствии с тем, что предоставляет конечная точка.

# Размещённый шлюз (например Requesty, объединяющий множество провайдеров)
OPENWIKI_PROVIDER=openai-compatible
OPENAI_COMPATIBLE_API_KEY=your-gateway-key
OPENAI_COMPATIBLE_BASE_URL=https://router.requesty.ai/v1
OPENWIKI_MODEL_ID=openai/gpt-5.5
# Ollama после `ollama serve` и `ollama pull llama3.2`
OPENWIKI_PROVIDER=openai-compatible
OPENAI_COMPATIBLE_API_KEY=ollama
OPENAI_COMPATIBLE_BASE_URL=http://localhost:11434/v1
OPENWIKI_MODEL_ID=llama3.2
# LM Studio после запуска локального сервера на вкладке Developer
OPENWIKI_PROVIDER=openai-compatible
OPENAI_COMPATIBLE_API_KEY=lm-studio
OPENAI_COMPATIBLE_BASE_URL=http://localhost:1234/v1
OPENWIKI_MODEL_ID=your-loaded-model-id

Некоторые локальные серверы игнорируют значение API-ключа, но OpenWiki всё равно требует OPENAI_COMPATIBLE_API_KEY, поскольку клиент его ожидает.

Шлюзы только со стриминговым транспортом. Некоторые шлюзы обслуживают только потоковый транспорт: нестриминговый запрос либо отклоняется явно (Stream must be set to true), либо получает ответ HTTP 200 с пустым содержимым, что приводит к пустой вики без сообщения об ошибке. OpenWiki внутренне выполняет нестриминговые запросы, поэтому для таких конечных точек принудительно включите потоковый транспорт:

OPENWIKI_OPENAI_COMPATIBLE_STREAMING=true

По умолчанию это отключено, так как провайдер указывает на произвольные сторонние конечные точки, где SSE не гарантированно работает через прокси и балансировщики нагрузки. Включение также приводит к тому, что клиент сообщает расчётное, а не серверное количество токенов.

Альтернативные base URL, закрепление провайдеров OpenRouter и повторные попытки

Альтернативные base URL. Направьте провайдера на собственный или проксированный шлюз, задав его base URL рядом с ключом: ANTHROPIC_BASE_URL, OPENAI_BASE_URL, BASETEN_BASE_URL, FIREWORKS_BASE_URL, NVIDIA_BASE_URL или COPILOT_BASE_URL. Провайдер openai направляет вызовы инструментов через Responses API (/v1/responses), что полезно для шлюзов, предоставляющих его.

OPENWIKI_PROVIDER=anthropic
ANTHROPIC_API_KEY=your-key
ANTHROPIC_BASE_URL=https://your-gateway.example.com/anthropic

Закрепление провайдера OpenRouter. Когда OpenRouter обслуживает модель через несколько источников, ограничьте маршрутизацию с помощью одного провайдера или списка через запятую:

OPENWIKI_PROVIDER=openrouter
OPENROUTER_API_KEY=your-key
OPENWIKI_OPENROUTER_PROVIDER_ONLY=Novita

Лимит выходных токенов. OpenWiki использует ограничение по умолчанию в 16 384 токена на запрос для современных моделей Claude 4/5, так как иначе устаревшие метаданные модели LangChain ограничивают новые псевдонимы Claude до 4 096 токенов. Задайте нейтральный для провайдера лимит для текущей выбранной модели:

OPENWIKI_MAX_OUTPUT_TOKENS=16384

OpenWiki сопоставляет эту настройку с форматом запроса выбранного провайдера. Пользовательские модели иначе сохраняют свои провайдерные или SDK-умолчания, так как их поддерживаемые окна вывода неизвестны OpenWiki.

Ограничение выходных токенов OpenRouter. По умолчанию max_tokens не отправляется, поэтому предварительная проверка кредита OpenRouter бюджетирует по полному объявленному потолку вывода модели — при низком балансе кредита каждый запрос может завершаться ошибкой 402. Существующие установки могут сохранять специфичное для OpenRouter ограничение:

OPENWIKI_OPENROUTER_MAX_TOKENS=8192

Настройка, специфичная для OpenRouter, имеет приоритет над OPENWIKI_MAX_OUTPUT_TOKENS при запусках через OpenRouter. Ограничение заменяет жёсткие ошибки 402 на возможное усечение, когда генерация длинной вики действительно требует большего числа выходных токенов, — поэтому предпочитайте наибольшее значение, которое позволяет ваш баланс.

Количество повторных попыток. OpenWiki использует обработку повторных попыток LangChain для транзиентных ошибок провайдера. Переопределите количество попыток (по умолчанию 3) с помощью OPENWIKI_PROVIDER_RETRY_ATTEMPTS=3 (положительное целое число).

Таймаут простоя стрима Bedrock. Для провайдера Bedrock задайте OPENWIKI_STREAM_IDLE_TIMEOUT, чтобы контролировать, как долго клиент ждёт первого или следующего чанка потокового ответа, например OPENWIKI_STREAM_IDLE_TIMEOUT=300000. Значение в миллисекундах, целое число от 0 до 2147483647. Задайте 0, чтобы отключить watchdog. Если не задано, OpenWiki сохраняет значение по умолчанию провайдера @langchain/aws. Предпочитайте достаточно долгий конечный таймаут отключению watchdog, чтобы зависший поток не мог зависнуть навсегда.

Уровень рассуждений. Задайте OPENWIKI_REASONING_EFFORT для настройки рассуждений поддерживаемого провайдера и модели. Модели OpenAI GPT-5.6 используют значения Responses API: none, low, medium, high, xhigh и max. Nemotron 3 Super от NVIDIA NIM поддерживает none, low и high. В интерактивном чате используйте /effort для выбора доступного значения или /effort default для восстановления значения провайдера по умолчанию. Оставьте переменную незаданной, чтобы сохранить провайдерные умолчания; неверные комбинации провайдера, модели или уровня рассуждений приводят к ошибке до отправки запроса.

Примечание

Если вы хотите добавить поддержку провайдера инференса или модели, пожалуйста, откройте PR.

Игнорирование путей

Создайте файл .openwikiignore в корне репозитория, чтобы сгенерированная документация не читала и не описывала приватные, сгенерированные или нерелевантные пути. Синтаксис поддерживает комментарии, пустые строки, глобы и *, правила для каталогов и отрицание через !:

secrets/
*.log
!logs/keep.log

Когда в .openwikiignore есть активные правила, OpenWiki фильтрует обнаружение файловой системы и ограничивает выполнение команд оболочки, чтобы игнорируемые пути не попадали в запуск. Это граница чтения: игнорируемые пути никогда не читаются, не сканируются и не воспроизводятся в документации. Это не гарантирует, что тема никогда не будет упомянута, так как агент может сделать выводы об игнорируемой области из других доступных источников, таких как тесты, README или сообщения коммитов.

Справочник команд

openwiki                         # интерактивный чат, режим code, текущий репозиторий
openwiki personal                # интерактивный чат, персональная база знаний
openwiki "generate docs"         # начать с начального запроса
openwiki -p "what can you do?"   # однократный запуск, вывод и выход
openwiki --init                  # инициализировать документацию кода (personal: openwiki personal --init)
openwiki --update                # обновить документацию кода (personal: openwiki personal --update)
openwiki visualize               # интерактивный граф + живой ридер
openwiki visualize openwiki --export docs/openwiki-visualizer  # статический граф + ридер
openwiki auth <provider>         # аутентифицировать коннектор (slack, gmail, x, notion)
openwiki ingest <source>         # запустить поглощение коннектора (all или конкретный коннектор/экземпляр)
openwiki integrations list       # показать установленные интеграции с агентами написания кода
openwiki integrations install <codex|claude|opencode> [--project [path]]
openwiki integrations uninstall <codex|claude|opencode> [--project [path]]
openwiki --help                  # полная справка

В чате /api-key обновляет ключ текущего провайдера, а /langsmith-key обновляет или сбрасывает учётные данные трассировки LangSmith — оба с маскированными приглашениями ввода.

Телеметрия

OpenWiki собирает анонимные агрегированные данные об использовании, чтобы понять, как используется инструмент, и улучшить его. Телеметрия включена по умолчанию и легко отключается.

Собирается в рамках одного события openwiki_run, привязанного к случайному идентификатору установки в ~/.openwiki/install-id: команда (init / update), результат (success / failure / no-op) с обобщённой категорией ошибки при сбое (но никогда не само сообщение), а при настройке — режим работы, провайдер модели и настроенные имена коннекторов.

Никогда не собирается: содержимое файлов, данные или имена репозиториев, учётные данные, промпты, вывод модели, данные коннекторов, сообщения об ошибках, пути к файлам, URL, идентификаторы моделей, длительность запуска или ваш IP-адрес. Интерактивный чат, auth и ingest не записываются. Плановые/CI-запуски помечаются как анонимные данные надёжности под общим идентификатором CI и никогда не считаются установками.

Отключите телеметрию с помощью любой из переменных окружения, или добавьте первую строку в ~/.openwiki/.env для постоянного отключения:

export OPENWIKI_TELEMETRY_DISABLED=1
export DO_NOT_TRACK=1   # кросс-инструментальный стандарт

Чтобы увидеть точно, что будет отправлено при запуске, добавьте --telemetry-file=<path> к любой команде.

Участие в разработке

Мы рады участию сообщества. Пожалуйста, прочитайте CONTRIBUTING.md перед открытием PR. Мы намеренно ограничиваем PR одним изменением каждый, и PR, объединяющие несвязанные изменения, могут быть закрыты с просьбой разделить их.

Лицензия

MIT

© 2026 meganuke