Autohand Справочник по конфигурации

June 23, 2026 · View on GitHub

Полный справочник по всем параметрам конфигурации в ~/.autohand/config.json (или .toml/.yaml/.yml).

Совет. Большинство приведенных ниже настроек можно изменить в интерактивном режиме с помощью команды /settings вместо редактирования файла вручную.

Локализованные ссылки:

Содержание


Расположение файла конфигурации

Autohand ищет конфигурацию в следующем порядке:

  1. Переменная среды AUTOHAND_CONFIG (пользовательский путь)
  2. ~/.autohand/config.toml
  3. ~/.autohand/config.yaml
  4. ~/.autohand/config.yml
  5. ~/.autohand/config.json (по умолчанию)

Вы также можете переопределить базовый каталог:

export AUTOHAND_HOME=/custom/path  # Changes ~/.autohand to /custom/path

Переменные среды

ПеременнаяОписаниеПример
AUTOHAND_HOMEБазовый каталог для всех данных Autohand/custom/path
AUTOHAND_CONFIGПользовательский путь к файлу конфигурации/path/to/config.toml
AUTOHAND_API_URLКонечная точка API (переопределяет конфигурацию)https://api.autohand.ai
AUTOHAND_SECRETСекретный ключ компании/командыsk-xxx
AUTOHAND_PERMISSION_CALLBACK_URLURL-адрес для обратного вызова разрешения (экспериментальный)http://localhost:3000/callback
AUTOHAND_PERMISSION_CALLBACK_TIMEOUTТаймаут для обратного вызова разрешения в мс5000
AUTOHAND_NON_INTERACTIVEЗапуск в неинтерактивном режиме1
AUTOHAND_YESАвтоподтверждение всех запросов1
AUTOHAND_NO_BANNERОтключить баннер при запуске1
AUTOHAND_STREAM_TOOL_OUTPUTПотоковая передача результатов инструмента в режиме реального времени1
AUTOHAND_DEBUGВключить ведение журнала отладки1
AUTOHAND_THINKING_LEVELУстановить уровень глубины рассужденийnormal
AUTOHAND_CLIENT_NAMEИдентификатор клиента/редактора (устанавливается расширениями ACP)zed
AUTOHAND_CLIENT_VERSIONВерсия клиента (устанавливается расширениями ACP)0.169.0
AUTOHAND_CODEФлаг обнаружения окружающей среды (устанавливается автоматически)1
AUTOHAND_CODE_SIMPLEВключить простой режим без передачи --bare1

Уровень мышления

Переменная среды AUTOHAND_THINKING_LEVEL контролирует глубину рассуждений, используемых моделью:

ЗначениеОписание
noneПрямые ответы без видимых аргументов
normalСтандартная глубина рассуждений (по умолчанию)
extendedГлубокое обоснование сложных задач, более подробный мыслительный процесс

Обычно это задается клиентскими расширениями ACP (например, Zed) через раскрывающийся список конфигурации.

# Example: Use extended thinking for complex tasks
AUTOHAND_THINKING_LEVEL=extended autohand --prompt "refactor this module"

Голый режим

Простой режим запускает Autohand только с явно запрошенной интеграцией контекста и среды выполнения. Включите его одним из следующих способов:

autohand --bare
AUTOHAND_CODE_SIMPLE=1 autohand

Когда передается --bare, Autohand также устанавливает AUTOHAND_CODE_SIMPLE=1 для запущенного процесса.

Режим Bare отключает автоматический запуск и интерактивную интеграцию:

  • крючки и уведомления о крючках
  • запуск ЛСП
  • синхронизация плагинов, автоматическая загрузка плагинов и автозагрузка мета-инструментов.
  • атрибуция, телеметрия, синхронизация сеансов, автоматические отчеты и фоновые пинги
  • автоматический контекст начальной загрузки памяти/сессии
  • предложения фоновых подсказок, проверки обновлений, выборка флагов функций и предварительная выборка метаданных модели.
  • резервная аутентификация OAuth для ключей и браузера
  • автоматическое обнаружение AGENTS.md и инструкций поставщика
  • все команды с косой чертой, включая пустой /, введенный в командную строку

Абсолютные пути к файлам в форме косой черты, например /Users/alex/project/file.ts, по-прежнему рассматриваются как обычный текст подсказки. Ввод косой черты в форме команды, например /help, /model или /mcp, печатает Slash commands are disabled in bare mode. и не выполняется.

Аутентификация в простом режиме является только явной. Autohand сначала считывает AUTOHAND_API_KEY, затем auth.apiKeyHelper, если настроено. Он не считывает учетные данные связки ключей и не запускает вход в OAuth/браузер. Сторонние поставщики продолжают использовать ключи API и конфигурацию своего поставщика.

Эти явные входные данные остаются доступными в простом режиме:

ВводОписание
--system-prompt <value>Замените системное приглашение встроенным текстом или значением в виде пути
--system-prompt-file <path>Заменить системное приглашение содержимым файла
--append-system-prompt <value>Добавить встроенный текст или значение, подобное пути, в системную подсказку
--append-system-prompt-file <path>Добавить содержимое файла в системное приглашение
--add-dir <path...>Добавить явные каталоги в область рабочей области
--mcp-config <path>Загрузить явный файл конфигурации MCP
--settingsОткрыть настройки прямо из флага CLI
--config <path>Используйте явный файл конфигурации Autohand
--agents <json|path>Загрузить явные встроенные агенты в формате JSON или каталог явных агентов
--plugin-dir <path>Загрузить явный каталог плагинов/мета-инструментов

Настройки провайдера

provider

Активный поставщик LLM для использования.

ЗначениеОписание
"openrouter"API OpenRouter (по умолчанию)
"ollama"Локальный экземпляр Ollama
"llamacpp"Локальный сервер llama.cpp
"openai"OpenAI API напрямую
"mlx"MLX на Apple Silicon (локально)
"llmgateway"Единый API LLM Gateway
"deepseek"API DeepSeek
"zai"Z.ai GLM API
"sakana"Sakana.AI Фугу API
"bedrock"Основа AWS
"custom:<id>"Пользовательский поставщик, совместимый с OpenAI, из customProviders

openrouter

Конфигурация провайдера OpenRouter.

{
  "openrouter": {
    "apiKey": "sk-or-v1-xxx",
    "baseUrl": "https://openrouter.ai/api/v1",
    "model": "your-modelcard-id-here",
    "contextWindow": 262144
  }
}
ПолеТипТребуетсяПо умолчаниюОписание
apiKeyстрокаДа-Ваш ключ API OpenRouter
baseUrlстрокаНетhttps://openrouter.ai/api/v1Конечная точка API
modelстрокаДа-Идентификатор модели (например, your-modelcard-id-here)
contextWindowномерНетАвтоОкно контекста точной модели. Autohand заполняет это значение из OpenRouter, если оно известно.

zai

Конфигурация провайдера Z.ai.

{
  "zai": {
    "apiKey": "your-zai-api-key",
    "baseUrl": "https://api.z.ai/api/paas/v4",
    "model": "glm-5.2",
    "contextWindow": 1000000
  }
}
ПолеТипТребуетсяПо умолчаниюОписание
apiKeyстрокаДа-Ваш API-ключ Z.ai
baseUrlстрокаНетhttps://api.z.ai/api/paas/v4Конечная точка API
modelстрокаДаglm-5.2Идентификатор модели, например glm-5.2, glm-5.1 или glm-4.5
contextWindowномерНетАвтоОкно контекста точной модели. Autohand предполагает 1 миллион для GLM-5.2 и 200 тысяч для GLM-5.1.

sakana

Конфигурация провайдера Sakana.AI. API совместим с OpenAI и использует https://api.sakana.ai/v1 в качестве базового URL-адреса.

{
  "sakana": {
    "apiKey": "your-sakana-api-key",
    "baseUrl": "https://api.sakana.ai/v1",
    "model": "fugu",
    "contextWindow": 1000000
  }
}
ПолеТипТребуетсяПо умолчаниюОписание
apiKeyстрокаДа-Ваш ключ API Sakana
baseUrlстрокаНетhttps://api.sakana.ai/v1Конечная точка API
modelстрокаДаfuguИдентификатор модели, например fugu или fugu-ultra
contextWindowномерНетАвтоОкно контекста точной модели. Autohand предполагает 1 миллион для моделей Fugu.

customProviders

Пользовательские поставщики позволяют пользователям использовать конечную точку, совместимую с OpenAI, без изменения кода или нового связанного поставщика. Добавьте поставщика в customProviders, затем выберите его с помощью provider: "custom:<id>". Тот же поток доступен из /model с Новым поставщиком.... Во время установки Autohand проверяет базовый URL-адрес, аутентификацию и выбранную модель через OpenAI-совместимую конечную точку /models перед сохранением поставщика.

{
  "provider": "custom:acme",
  "customProviders": {
    "acme": {
      "id": "acme",
      "displayName": "Acme AI",
      "apiFormat": "openai-compatible",
      "baseUrl": "https://api.acme.example/v1",
      "apiKey": "acme-api-key",
      "apiKeyRequired": true,
      "model": "acme-code-1",
      "contextWindow": 256000,
      "reasoningEffort": "high",
      "models": [
        {
          "id": "acme-code-1",
          "label": "Acme Code 1",
          "contextWindow": 256000,
          "reasoningEffort": "high"
        }
      ]
    }
  }
}

Для локальных серверов, совместимых с OpenAI, которые не требуют аутентификации, установите для apiKeyRequired значение false и опустите apiKey.

ПолеТипТребуетсяПо умолчаниюОписание
idстрокаДа-Стабильный идентификатор провайдера. Он должен соответствовать ключу объекта и выбирается как custom:<id>.
displayNameстрокаДа-Имя отображается в /model и настройках провайдера.
apiFormatстрокаДа-Должно быть openai-compatible.
baseUrlстрокаДа-Корень конечной точки, например https://api.example.com/v1. Autohand проверяет /models и вызывает /chat/completions.
apiKeyстрокаУсловное-Токен носителя для размещенных конечных точек. Требуется, если apiKeyRequired истинно.
apiKeyRequiredлогическоеНетtrueУстановите false для локальных или уже прошедших проверку подлинности шлюзов.
modelстрокаДа-Идентификатор активной модели.
contextWindowномерНетАвтоТочное контекстное окно для планирования бюджета токенов, статуса, телеметрии и синхронизации метаданных.
reasoningEffortстрокаНет-Необязательные none, low, medium, high или xhigh. Отправляется как reasoning_effort для пользовательских запросов, совместимых с OpenAI.
modelsмассивНет-Дополнительные записи выбора модели с контекстом каждой модели и метаданными обоснования.

ollama

Конфигурация провайдера Ollama.

{
  "ollama": {
    "baseUrl": "http://localhost:11434",
    "port": 11434,
    "model": "llama3.2"
  }
}
ПолеТипТребуетсяПо умолчаниюОписание
baseUrlстрокаНетhttp://localhost:11434URL-адрес сервера Оллама
portномерНет11434Порт сервера (альтернатива baseUrl)
modelстрокаДа-Название модели (например, llama3.2, codellama)

llamacpp

Конфигурация сервера llama.cpp.

{
  "llamacpp": {
    "baseUrl": "http://localhost:8080",
    "port": 8080,
    "model": "default"
  }
}
ПолеТипТребуетсяПо умолчаниюОписание
baseUrlстрокаНетhttp://localhost:8080URL-адрес сервера llama.cpp
portномерНет8080Порт сервера
modelстрокаДа-Идентификатор модели

openai

Конфигурация API OpenAI.

{
  "openai": {
    "authMode": "api-key",
    "apiKey": "sk-xxx",
    "baseUrl": "https://api.openai.com/v1",
    "model": "gpt-5.4"
  }
}

OpenAI также может использовать вашу подписку на ChatGPT через встроенный процесс входа в систему OpenAI Autohand:

{
  "openai": {
    "authMode": "chatgpt",
    "baseUrl": "https://api.openai.com/v1",
    "contextWindow": 1050000,
    "model": "gpt-5.4",
    "chatgptAuth": {
      "accessToken": "...",
      "refreshToken": "...",
      "accountId": "..."
    }
  }
}
ПолеТипТребуетсяПо умолчаниюОписание
authModeстрокаНетapi-keyРежим аутентификации: api-key или chatgpt
apiKeyстрокаДа для режима api-key-Ключ API OpenAI
baseUrlстрокаНетhttps://api.openai.com/v1Конечная точка API
modelстрокаДа-Название модели (например, gpt-5.4, gpt-5.4-mini)
contextWindowномерНетАвтоОкно контекста точной модели. Установите этот параметр, чтобы переопределить устаревшие локальные предположения.
chatgptAuthобъектДа для режима chatgpt-Сохраненные токены аутентификации ChatGPT/Codex и идентификатор учетной записи

mlx

Поставщик MLX для компьютеров Apple Silicon Mac (локальный вывод).

{
  "mlx": {
    "baseUrl": "http://localhost:8080",
    "port": 8080,
    "model": "mlx-community/Llama-3.2-3B-Instruct-4bit"
  }
}
ПолеТипТребуетсяПо умолчаниюОписание
baseUrlстрокаНетhttp://localhost:8080URL-адрес сервера MLX
portномерНет8080Порт сервера
modelстрокаДа-Идентификатор модели MLX

llmgateway

Конфигурация унифицированного API LLM Gateway. Предоставляет доступ к нескольким поставщикам LLM через единый API.

{
  "llmgateway": {
    "apiKey": "your-llmgateway-api-key",
    "baseUrl": "https://api.llmgateway.io/v1",
    "model": "gpt-4o"
  }
}
ПолеТипТребуетсяПо умолчаниюОписание
apiKeyстрокаДа-Ключ API шлюза LLM
baseUrlстрокаНетhttps://api.llmgateway.io/v1Конечная точка API
modelстрокаДа-Название модели (например, gpt-4o, claude-3-5-sonnet-20241022)

Получение ключа API: Посетите llmgateway.io/dashboard, чтобы создать учетную запись и получить ключ API.

Поддерживаемые модели: LLM Gateway поддерживает модели от нескольких поставщиков, включая:

  • OpenAI: gpt-4o, gpt-4o-mini, gpt-4-turbo claude-3-5-haiku-20241022 – Google: gemini-1.5-pro, gemini-1.5-flash

deepseek

Конфигурация провайдера DeepSeek. API совместим с OpenAI и использует https://api.deepseek.com в качестве базового URL-адреса.

{
  "deepseek": {
    "apiKey": "your-deepseek-api-key",
    "baseUrl": "https://api.deepseek.com",
    "model": "deepseek-v4-flash"
  }
}
ПолеТипТребуетсяПо умолчаниюОписание
apiKeyстрокаДа-Ключ API DeepSeek
baseUrlстрокаНетhttps://api.deepseek.comКонечная точка API
modelстрокаДа-Название модели, например deepseek-v4-flash или deepseek-v4-pro

bedrock

Конфигурация поставщика AWS Bedrock. converse — это режим по умолчанию, в котором используется цепочка учетных данных AWS SDK. В режимах, совместимых с OpenAI, используются ключи API Bedrock и конечные точки, совместимые с OpenAI.

{
  "bedrock": {
    "apiMode": "converse",
    "authMode": "aws-credentials",
    "profile": "enterprise-prod",
    "region": "us-east-1",
    "model": "anthropic.claude-3-5-sonnet-20241022-v2:0"
  }
}
provider: bedrock
bedrock:
  apiMode: openai-chat
  authMode: bedrock-api-key
  apiKey: bedrock-api-key
  region: us-east-1
  model: openai.gpt-oss-120b-1:0
provider = "bedrock"

[bedrock]
apiMode = "openai-responses"
authMode = "bedrock-api-key"
apiKey = "bedrock-api-key"
region = "us-west-2"
endpoint = "https://vpce-abc123.bedrock-runtime.us-west-2.vpce.amazonaws.com/openai/v1"
model = "arn:aws:bedrock:us-west-2:123456789012:inference-profile/us.anthropic.claude-3-5-sonnet-20241022-v2:0"
ПолеТипТребуетсяПо умолчаниюОписание
modelстрокаДа-Идентификатор модели Bedrock, идентификатор профиля вывода или ARN
regionстрокаДаAWS_REGION, затем AWS_DEFAULT_REGION, затем us-east-1 в настройкеРегион AWS
apiModeстрокаНетconverseconverse, openai-chat или openai-responses
authModeстрокаНетaws-credentials для converse, bedrock-api-key для режимов, совместимых с OpenAIРежим аутентификации
profileстрокаНет-Дополнительный профиль AWS для аутентификации по цепочке учетных данных
endpointстрокаНетНа основе режима и регионаПользовательская/частная конечная точка Bedrock
apiKeyстрокаДа для режимов, совместимых с OpenAI-Ключ API Bedrock. Не используйте ключи API OpenAI.

Запустите aws configure sso или установите AWS_PROFILE=enterprise-prod autohand для аутентификации AWS на основе профиля. Учетные данные метаданных роли IAM, контейнера и экземпляра поддерживаются AWS SDK. Прежде чем использовать модель, включите доступ к модели в консоли AWS.


Настройки рабочей области

{
  "workspace": {
    "defaultRoot": "/path/to/projects",
    "allowDangerousOps": false
  }
}
ПолеТипПо умолчаниюОписание
defaultRootстрокаТекущий каталогРабочая область по умолчанию, если ничего не указано
allowDangerousOpsлогическоеfalseРазрешить деструктивные операции без подтверждения

Безопасность на рабочем месте

Autohand автоматически блокирует работу в опасных каталогах, чтобы предотвратить случайное повреждение:

  • Корни файловой системы (/, C:\, D:\ и т. д.)
  • Домашние каталоги (~, /Users/<user>, /home/<user>, C:\Users\<user>)
  • Системные каталоги (/etc, /var, /System, C:\Windows и т. д.)
  • Монтирование Windows WSL (/mnt/c, /mnt/c/Users/<user>)

Эту проверку невозможно обойти. Если вы попытаетесь запустить autohand в опасном каталоге, вы увидите ошибку и должны будете указать безопасный каталог проекта.

# This will be blocked
cd ~ && autohand
# Error: Unsafe Workspace Directory

# This works
cd ~/projects/my-app && autohand

Подробную информацию см. в разделе Безопасность на рабочем месте.


Настройки пользовательского интерфейса

{
  "ui": {
    "theme": "dark",
    "customThemes": {
      "company": {
        "colors": {
          "accent": "#7c3aed",
          "success": "#22c55e"
        }
      }
    },
    "autoConfirm": false,
    "readFileCharLimit": 300,
    "silentToolOutput": false,
    "activityVerbs": ["Compiling", "Parsing", "Reviewing"],
    "activityVerbsEnabled": true,
    "activitySymbol": "✳",
    "statusLine": {
      "showProviderModel": true,
      "showContext": true,
      "showCommandHint": true,
      "showPullRequest": true,
      "showSessionLines": false,
      "showQueue": true,
      "showActiveStatus": true,
      "showActiveMetrics": true,
      "showCancelHint": true
    },
    "showCompletionNotification": true,
    "showThinking": true,
    "terminalBell": true,
    "checkForUpdates": true,
    "updateCheckInterval": 24
  }
}
ПолеТипПо умолчаниюОписание
themeстрока"dark"Цветовая тема для вывода через терминал. Встроенные модули включают dark, light, dracula, sandy, tui, github-dark, cappadocia, rio и australia. Устаревшие значения turkey и brazil по-прежнему загружаются как псевдонимы.
customThemesобъект{}Встроенные определения пользовательских тем, привязанные к имени темы. Установите для theme тот же ключ, чтобы использовать его.
autoConfirmлогическоеfalseПропускайте запросы на подтверждение для безопасной работы
readFileCharLimitномер300Максимальное количество символов для отображения в выходных данных инструмента чтения/поиска (полное содержимое по-прежнему отправляется в модель)
silentToolOutputлогическоеfalseСкрыть блоки вывода инструмента в терминале, сохраняя при этом результаты инструмента для модели/сеанса
activityVerbsстрока или строка[]встроенный бассейнПользовательский глагол активности или пул глаголов для рабочего индикатора, отображаемый как Verb...
activityVerbsEnabledлогическоеtrueПоказывать глаголы смены действий, например Compiling..., во время работы агента
activitySymbolстрока"✳"Символ, отображаемый перед глаголом активности в выходных данных индикатора активности
statusLine.showProviderModelлогическоеtrueПоказать активного поставщика и модель в строке состояния композитора
statusLine.showContextлогическоеtrueПоказать процент контекста в строке состояния композитора
statusLine.showCommandHintлогическоеtrueПоказывать подсказки по командам, упоминаниям, навыкам и входу в терминал в строке состояния композитора
statusLine.showPullRequestлогическоеtrueПоказать связанный номер запроса на включение или PR #123, если PR не связан
statusLine.showSessionLinesлогическоеfalseПоказать строки, добавленные и удаленные во время текущего сеанса
statusLine.showQueueлогическоеtrueПоказывать количество запросов в очереди в строке состояния
statusLine.showActiveStatusлогическоеtrueПоказывать текст статуса активной очереди во время работы агента
statusLine.showActiveMetricsлогическоеtrueОтображение затраченного времени и показателей токенов во время работы агента
statusLine.showCancelHintлогическоеtrueПоказывать подсказку отмены Esc во время работы агента
completionReportEnabledлогическоеtrueПопросите модель включить краткий отчет о завершении после выполненных ходов действий
showCompletionNotificationлогическоеtrueПоказывать системное уведомление о завершении задачи
showThinkingлогическоеtrueОтображение рассуждений/мысленного процесса LLM
terminalBellлогическоеtrueЗвонок терминала, когда задача завершена (показывает значок на вкладке/док-станции терминала)
checkForUpdatesлогическоеtrueПроверка обновлений CLI при запуске
updateCheckIntervalномер24Часы между проверками обновлений (использует кэшированный результат в пределах интервала)

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

{
  "ui": {
    "theme": "company",
    "customThemes": {
      "company": {
        "vars": {
          "brand": "#7c3aed",
          "brandSoft": "#a78bfa"
        },
        "colors": {
          "accent": "brand",
          "borderAccent": "brandSoft",
          "mdHeading": "brand"
        }
      }
    }
  }
}

Примечание. readFileCharLimit и silentToolOutput влияют только на отображение терминала. Полный контент по-прежнему отправляется в модель и сохраняется в сообщениях инструмента.

Вы можете переключить вывод инструмента без звука, не редактируя файл:

autohand config set silent_tool_output true
autohand config set silent_tool_output false

Вы можете переключать глаголы ротации активности, не редактируя файл:

autohand config set verbs activity true
autohand config set verbs activity false

Настройте глаголы в файле конфигурации, если вам нужна фиксированная метка статуса или небольшая ротация для конкретного проекта:

{
  "ui": {
    "activityVerbs": "Compiling"
  }
}
{
  "ui": {
    "activityVerbs": ["Indexing", "Reviewing", "Testing"],
    "activitySymbol": ">"
  }
}

activityVerbs принимает либо одну строку, либо непустой массив строк. Если activityVerbsEnabled равен false, Autohand возвращается к Working... вместо смены пользовательских или встроенных глаголов.

Вы можете переключать отчеты о завершении, включая структурированное приглашение SITREP, без редактирования файла:

autohand config set sitrep true
autohand config set sitrep false

Терминальный звонок

Если terminalBell включен (по умолчанию), Autohand подает звуковой сигнал терминала (\x07) после завершения задачи. Это вызывает:

  • Значок на вкладке терминала — Показывает визуальный индикатор завершения работы.
  • Значок на панели подпрыгивает - Привлекает ваше внимание, когда терминал находится в фоновом режиме (macOS).
  • Звук – если в настройках терминала включены звуки терминала.

Настройки терминала:

  • Терминал macOS: «Настройки» > «Профили» > «Дополнительно» > «Звонок» (визуальный/звуковой).
  • iTerm2: Настройки > Профили > Терминал > Уведомления.
  • Терминал VS Code: Настройки > Терминал > Интегрировано: Включить звонок.

Чтобы отключить:

{
  "ui": {
    "terminalBell": false
  }
}

Рендеринг чернил

Autohand по умолчанию использует средство рендеринга Ink 7 + React 19 для интерактивных терминалов. Устаревшее поле конфигурации ui.useInkRenderer игнорируется, поэтому старые файлы конфигурации не могут принудительно использовать простой композитор терминала. Чернила обеспечивают:

  • Вывод без мерцания: все обновления пользовательского интерфейса группируются посредством согласования React.
  • Функция рабочей очереди: вводите инструкции, пока агент работает.
  • Улучшенная обработка ввода: нет конфликтов между обработчиками строки чтения.
  • Компонуемый пользовательский интерфейс: основа для будущих расширенных функций пользовательского интерфейса.

Аварийный резерв для совместимости терминала:

AUTOHAND_LEGACY_UI=1 autohand

Примечание. Эта функция является экспериментальной и может иметь крайние случаи. Пользовательский интерфейс на основе ora по умолчанию остается стабильным и полностью функциональным.

Проверка обновлений

Когда checkForUpdates включен (по умолчанию), Autohand проверяет наличие новых выпусков при запуске:

> Autohand v0.6.8 (abc1234) ✓ Up to date

Если доступно обновление:

> Autohand v0.6.7 (abc1234) ⬆ Update available: v0.6.8
  ↳ Run: curl -fsSL https://autohand.ai/install.sh | sh

Как это работает:

  • Получает последнюю версию из API GitHub.
  • Кэширует результат ~/.autohand/version-check.json.
  • Проверяется только один раз в updateCheckInterval часов (по умолчанию: 24).
  • Неблокирующий: запуск продолжается, даже если проверка не удалась.

Чтобы отключить:

{
  "ui": {
    "checkForUpdates": false
  }
}

Или через переменную среды:

export AUTOHAND_SKIP_UPDATE_CHECK=1

Настройки агента

Управляйте поведением агента и ограничениями итераций.

{
  "agent": {
    "maxIterations": 100,
    "enableRequestQueue": true,
    "toolSelectionCache": true,
    "autoMemory": true,
    "idleLogoutEnabled": true,
    "debug": false
  }
}
ПолеТипПо умолчаниюОписание
maxIterationsномер100Максимальное количество итераций инструмента по запросу пользователя до остановки
enableRequestQueueлогическоеtrueРазрешить пользователям вводить и ставить запросы в очередь во время работы агента
toolSelectionCacheлогическоеtrueКэшировать локальный выбор схемы инструмента для каждого оборота для эквивалентного ввода выбора инструмента
autoMemoryлогическоеtrueИзвлечение и сохранение долговременных воспоминаний пользователя/проекта после успешных интерактивных поворотов
idleLogoutEnabledлогическоеtrueВыход из интерактивных сеансов с проверкой подлинности по истечении времени простоя
debugлогическоеfalseВключить подробный вывод отладки (внутреннее состояние агента регистрируется в stderr)

Выбор схемы инструмента

Autohand не отправляет каждую полную схему инструмента при каждом запросе LLM. Системное приглашение включает компактный каталог возможностей инструмента, и каждый запрос предоставляет только небольшой набор конкретных схем, выбранных из:

  • Основные инструменты обнаружения, такие как tool_search, read_file, fff_find и fff_grep.
  • Инструменты, соответствующие намерениям, для редактирования, проверки, работы с Git, браузером, Интернетом, зависимостями или отслеживания проектов. – Инструменты, запрошенные посредством недавних вызовов tool_search или явно упомянутые по имени.

Это позволяет избежать больших предварительных контекстных затрат на отправку всех схем инструментов до того, как станет известно намерение пользователя. toolSelectionCache управляет только локальным кэшем селектора для эквивалентных поворотов; он не выполняет предварительную пользовательскую прогрев LLM и не требует принудительного использования большого префикса кэшированного приглашения.

Чтобы отключить локальный кэш селектора:

{
  "agent": {
    "toolSelectionCache": false
  }
}

Чтобы сохранить аутентифицированные длительные сеансы агентов, пока они ожидают работы:

{
  "agent": {
    "idleLogoutEnabled": false
  }
}

Для одного процесса используйте autohand --no-idle-logout или установите AUTOHAND_NO_IDLE_LOGOUT=1.

Режим отладки

Включите режим отладки, чтобы просмотреть подробную регистрацию внутреннего состояния агента (итерации цикла реагирования, построение подсказок, сведения о сеансе). Вывод поступает в stderr, чтобы не мешать нормальному выводу.

Три способа включения режима отладки (в порядке приоритета):

  1. Флаг CLI: autohand -d или autohand --debug.
  2. Переменная среды: AUTOHAND_DEBUG=1
  3. Файл конфигурации: установите agent.debug: true.

Очередь запросов

Если enableRequestQueue включен, вы можете продолжать вводить сообщения, пока агент обрабатывает предыдущий запрос. Ваш ввод будет поставлен в очередь и обработан автоматически после завершения текущей задачи.

  • Введите свое сообщение и нажмите Enter, чтобы добавить его в очередь.
  • В строке состояния показано, сколько запросов находится в очереди.
  • Запросы обрабатываются в порядке FIFO (первым поступил – первым обслужен).
  • Максимальный размер очереди - 10 запросов.

Настройки разрешений

Детальный контроль над разрешениями инструментов.

{
  "permissions": {
    "mode": "interactive",
    "whitelist": [
      "run_command:npm *",
      "run_command:bun *",
      "run_command:git status"
    ],
    "blacklist": ["run_command:rm -rf *", "run_command:sudo *"],
    "rules": [
      {
        "tool": "run_command",
        "pattern": "npm test",
        "action": "allow"
      }
    ],
    "rememberSession": true
  }
}

mode

ЗначениеОписание
"interactive"Запрос на одобрение опасных операций (по умолчанию)
"unrestricted"Никаких подсказок, разрешить всё
"restricted"Запретить все опасные операции

whitelist

Массив шаблонов инструментов, которые никогда не требуют утверждения.

["run_command:npm *", "run_command:bun test"]

blacklist

Массив шаблонов инструментов, которые всегда блокируются.

["run_command:rm -rf /", "run_command:sudo *"]

rules

Детализированные правила разрешений.

| Поле | Тип | Описание | | --------- | --------- | ------------------------------------------- | ---------- | -------------- | | tool | строка | Название инструмента, соответствующее | | pattern | строка | Необязательный шаблон для сопоставления с аргументами | | action | "allow" | "deny" | "prompt" | Действия, которые необходимо предпринять |

rememberSession

ТипПо умолчаниюОписание
логическоеtrueЗапомните решения об утверждении сессии

Разрешения локального проекта

Каждый проект может иметь свои собственные настройки разрешений, которые переопределяют глобальную конфигурацию. Они хранятся в .autohand/settings.local.json в корне вашего проекта.

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

{
  "version": 1,
  "permissions": {
    "whitelist": [
      "apply_patch:src/components/Button.tsx",
      "write_file:package.json",
      "run_command:bun test"
    ]
  }
}

Как это работает:

– Когда вы одобряете операцию, она сохраняется в .autohand/settings.local.json. – В следующий раз та же операция будет одобрена автоматически.

  • Локальные настройки проекта объединены с глобальными настройками (локальные имеют приоритет) – Добавьте .autohand/settings.local.json к .gitignore, чтобы сохранить конфиденциальность личных настроек.

Формат шаблона:

  • tool_name:path — для операций с файлами (например, apply_patch:src/file.ts)
  • tool_name:command args — для команд (например, run_command:npm test)

Разрешения на просмотр

Вы можете просмотреть текущие настройки разрешений двумя способами:

Флаг CLI (неинтерактивный):

autohand --permissions

Это отображает:

  • Текущий режим разрешений (интерактивный, неограниченный, ограниченный)
  • Пути к рабочему пространству и файлам конфигурации.
  • Все одобренные шаблоны (белый список)
  • Все запрещенные шаблоны (черный список)
  • Сводная статистика

Интерактивная команда:

/permissions

В интерактивном режиме команда /permissions предоставляет ту же информацию, а также следующие возможности:

  • Удаление элементов из белого списка
  • Удаление элементов из черного списка
  • Очистить все сохраненные разрешения

Режим исправления

Режим исправлений позволяет создавать общедоступные патчи, совместимые с git, без изменения файлов рабочей области. Это полезно для:

  • Проверка кода перед применением изменений.
  • Обмен изменениями, созданными ИИ, с членами команды.
  • Создание воспроизводимых наборов изменений
  • Конвейеры CI/CD, которым необходимо фиксировать изменения, не применяя их.

Использование

# Generate patch to stdout
autohand --prompt "add user authentication" --patch

# Save to file
autohand --prompt "add user authentication" --patch --output auth.patch

# Pipe to file (alternative)
autohand --prompt "refactor api handlers" --patch > refactor.patch

Поведение

Если указан --patch:

  • Автоподтверждение: все подтверждения принимаются автоматически (подразумевается --yes).
  • Нет запросов: запросы на утверждение не отображаются (подразумевается --unrestricted).
  • Только предварительный просмотр: изменения фиксируются, но НЕ записываются на диск.
  • Принудительная безопасность: операции из черного списка (.env, ключи SSH, опасные команды) по-прежнему блокируются.

Применение патчей

Получатели могут применить патч, используя стандартные команды git:

# Check what would be applied (dry-run)
git apply --check changes.patch

# Apply the patch
git apply changes.patch

# Apply with 3-way merge (handles conflicts better)
git apply -3 changes.patch

# Apply and stage changes
git apply --index changes.patch

# Reverse a patch
git apply -R changes.patch

Формат патча

Сгенерированный патч соответствует унифицированному формату различий git:

diff --git a/src/auth.ts b/src/auth.ts
new file mode 100644
--- /dev/null
+++ b/src/auth.ts
@@ -0,0 +1,15 @@
+export function authenticate(user: string, password: string) {
+  // Implementation here
+}

diff --git a/src/index.ts b/src/index.ts
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,5 +1,7 @@
 import express from 'express';
+import { authenticate } from './auth';

 const app = express();
+app.use(authenticate);

Коды выхода

КодЗначение
0Успех, патч создан
1Ошибка (отсутствует --prompt, отказ в разрешении и т. д.)

Объединение с другими флагами

# Use specific model
autohand --prompt "optimize queries" --patch --model gpt-4o

# Specify workspace
autohand --prompt "add tests" --patch --path ./my-project

# Use custom config
autohand --prompt "refactor" --patch --config ~/.autohand/work.json

Пример рабочего процесса команды

# Developer A: Generate patch for a feature
autohand --prompt "implement user dashboard with charts" --patch --output dashboard.patch

# Share via git (create PR with just the patch file)
git checkout -b patch/dashboard
git add dashboard.patch
git commit -m "Add dashboard feature patch"
git push

# Developer B: Review and apply
git fetch origin patch/dashboard
git apply dashboard.patch
# Run tests, review code, then commit
git add -A && git commit -m "feat: add user dashboard with charts"

Настройки сети

{
  "network": {
    "maxRetries": 3,
    "timeout": 30000,
    "retryDelay": 1000
  }
}
ПолеТипПо умолчаниюМаксОписание
maxRetriesномер35Повторные попытки для неудачных запросов API
timeoutномер30000-Таймаут запроса в миллисекундах
retryDelayномер1000-Задержка между повторными попытками в миллисекундах

Настройки телеметрии

Телеметрия отключена по умолчанию (по желанию). Включите его, чтобы улучшить Autohand.

{
  "telemetry": {
    "enabled": false,
    "apiBaseUrl": "https://api.autohand.ai",
    "batchSize": 20,
    "flushIntervalMs": 60000,
    "maxQueueSize": 500,
    "maxRetries": 3,
    "enableSessionSync": true,
    "companySecret": ""
  }
}
ПолеТипПо умолчаниюОписание
enabledлогическоеfalseВключить/отключить телеметрию (по желанию)
apiBaseUrlстрокаhttps://api.autohand.aiКонечная точка API телеметрии
batchSizeномер20Количество событий для пакетной обработки перед автоматической очисткой
flushIntervalMsномер60000Интервал промывки в миллисекундах (1 минута)
maxQueueSizeномер500Максимальный размер очереди перед удалением старых событий
maxRetriesномер3Повторные попытки для неудачных запросов телеметрии
enableSessionSyncлогическоеtrueСинхронизируйте сеансы с облаком для функций команды, если включена телеметрия
companySecretстрока""Секрет компании для аутентификации API

Телеметрия поставщика/модели включает в себя идентификатор активного поставщика, идентификатор модели и доступные несекретные метаданные, такие как отображаемое имя пользовательского поставщика, формат API, усилия по обоснованию и контекстное окно. Ключи API и токены на предъявителя никогда не включаются.


Внешние агенты

Загрузите определения пользовательских агентов из внешних каталогов.

{
  "externalAgents": {
    "enabled": true,
    "paths": ["~/.autohand/agents", "/team/shared/agents"]
  }
}
ПолеТипПо умолчаниюОписание
enabledлогическоеfalseВключить загрузку внешнего агента
pathsстрока[][]Каталоги для загрузки агентов

Система навыков

Навыки — это пакеты инструкций, которые предоставляют специализированные инструкции агенту ИИ. Они работают как файлы AGENTS.md по требованию, которые можно активировать для конкретных задач.

Места открытия навыков

Навыки обнаруживаются из разных мест, причем более поздние источники имеют приоритет:

МестоположениеИдентификатор источникаОписание
~/.codex/skills/**/SKILL.mdcodex-userНавыки Кодекса на уровне пользователя (рекурсивно)
~/.claude/skills/*/SKILL.mdclaude-userНавыки Клода на уровне пользователя (один уровень)
~/.autohand/skills/**/SKILL.mdautohand-userНавыки Autohand уровня пользователя (рекурсивно)
<project>/.claude/skills/*/SKILL.mdclaude-projectНавыки Клода на уровне проекта (один уровень)
<project>/.autohand/skills/**/SKILL.mdautohand-projectНавыки Autohand уровня проекта (рекурсивно)

Поведение автоматического копирования

Навыки, обнаруженные в локациях Кодекса или Клода, автоматически копируются в соответствующую локацию Autohand:

  • ~/.codex/skills/ и ~/.claude/skills/~/.autohand/skills/
  • <project>/.claude/skills/<project>/.autohand/skills/

Существующие навыки в локациях Autohand никогда не перезаписываются.

Формат SKILL.md

В навыках используется заголовок YAML, за которым следует контент с уценкой:

---
name: my-skill-name
description: Brief description of the skill
license: MIT
compatibility: Works with Node.js 18+
allowed-tools: read_file write_file run_command
metadata:
  author: your-name
  version: "1.0.0"
---

# My Skill

Detailed instructions for the AI agent...
ПолеТребуетсяМаксимальная длинаОписание
nameДа64 символаСтрочные буквы и цифры, только через дефис
descriptionДа1024 символаКраткое описание навыка
licenseНет-Идентификатор лицензии (например, MIT, Apache-2.0)
compatibilityНет500 символовПримечания о совместимости
allowed-toolsНет-Список разрешенных инструментов, разделенный пробелами
metadataНет-Дополнительные метаданные «ключ-значение»

Входные префиксы

Autohand поддерживает специальные префиксы в строке ввода:

ПрефиксОписаниеПример
/Слэш-команды/help, /model, /quit, /exit
@Упоминания файлов (автозаполнение)@src/index.ts
$Упоминания навыков (автозаполнение)$frontend-design, $code-review
!Запускайте команды терминала напрямую! git status, ! ls -la

Упоминания о навыках ($):

  • Введите $, а затем символы, чтобы увидеть доступные навыки с автозаполнением. – Tab принимает самое верхнее предложение (например, $frontend-design).
  • Навыки открываются из ~/.autohand/skills/ и <project>/.autohand/skills/.
  • Активированные навыки прикреплены к подсказке как специальные инструкции для текущей сессии.
  • На панели предварительного просмотра отображаются метаданные навыка (имя, описание, состояние активации).

Команды оболочки (!):

  • Команды выполняются в вашем текущем рабочем каталоге.
  • Выходные данные отображаются непосредственно в терминале
  • Не поступает в LLM
  • 30-секундный тайм-аут
  • Возврат к подсказке после выполнения

Слэш-команды

/skills — Менеджер пакетов

КомандаОписание
/skillsСписок всех доступных навыков
/skills use <name>Активировать навык для текущего сеанса
/skills deactivate <name>Деактивировать навык
/skills info <name>Показать подробную информацию о навыках
/skills installПросмотр и установка из реестра сообщества
/skills install @<slug>Установите навык сообщества с помощью слизняка
/skills search <query>Поиск в реестре общественных навыков
/skills trendingПоказать популярные навыки общения
/skills remove <slug>Удаление навыка сообщества
/skills newСоздайте новый навык в интерактивном режиме
/skills feedback <slug> <1-5>Оцените навык сообщества

/learn — Советник по навыкам на базе LLM

КомандаОписание
/learnПроанализируйте проект и порекомендуйте навыки (быстрое сканирование)
/learn deepПроект глубокого сканирования (читает исходные файлы) для более целевых результатов
/learn updateПовторно проанализировать проект и восстановить устаревшие навыки, полученные в рамках LLM

/learn использует двухфазный поток LLM:

  1. Этап 1 — Анализ + Ранжирование + Аудит: сканирует структуру вашего проекта, проверяет установленные навыки на наличие избыточности/конфликтов и ранжирует навыки сообщества по релевантности (0–100).
  2. Этап 2 — Создание (условно): если ни один навык сообщества не набрал более 60 баллов, предлагается создать собственный навык, адаптированный к вашему проекту. Сгенерированные навыки включают метаданные (agentskill-source: llm-generated, agentskill-project-hash), поэтому /learn update может обнаруживать изменения в вашей кодовой базе и восстанавливать устаревшие навыки.

Автоматическое создание навыков (--auto-skill)

Флаг CLI --auto-skill генерирует навыки без потока интерактивного советника:

autohand --auto-skill

Это будет:

  1. Проанализируйте структуру вашего проекта (package.json, require.txt и т. д.).
  2. Обнаружение языков, фреймворков и шаблонов
  3. Создайте 3 соответствующих навыка с помощью LLM.
  4. Сохраните навыки в <project>/.autohand/skills/.

Для более целенаправленного интерактивного взаимодействия вместо этого используйте /learn внутри сеанса.

Обнаруженные закономерности включают в себя:

  • Языки: TypeScript, JavaScript, Python, Rust, Go.
  • Фреймворки: React, Next.js, Vue, Express, Flask, Django.
  • Шаблоны: инструменты CLI, тестирование, монорепозиторий, Docker, CI/CD.

Настройки API

Конфигурация серверного API для функций команды.

{
  "api": {
    "baseUrl": "https://api.autohand.ai",
    "companySecret": "sk-team-xxx"
  }
}
ПолеТипПо умолчаниюОписание
baseUrlстрокаhttps://api.autohand.aiКонечная точка API
companySecretстрока-Секрет команды/компании для общих функций

Также можно установить через переменные среды:

  • AUTOHAND_API_URLapi.baseUrl
  • AUTOHAND_SECRETapi.companySecret

Настройки аутентификации

Аутентификация и настройка сеанса пользователя.

{
  "auth": {
    "token": "your-auth-token",
    "user": {
      "id": "user-id",
      "email": "user@example.com",
      "name": "User Name",
      "avatar": "https://example.com/avatar.png"
    },
    "expiresAt": "2025-12-31T23:59:59Z"
  }
}
ПолеТипПо умолчаниюОписание
tokenстрока-Токен аутентификации для доступа к API
userобъект-Информация о подтвержденном пользователе
user.idстрока-Идентификатор пользователя
user.emailстрока-Адрес электронной почты пользователя
user.nameстрока-Отображаемое имя пользователя
user.avatarстрока-URL-адрес аватара пользователя (необязательно)
expiresAtстрока-Временная метка истечения срока действия токена (формат ISO 8601)

Настройки навыков сообщества

Конфигурация для обнаружения и управления навыками сообщества.

{
  "communitySkills": {
    "enabled": true,
    "showSuggestionsOnStartup": true,
    "autoBackup": true
  }
}
ПолеТипПо умолчаниюОписание
enabledлогическоеtrueВключить функции общественных навыков
showSuggestionsOnStartupлогическоеtrueПоказывать предложения по навыкам при запуске, когда навыков у поставщика нет
autoBackupлогическоеtrueАвтоматическое резервное копирование выявленных навыков поставщиков в API

Настройки общего доступа

Настройка совместного использования сеанса с помощью команды /share. Сеансы проводятся по адресу autohand.link.

{
  "share": {
    "enabled": true
  }
}
ПолеТипПо умолчаниюОписание
enabledлогическоеtrueВключить/отключить команду /share

Формат YAML

share:
  enabled: true

Отключение общего доступа к сеансу

Если вы хотите отключить совместное использование сеансов по соображениям безопасности или конфиденциальности:

{
  "share": {
    "enabled": false
  }
}

Если этот параметр отключен, при запуске /share будет отображаться:

Session sharing is disabled.
To enable, set share.enabled: true in your config file.

Синхронизация настроек

Autohand может синхронизировать вашу конфигурацию между устройствами для вошедших в систему пользователей. Настройки надежно хранятся в Cloudflare R2 и шифруются перед загрузкой.

{
  "sync": {
    "enabled": true,
    "interval": 300000,
    "exclude": [],
    "includeTelemetry": false,
    "includeFeedback": false
  }
}
ПолеТипПо умолчаниюОписание
enabledлогическоеtrue (зарегистрировано)Включить/выключить синхронизацию настроек
intervalномер300000Интервал синхронизации в миллисекундах (по умолчанию: 5 минут)
excludeстрока[][]Шаблоны Glob для исключения из синхронизации
includeTelemetryлогическоеfalseСинхронизировать данные телеметрии (требуется согласие пользователя)
includeFeedbackлогическоеfalseСинхронизировать данные обратной связи (требуется согласие пользователя)

Флаг CLI

# Disable sync for this session
autohand --sync-settings=false

# Enable sync (default for logged users)
autohand --sync-settings

Что синхронизируется

По умолчанию эти элементы синхронизируются для вошедших в систему пользователей:

  • Конфигурация (config.json) — ключи API шифруются перед загрузкой.
  • Пользовательские агенты (agents/)
  • Коммуникабельность (community-skills/)
  • Пользовательские перехватчики (hooks/)
  • Память (memory/)
  • Знание проекта (projects/)
  • История сеансов (sessions/)
  • Общий контент (share/)
  • Пользовательские навыки (skills/)

Что не синхронизируется (по умолчанию)

  • Идентификатор устройства (device-id) – уникальный для каждого устройства. – Журналы ошибок (error.log) – Только локально.
  • Кэш версий (version-*.json) - Файлы локального кэша

Синхронизация на основе согласия

Эти элементы требуют явного согласия в вашей конфигурации:

Данные телеметрии – Установите sync.includeTelemetry: true для синхронизации. – Данные обратной связи – Установите sync.includeFeedback: true для синхронизации.

{
  "sync": {
    "enabled": true,
    "includeTelemetry": true,
    "includeFeedback": true
  }
}

Разрешение конфликтов

При возникновении конфликтов (один и тот же файл изменяется на нескольких устройствах) побеждает облачная версия. Это обеспечивает согласованность при входе в систему на новых устройствах.

Безопасность

Ключи API и другие конфиденциальные данные в config.json перед загрузкой шифруются с использованием вашего токена аутентификации. Их можно расшифровать только с помощью ваших учетных данных.

Что зашифровано:

  • Поля с именем apiKey. – Поля, заканчивающиеся на Key, Token, Secret.
  • Поле password.

Как это работает

  1. При запуске: если вы вошли в систему, служба синхронизации запускается автоматически.
  2. Каждые 5 минут: настройки сравниваются с облачным хранилищем.
  3. Облако побеждает: удаленные изменения загружаются первыми.
  4. Локальные загрузки: загружаются новые локальные изменения.
  5. При выходе: служба синхронизации корректно останавливается.

Исключение файлов

Вы можете исключить определенные файлы или шаблоны из синхронизации:

{
  "sync": {
    "enabled": true,
    "exclude": ["custom-local-config.json", "temp/*"]
  }
}

Формат YAML

sync:
  enabled: true
  interval: 300000
  exclude: []
  includeTelemetry: false
  includeFeedback: false

Настройки MCP

Настройте серверы MCP (Model Context Protocol) для расширения Autohand с помощью внешних инструментов.

{
  "mcp": {
    "enabled": true,
    "servers": [
      {
        "name": "filesystem",
        "transport": "stdio",
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
        "env": {},
        "autoConnect": true
      },
      {
        "name": "context7",
        "transport": "http",
        "url": "https://mcp.context7.com/mcp",
        "headers": {
          "CONTEXT7_API_KEY": "ctx7sk-your-api-key"
        },
        "autoConnect": true
      }
    ]
  }
}

mcp.enabled

  • Тип: boolean
  • По умолчанию: true
  • Описание: включение или отключение всей поддержки MCP. Если false, при запуске серверы не подключаются, а инструменты MCP недоступны.

mcp.servers

  • Тип: McpServerConfigEntry[]
  • По умолчанию: []
  • Описание: Массив конфигураций сервера MCP.

Поля ввода сервера

ПолеТипТребуетсяПо умолчаниюОписание
namestringДа-Уникальный идентификатор сервера
transport"stdio" | "sse" | "http"Да-Тип транспорта
commandstringДа (стдио)-Команда запуска серверного процесса
argsstring[]Нет[]Аргументы для команды
urlstringДа (sse/http)-URL-адрес конечной точки сервера
headersRecord<string, string>Нет{}Пользовательские заголовки HTTP для транспорта http/sse (например, токены аутентификации)
envRecord<string, string>Нет{}Переменные среды, передаваемые на сервер
autoConnectbooleanНетtrueНужно ли автоматически подключаться при запуске

Серверы подключаются асинхронно в фоновом режиме во время запуска, не блокируя приглашение. Используйте /mcp для интерактивного управления серверами или /mcp add для просмотра реестра сообщества или добавления собственных серверов.

Полную документацию MCP см. в docs/mcp.md.


Настройки хуков

Конфигурация перехватчиков жизненного цикла, которые запускают команды оболочки при событиях агента. Подробную информацию см. в Документации по хукам.

{
  "hooks": {
    "enabled": true,
    "hooks": [
      {
        "event": "pre-tool",
        "command": "echo \"Running tool: $HOOK_TOOL\" >> ~/.autohand/hooks.log",
        "description": "Log all tool executions",
        "enabled": true
      },
      {
        "event": "file-modified",
        "command": "./scripts/on-file-change.sh",
        "description": "Custom file change handler",
        "filter": { "path": ["src/**/*.ts"] }
      },
      {
        "event": "post-response",
        "command": "curl -X POST https://api.example.com/webhook -d '{\"tokens\": $HOOK_TOKENS}'",
        "description": "Track token usage",
        "async": true
      }
    ]
  }
}

hooks

ПолеТипПо умолчаниюОписание
enabledлогическоеtrueВключить/отключить все перехватчики глобально
hooksмассив[]Массив определений хуков

Определение хука

ПолеТипТребуетсяПо умолчаниюОписание
eventстрокаДа-Событие для подключения
commandстрокаДа-Команда оболочки для выполнения
descriptionстрокаНет-Описание дисплея /hooks
enabledлогическоеНетtrueАктивен ли хук
timeoutномерНет5000Тайм-аут в миллисекундах
asyncлогическоеНетfalseЗапуск без блокировки
filterобъектНет-Фильтровать по инструменту или пути

События перехвата

СобытиеКогда уволен
pre-toolПеред выполнением любого инструмента
post-toolПосле завершения работы инструмента
file-modifiedПри создании/изменении/удалении файла
pre-promptПеред отправкой в ​​LLM
post-responseПосле ответа LLM
session-errorПри возникновении ошибки

Переменные среды

При выполнении перехватчиков доступны следующие переменные среды:

ПеременнаяОписание
HOOK_EVENTНазвание события
HOOK_WORKSPACEКорневой путь рабочей области
HOOK_TOOLИмя инструмента (события инструмента)
HOOK_ARGSИнструмент в формате JSON args
HOOK_SUCCESSправда/ложь (пост-инструмент)
HOOK_PATHПуть к файлу (измененный файлом)
HOOK_TOKENSИспользуемые токены (пост-ответ)

Настройки расширения Chrome

Управляйте интеграцией расширения Autohand Chrome. Полное руководство см. в Autohand в Chrome.

{
  "chrome": {
    "extensionId": "your-extension-id",
    "enabledByDefault": false,
    "browser": "auto",
    "userDataDir": "/path/to/chrome/user-data",
    "profileDirectory": "Default",
    "installUrl": "https://autohand.ai/chrome"
  }
}
КлючТипПо умолчаниюОписание
extensionIdstringУстановлен идентификатор расширения Chrome для прямой передачи
enabledByDefaultbooleanfalseАвтоматический запуск браузерного моста с помощью CLI
browserstring"auto"Предпочитаемый браузер Chromium: auto, chrome, chromium, brave, edge
userDataDirstringКаталог пользовательских данных браузера для выбора правильного профиля
profileDirectorystringИмя каталога профиля браузера (например, "Default", "Profile 1")
installUrlstringРезервный URL-адрес, если идентификатор расширения не настроен

Флаги CLI

autohand --chrome          # Start with browser bridge enabled
autohand --no-chrome       # Start with browser bridge disabled

Слэш-команды

/chrome                    # Open Chrome integration panel
/chrome disconnect         # Close the browser bridge connection

Полный пример

Формат JSON (~/.autohand/config.json)

{
  "provider": "openrouter",
  "openrouter": {
    "apiKey": "sk-or-v1-your-key-here",
    "baseUrl": "https://openrouter.ai/api/v1",
    "model": "your-modelcard-id-here"
  },
  "ollama": {
    "baseUrl": "http://localhost:11434",
    "model": "llama3.2"
  },
  "workspace": {
    "defaultRoot": "~/projects",
    "allowDangerousOps": false
  },
  "ui": {
    "theme": "dark",
    "autoConfirm": false,
    "showCompletionNotification": true,
    "showThinking": true,
    "terminalBell": true,
    "checkForUpdates": true,
    "updateCheckInterval": 24
  },
  "agent": {
    "maxIterations": 100,
    "enableRequestQueue": true,
    "toolSelectionCache": true,
    "idleLogoutEnabled": true,
    "debug": false
  },
  "permissions": {
    "mode": "interactive",
    "whitelist": ["run_command:npm *", "run_command:bun *"],
    "blacklist": ["run_command:rm -rf /"],
    "rememberSession": true
  },
  "network": {
    "maxRetries": 3,
    "timeout": 30000,
    "retryDelay": 1000
  },
  "telemetry": {
    "enabled": false,
    "apiBaseUrl": "https://api.autohand.ai",
    "batchSize": 20,
    "flushIntervalMs": 60000,
    "maxQueueSize": 500,
    "maxRetries": 3,
    "enableSessionSync": true
  },
  "externalAgents": {
    "enabled": false,
    "paths": []
  },
  "api": {
    "baseUrl": "https://api.autohand.ai"
  },
  "auth": {
    "token": "your-auth-token",
    "user": {
      "id": "user-id",
      "email": "user@example.com",
      "name": "User Name"
    }
  },
  "communitySkills": {
    "enabled": true,
    "showSuggestionsOnStartup": true,
    "autoBackup": true
  },
  "share": {
    "enabled": true
  },
  "sync": {
    "enabled": true,
    "interval": 300000,
    "includeTelemetry": false,
    "includeFeedback": false
  }
}

Формат YAML (~/.autohand/config.yaml)

provider: openrouter

openrouter:
  apiKey: sk-or-v1-your-key-here
  baseUrl: https://openrouter.ai/api/v1
  model: your-modelcard-id-here

ollama:
  baseUrl: http://localhost:11434
  model: llama3.2

workspace:
  defaultRoot: ~/projects
  allowDangerousOps: false

ui:
  theme: dark
  autoConfirm: false
  showCompletionNotification: true
  showThinking: true
  terminalBell: true
  checkForUpdates: true
  updateCheckInterval: 24

agent:
  maxIterations: 100
  enableRequestQueue: true
  toolSelectionCache: true
  idleLogoutEnabled: true
  debug: false

permissions:
  mode: interactive
  whitelist:
    - "run_command:npm *"
    - "run_command:bun *"
  blacklist:
    - "run_command:rm -rf /"
  rememberSession: true

network:
  maxRetries: 3
  timeout: 30000
  retryDelay: 1000

telemetry:
  enabled: false
  apiBaseUrl: https://api.autohand.ai
  batchSize: 20
  flushIntervalMs: 60000
  maxQueueSize: 500
  maxRetries: 3
  enableSessionSync: true

externalAgents:
  enabled: false
  paths: []

api:
  baseUrl: https://api.autohand.ai

auth:
  token: your-auth-token
  user:
    id: user-id
    email: user@example.com
    name: User Name

communitySkills:
  enabled: true
  showSuggestionsOnStartup: true
  autoBackup: true

share:
  enabled: true

sync:
  enabled: true
  interval: 300000
  includeTelemetry: false
  includeFeedback: false

Формат TOML (~/.autohand/config.toml)

provider = "openrouter"

[openrouter]
apiKey = "sk-or-v1-your-key-here"
baseUrl = "https://openrouter.ai/api/v1"
model = "your-modelcard-id-here"

[ollama]
baseUrl = "http://localhost:11434"
model = "llama3.2"

[workspace]
defaultRoot = "~/projects"
allowDangerousOps = false

[ui]
theme = "dark"
autoConfirm = false
showCompletionNotification = true
showThinking = true
terminalBell = true
checkForUpdates = true
updateCheckInterval = 24

[ui.customThemes.company.vars]
brand = "#7c3aed"
brandSoft = "#a78bfa"

[ui.customThemes.company.colors]
accent = "brand"
borderAccent = "brandSoft"
mdHeading = "brand"

[agent]
maxIterations = 100
enableRequestQueue = true
toolSelectionCache = true
idleLogoutEnabled = true
debug = false

[permissions]
mode = "interactive"
whitelist = ["run_command:npm *", "run_command:bun *"]
blacklist = ["run_command:rm -rf /"]
rememberSession = true

Структура каталогов

Autohand хранит данные в ~/.autohand/ (или $AUTOHAND_HOME):

~/.autohand/
├── config.json          # Main configuration
├── config.toml          # Alternative TOML config
├── config.yaml          # Alternative YAML config
├── device-id            # Unique device identifier
├── error.log            # Error log
├── feedback.log         # Feedback submissions
├── sessions/            # Session history
├── projects/            # Project knowledge base
├── memory/              # User-level memory
├── commands/            # Custom commands
├── agents/              # Agent definitions
├── tools/               # Custom meta-tools
├── feedback/            # Feedback state
└── telemetry/           # Telemetry data
    ├── queue.json
    └── session-sync-queue.json

Каталог уровня проекта (в корне рабочей области):

<project>/.autohand/
├── settings.local.json  # Local project permissions (gitignore this)
├── memory/              # Project-specific memory
├── skills/              # Project-specific skills
└── tools/               # Project-specific meta-tools

Флаги CLI (переопределить конфигурацию)

Эти флаги переопределяют настройки файла конфигурации:

Флаги ядра

ФлагОписание
-v, --versionВывести текущую версию
-p, --prompt [text]Запуск одной инструкции в командном режиме
--path <path>Переопределить корень рабочей области
--config <path>Использовать собственный файл конфигурации
--model <model>Переопределить модель
--temperature <n>Установить температуру отбора проб (0-1)
--thinking [level]Установить глубину мышления/рассуждения (нет, нормальная, расширенная)
-y, --yesПодсказки автоподтверждения
--dry-runПредварительный просмотр без выполнения
-d, --debugВключить подробный вывод отладки
--bareМинимальный явный режим; также устанавливает AUTOHAND_CODE_SIMPLE=1 и отключает команды слэша

Разрешения и безопасность

ФлагОписание
--unrestrictedНикаких запросов на одобрение
--restrictedЗапретить опасные операции
--permissionsОтобразить текущие настройки разрешений и выйти
--no-idle-logoutОтключить выход из системы при простое с проверкой подлинности для длительных сеансов агента
--yolo [pattern]Инструмент автоматического одобрения вызывает соответствующий шаблон (например, allow:read,write или deny:delete)
--timeout <seconds>Тайм-аут в секундах для режима автоматического одобрения

Git и рабочее дерево

ФлагОписание
--worktree [name]Запустить сеанс в изолированном рабочем дереве git (необязательное рабочее дерево/имя ветки)
--tmuxЗапуск в выделенном сеансе tmux (подразумевается --worktree; нельзя использовать с --no-worktree)
--no-worktreeОтключить изоляцию рабочего дерева git в автоматическом режиме
-c, --auto-commitАвтоматическое подтверждение изменений после выполнения задач
--patchСоздать патч git без применения изменений
--output <file>Выходной файл для патча (используется с --patch)

Автоматический режим

ФлагОписание
--auto-mode [prompt]Включите интерактивный автоматический режим или запустите автономный цикл с помощью встроенной задачи
--max-iterations <n>Максимальное количество итераций в автоматическом режиме (по умолчанию: 50)
--completion-promise <text>Текст маркера завершения (по умолчанию: «DONE»)
--checkpoint-interval <n>Git фиксирует каждые N итераций (по умолчанию: 5)
--max-runtime <m>Максимальное время работы в минутах (по умолчанию: 120)
--max-cost <d>Максимальная стоимость API в долларах (по умолчанию: 10)
--interactive-on-completeПосле завершения автоматического режима переключитесь непосредственно в интерактивный режим (только TTY)

Навыки и обучение

ФлагОписание
--auto-skillАвтоматическое создание навыков на основе анализа проекта (см. также /learn для интерактивного консультанта)
--learnЗапустить советник по навыкам /learn в неинтерактивном режиме (проанализировать и установить рекомендуемые навыки)
--learn-updateПовторно проанализировать проект и восстановить устаревшие навыки, полученные в ходе LLM, в неинтерактивном режиме
--skill-install [name]Установить навык сообщества (откроется браузер, если имя не указано)
--projectУстановить навык на уровень проекта (с помощью --skill-install)

Аутентификация и учетная запись

ФлагОписание
--loginВойдите в свою учетную запись Autohand
--logoutВыйдите из своей учетной записи Autohand
--sync-settingsВключить/отключить синхронизацию настроек (по умолчанию: true для зарегистрированных пользователей)

Настройка и информация

ФлагОписание
--setupЗапустите мастер установки, чтобы настроить или перенастроить Autohand
--aboutПоказать информацию о Autohand (версия, ссылки, информация о вкладе)
--feedbackОтправьте отзыв команде Autohand
--settingsНастройте параметры Autohand (аналогично /settings в интерактивном режиме)

Рабочая область и каталоги

ФлагОписание
--add-dir <path...>Добавить дополнительные каталоги в область рабочей области (можно использовать несколько раз)

Режимы работы

ФлагОписание
--mode <mode>Режим выполнения: интерактивный (по умолчанию), rpc или acp
--acpСокращение для --mode acp (протокол агента-клиента через stdio)
--teammate-mode <mode>Режим отображения команды: автоматический, в процессе или tmux

Пользовательский интерфейс и язык

ФлагОписание
--display-language <locale>Установить язык отображения (например, en, id, zh-cn, fr, de, ja)
--search-engine <provider>Установить поставщика веб-поиска (google, Brave, Duckduckgo, Parallel)
--cc, --context-compactВключить сжатие контекста (по умолчанию: включено)
--no-cc, --no-context-compactОтключить сжатие контекста

Интеграция с Chrome

ФлагОписание
--chromeВключить интеграцию с браузером Chrome (аналогично /chrome)
--no-chromeОтключить интеграцию браузера Chrome

Системная подсказка

ФлагОписание
--sys-prompt <value>Заменить всю системную подсказку (встроенная строка или путь к файлу)
--append-sys-prompt <value>Добавить к системному приглашению (встроенная строка или путь к файлу)
--system-prompt <value>Заменить всю системную подсказку (встроенная строка или путь к файлу)
--system-prompt-file <path>Заменить всю системную подсказку содержимым файла
--append-system-prompt <value>Добавить к системному приглашению (встроенная строка или путь к файлу)
--append-system-prompt-file <path>Добавить содержимое файла в системную подсказку
--mcp-config <path>Загрузить явный файл конфигурации MCP
--agents <json|path>Загрузить явные встроенные агенты в формате JSON или каталог явных агентов
--plugin-dir <path>Загрузить явный каталог плагинов/мета-инструментов

Команды переключения эксперимента

КомандаОписание
autohand experiments listПеречислите идентификаторы локальных и удаленных функций, источник, этап жизненного цикла и состояние
autohand experiments status <feature>Показать один переключатель функций, путь конфигурации или удаленные метаданные, а также состояние
autohand experiments refreshЗагрузите флаги удаленных функций из API Autohand
autohand experiments enable <feature>Включить переключение функций на основе конфигурации
autohand experiments disable <feature>Отключить переключатель функций, поддерживаемый конфигурацией

Флаги удаленных функций извлекаются из /v1/feature-flags/evaluate, кэшируются в ~/.autohand/feature-flags.json и обновляются после истечения срока жизни, предоставленного API. Используйте features.environment для выбора среды удаленных флагов и features.remoteOverrides для локального отказа от удаленных флагов, переопределяемых пользователем.

usage_v2 — это экспериментальный переключатель функций для информационной панели /usage и расширенной вкладки «Использование» /status. Включите его с помощью autohand experiments enable usage_v2.

token_usage_status — это экспериментальный переключатель функции (путь конфигурации features.tokenUsageStatus, по умолчанию выключен), который показывает использование токенов в режиме реального времени в строке рабочего состояния — совокупные токены вверх () и вниз (), а также занятость контекстного окна, например ↑15.7k ↓3.2k · context: 6.0% (15.7k/262.1k). Контекстное окно разрешается для каждой модели для всех поставщиков. Включите его с помощью autohand experiments enable token_usage_status.


Слэш-команды

Autohand предоставляет богатый набор косых команд для интерактивного использования. Введите / в REPL, чтобы увидеть предложения.

Управление сеансами

КомандаОписание
/quitВыйти из текущего сеанса
/exitВыйти из текущего сеанса
/newНачать новый разговор (с извлечением памяти)
/clearЧеткий разговор с автоматическим извлечением памяти
/sessionПоказать детали текущего сеанса
/sessionsСписок прошлых сессий
/resumeВозобновить предыдущую сессию
/historyПросмотр истории сеансов с нумерацией страниц
/undoОтменить изменения git и последний ход
/exportЭкспортировать сессию в уценку/JSON/HTML
/shareПоделиться текущей сессией
/statusПоказать статус сеанса
/usageПоказать модель, поставщика, контекст и ограничения на использование

Модель и поставщик

КомандаОписание
/modelПереключить или настроить модель LLM
/ccСжать контекст вручную

Настройка проекта

КомандаОписание
/initСоздать файл AGENTS.md в текущем каталоге
/setupЗапустите мастер установки, чтобы настроить Autohand
/add-dirДобавить каталоги в область рабочей области

Агенты и команды

КомандаОписание
/agentsСписок доступных субагентов
/agents-newСоздайте нового агента с помощью мастера
/squadОткрытие и управление автономной средой выполнения Autohand Squad
/teamУправление командой для параллельной работы
/tasksУправление задачами в команде
/messageОтправить сообщение товарищу по команде

Навыки

КомандаОписание
/skillsСписок навыков и управление ими
/skills-newСоздать новый навык
/learnИзучите и установите рекомендуемые навыки

Память и настройки

КомандаОписание
/memoryПросмотр и управление сохраненными воспоминаниями
/settingsНастройте параметры Autohand
/statuslineНастройка полей строки состояния композитора
/experimentsПереключить экспериментальные переключатели функций
/syncСинхронизация настроек между устройствами
/importИмпортируйте сеансы, настройки, MCP, память, навыки и перехваты из поддерживаемых агентов

Разрешения и хуки

КомандаОписание
/permissionsУправление разрешениями для инструментов
/hooksУправление перехватчиками жизненного цикла

Аутентификация

КомандаОписание
/loginАутентификация с помощью Autohand API
/logoutВыйти из учетной записи Autohand

Инструменты и утилиты

КомандаОписание
/searchПоиск в Интернете
/formattersСписок доступных форматировщиков кода
/lintСписок доступных линтеров кода
/completionСоздание сценариев завершения оболочки
/planСоздать план реализации
/reviewВыполнить проверку кода
/pr-reviewПросмотр запроса на извлечение

Интеграция с IDE

КомандаОписание
/ideОбнаружение и подключение к работающим IDE

MCP (протокол контекста модели)

КомандаОписание
/mcpИнтерактивный менеджер сервера MCP

Автоматизация

КомандаОписание
/automodeЗапустить режим автономного кодирования
/repeatРасписание повторяющихся заданий
/yoloПереключить режим yolo (инструменты автоматического одобрения)

Интеграция с Chrome

КомандаОписание
/chromeВключить интеграцию с браузером Chrome

Пользовательский интерфейс и дисплей

КомандаОписание
/helpОтображение доступных косых команд и подсказок
/aboutПоказать информацию о Autohand
/themeИзменить цветовую тему
/languageИзменить язык отображения
/feedbackОтправьте отзыв команде Autohand

Настройка системных подсказок

Autohand позволяет вам настроить системную подсказку, используемую AI-агентом. Это полезно для специализированных рабочих процессов, пользовательских инструкций или интеграции с другими системами.

Флаги CLI

ФлагОписание
--sys-prompt <value>Заменить всю системную подсказку
--append-sys-prompt <value>Добавить содержимое в системную подсказку по умолчанию

Оба флага принимают либо:

  • Встроенная строка: прямое текстовое содержимое.
  • Путь к файлу: путь к файлу, содержащему приглашение (определяется автоматически).

Определение пути к файлу

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

– Начинается с ./, ../, / или ~/.

  • Начинается с буквы диска Windows (например, C:\).
  • Заканчивается на .txt, .md или .prompt.
  • Содержит разделители путей без пробелов.

В противном случае оно рассматривается как встроенная строка.

--sys-prompt (Полная замена)

Если это предусмотрено, это полностью заменяет системное приглашение по умолчанию. Агент НЕ будет загружать:

  • Инструкции по умолчанию Autohand
  • Инструкция проекта AGENTS.md
  • Память пользователя/проекта
  • Активные навыки
# Inline string
autohand --sys-prompt "You are a Python expert. Be concise." --prompt "Write hello world"

# From file
autohand --sys-prompt ./custom-prompt.txt --prompt "Explain this code"

# Home directory
autohand --sys-prompt ~/.autohand/prompts/python-expert.md --prompt "Debug this function"

Пример файла пользовательского приглашения (custom-prompt.txt):

You are a specialized Python debugging assistant.

Rules:
- Focus only on Python code
- Always explain the root cause
- Suggest fixes with code examples
- Be concise and direct

--append-sys-prompt (Добавить к значению по умолчанию)

Если это предусмотрено, это добавляет содержимое к полной системной подсказке по умолчанию. Агент все равно будет загружаться:

  • Инструкции по умолчанию Autohand
  • Инструкция проекта AGENTS.md
  • Память пользователя/проекта
  • Активные навыки

Добавленный контент добавляется в самом конце.

# Inline string
autohand --append-sys-prompt "Always use TypeScript instead of JavaScript" --prompt "Create a function"

# From file
autohand --append-sys-prompt ./team-guidelines.md --prompt "Add error handling"

Пример файла добавления (team-guidelines.md):

## Team Guidelines

- Use 2-space indentation
- Prefer functional patterns
- Add JSDoc comments to public APIs
- Run tests before committing

Приоритет

Когда указаны оба флага:

  1. --sys-prompt имеет полный приоритет.
  2. --append-sys-prompt игнорируется.
# --append-sys-prompt is ignored in this case
autohand --sys-prompt "Custom only" --append-sys-prompt "This is ignored"

Варианты использования

Вариант использованияРекомендуемый флаг
Персонализированный агент--sys-prompt
Минимальные инструкции--sys-prompt
Добавить правила для команды--append-sys-prompt
Добавить соглашения проекта--append-sys-prompt
Интеграция с внешними системами--sys-prompt
Специализированная отладка--sys-prompt

Обработка ошибок

СценарийПоведение
Пустое значениеОшибка
Файл не найденРассматривается как встроенная строка
Пустой файлОшибка
Файл > 1 МБОшибка
Разрешение отклоненоОшибка
Путь к каталогуОшибка

Примеры

# Python expert mode
autohand --sys-prompt "You are a Python expert. Only write Python code." \
  --prompt "Create a web scraper"

# TypeScript enforcement
autohand --append-sys-prompt "Always use TypeScript, never JavaScript." \
  --prompt "Create a REST API"

# CI/CD integration (non-interactive)
autohand --sys-prompt ./ci-prompt.txt \
  --prompt "Fix the failing tests" \
  --unrestricted \
  --patch

# Custom team workflow
autohand --append-sys-prompt ~/.company/coding-standards.md \
  --prompt "Refactor this module"

Поддержка нескольких каталогов

Autohand может работать с несколькими каталогами за пределами основного рабочего пространства. Это полезно, когда ваш проект имеет зависимости, общие библиотеки или связанные проекты в разных каталогах.

Флаг CLI

Используйте --add-dir для добавления дополнительных каталогов (можно использовать несколько раз):

# Add a single additional directory
autohand --add-dir /path/to/shared-lib

# Add multiple directories
autohand --add-dir /path/to/lib1 --add-dir /path/to/lib2

# With unrestricted mode (auto-approve writes to all directories)
autohand --add-dir /path/to/shared-lib --unrestricted

Интерактивная команда

Используйте /add-dir во время интерактивного сеанса:

/add-dir              # Show current directories
/add-dir /path/to/dir # Add a new directory

Ограничения безопасности

Невозможно добавить следующие каталоги:

  • Домашний каталог (~ или $HOME)
  • Корневой каталог (/)
  • Системные каталоги (/etc, /var, /usr, /bin, /sbin)
  • Системные каталоги Windows (C:\Windows, C:\Program Files)
  • Каталоги пользователей Windows (C:\Users\username)
  • WSL монтирует Windows (/mnt/c, /mnt/c/Windows)