Files
ddadminandClaude Opus 5.5 e36a756bed refactor(proxy-client): шаблоны прокси для агентов копируются вручную
- Зачем: прокси для агента — выбор конкретной машины. Автоматическая
  правка ~/.codex/.env и ~/.claude/settings.json оказалась слишком
  навязчивой.
- Что: шаблоны перенесены в proxy-client/.config/proxy-client/examples/
  (codex.env, claude-settings.json) и попадают на машину вместе с
  остальными примерами. install.sh больше не трогает настройки Codex и
  Claude, его тесты на это удалены. Инструкция по копированию — в README
  proxy-client.
- Проверка: tests/test_install.sh и tests/test_proxy_client_install.sh
  проходят.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 18:31:35 +02:00

15 KiB
Raw Permalink Blame History

Dotfiles

Персональные конфигурации для Linux/WSL (stow) и Windows (chezmoi).

Quick start

Linux / WSL

git clone https://github.com/ddmitry/dotfiles ~/dotfiles
cd ~/dotfiles
./install.sh

install.sh применяет stow-пакеты, настраивает Claude/Opencode, подключает ~/.bash_custom в ~/.bashrc и в WSL предлагает настроить hproxy.local.

Windows

winget install --id Microsoft.PowerShell
winget install twpayne.chezmoi
# Перезапустить терминал, чтобы pwsh и chezmoi попали в PATH
chezmoi -S "$HOME\dotfiles\chezmoi" apply

Chezmoi использует отдельный source dir chezmoi/ внутри этого репозитория, не трогая stow/install.sh workflow.

Требования

Linux / WSL

  • Ubuntu / Debian
  • GNU stow
  • Bash 4.0+, Tmux 2.0+, Vim 8.0+

Windows

  • Windows 10/11 + Developer Mode (Settings -> System -> For developers)
  • PowerShell 7.x
  • chezmoi

Windows PowerShell 5.1 остается legacy-режимом совместимости - не форсируется в UTF-8 и не тюнится.

Что включено

Linux / WSL (stow)

Пакет Что делает
bash Кастомный prompt, общие функции, подгрузка секретов
proxy-client Переносимый CLI и Bash-команды для явного запуска через прокси
tmux Два префикса (Ctrl+b, Ctrl+Space), vi-режим, split по | / -
vim Минимальный .vimrc без плагинов, 2 пробела, leader = Space
wezterm Общий для Linux и Windows конфиг: одинаковые оформление и горячие клавиши
kitty kitty.conf и тема; ~/.config/kitty остается настоящим каталогом, чтобы файлы kitty не попадали в репозиторий
vscode server-env-setup для VS Code Server в WSL: секреты + авто-прокси
chatgpt Отдельный ярлык ChatGPT Proxy с запретом прямого запуска при ошибке

install.sh дополнительно настраивает opencode (MCP-конфиг), claude (симлинк ~/.claude/skills на общие скиллы) и подключает bash_custom.

Windows (chezmoi)

  • PowerShell 7 profile - live-stub в ~/Documents/PowerShell/ загружает managed profile из ~/.config/powershell/profile.ps1
  • Git baseline - ~/.gitconfig с managed настройками, ~/.gitconfig.local для персональных overrides
  • Windows Terminal - идемпотентный скрипт: PS7 по умолчанию, PS 5.1 как legacy, Azure Cloud Shell скрыт
  • WezTerm - ~/.wezterm.lua как живая ссылка на общий конфиг для Windows и Linux
  • UTF-8 - chcp 65001 + Console.InputEncoding/OutputEncoding только для pwsh 7, не для PS 5.1
  • Codex Proxy shortcut - Start Menu ярлык для запуска Codex GUI с proxy-переменными
  • Claude Proxy - ярлык меню "Пуск" для запуска Claude Desktop с переменными прокси
  • Extension points - ~/.config/powershell/profile.extra.ps1 и profile.d/*.ps1 для локальных добавок

AI-инструменты (кросс-платформа)

Общие скиллы живут в agents/.agents/skills/ и расшариваются через симлинки.

Инструмент Что настраивается
Agents Каноничное хранилище скиллов: ~/.agents/skills/<name>/SKILL.md
Claude ~/.claude/skills -> симлинк на agents; настройки (settings.json, settings.local.json) - управляются Claude Code на машине
Opencode MCP-серверы (context7, web-reader, playwright и др.); скиллы opencode сам читает из ~/.agents/skills
Codex ~/.codex - обычный каталог, управляется Codex; скиллы - из общего хранилища agents
Gemini Политики для CLI: pre-approved readonly команды

Настройка

Секреты (.env.secrets)

cp bash/.env.secrets.example ~/.env.secrets

Содержимое - API-ключи для AI-инструментов:

export CONTEXT7_API_KEY="..."    # https://context7.com
export ZAI_API_KEY="..."         # https://z.ai

Файл подгружается при старте bash и VS Code Server. Не трекается в git.

Прокси (proxy-client)

Linux/Bash-интерфейс proxy-client поддерживает внешний прокси и управляемый пользовательский Xray. Без машинного конфига используется прежний Hiddify на hproxy.local:12334; автоматического запуска Xray и переключения между режимами нет.

Установка, выбор режима, WSL и ежедневное использование описаны рядом с пакетом. Windows PowerShell и ярлык Codex Proxy сохраняют прежнюю интеграцию с hproxy.local:12334. Ярлык запускает упакованное приложение через системный идентификатор и передает параметры Chromium --proxy-server и --proxy-bypass-list. Сам Codex и его дочерние процессы читают общие proxy-переменные из ~/.codex/.env; пользовательское окружение Windows не меняется. Если Codex уже запущен, его нужно полностью закрыть перед запуском через Codex Proxy.

Codex и Claude Code могут брать прокси из своих настроек, независимо от того, откуда их запустили. Шаблоны лежат в ~/.config/proxy-client/examples/ и копируются вручную; установщик настройки агентов не трогает. Подробнее — в README proxy-client.

Claude Proxy поддерживает как обычную установку в %LOCALAPPDATA%\AnthropicClaude, так и пакет из Microsoft Store. В обоих случаях он передает параметры Electron --proxy-server и --proxy-bypass-list, чтобы прокси применялся ко всему трафику Claude Desktop. Ярлык использует скрытый промежуточный запускатель, поэтому Claude не открывает и не удерживает окно Windows Terminal. Если Claude уже запущен обычным способом, его нужно полностью закрыть перед запуском через Claude Proxy.

Список хостов, которые идут мимо прокси, продублирован в профилях Codex, PowerShell и VS Code: одного общего файла у Windows и WSL нет. Эталон - DEFAULT_NO_PROXY_EXTRA в proxy-client/.local/bin/proxy-client; меняя его, поправь и копии. Расхождение ловит tests/test_proxy_env_sync.py - раньше копии разъезжались, и один и тот же хост то шел мимо прокси, то нет.

На Linux Stow-пакет chatgpt добавляет отдельный пользовательский ярлык ChatGPT Proxy. Штатный ChatGPT остается прямым. Прокси-ярлык получает активные настройки от proxy-client, передает Chromium явные параметры прокси и сохраняет proxy-переменные для дочерних процессов. Повторный запуск поднимает окно уже работающего проксированного экземпляра. Если ChatGPT открыт напрямую или прокси недоступен, новый режим не подмешивается: GNOME показывает уведомление с инструкцией. Файлы Debian-пакета не меняются, поэтому настройка переживает его обновление.

Git baseline

На всех платформах фиксируются настройки для предсказуемого поведения:

Ключ Значение Зачем
core.autocrlf false Не переписывать line endings
core.eol lf Дефолт ближе к Linux/macOS
core.quotepath false Кириллица в путях читаема
core.longpaths true Длинные пути на Windows
fetch.prune true Убирать удаленные ветки
pull.ff only Защита от случайных merge commit
init.defaultBranch main -

Персональные настройки (user.name, user.email, core.editor, core.sshCommand) живут в ~/.gitconfig.local.

На Windows chezmoi при первом apply мигрирует существующий ~/.gitconfig в ~/.gitconfig.local и подставляет managed baseline. На Linux baseline задается вручную или через скрипты.

Проверка: git config --global --includes --list --show-origin.

Для кроссплатформенных репозиториев рекомендуется .gitattributes:

* text=auto eol=lf
*.bat text eol=crlf
*.cmd text eol=crlf

Справочник

Bash-функции (~/.config/proxy-client/shell.bash)

Функция Описание
proxy_on Проверяет настроенный прокси и атомарно включает восемь переменных
proxy_off Очищает proxy-переменные
pclaude / pcodex Запуск Claude/Codex CLI через прокси с fail-fast pre-flight
myip Показывает текущий внешний IP
update_hproxy Остается в ~/.bash_functions и обновляет WSL NAT-алиас

PowerShell-функции (~/.config/powershell/profile.ps1)

Функция Описание
proxy_on Включает HTTP/HTTPS/SOCKS5 прокси через hproxy.local:12334
proxy_off Очищает proxy-переменные
pclaude / pcodex Запуск Claude/Codex CLI через прокси с fail-fast pre-flight
myip Показывает текущий внешний IP
Reload-Profile Перечитывает профиль без перезапуска сессии
which Get-Command -All по имени
touch Создает файл или обновляет LastWriteTime
mkcd Создает директорию и переходит в нее
open Invoke-Item - открывает путь
croot Переходит в корень текущего Git-репозитория
wt-here Новое окно Windows Terminal в текущей директории
wt-tab-here Новая вкладка в текущей директории
wt-split-here Split-pane в текущей директории

Точки расширения

Файл Назначение
~/.env.secrets API-ключи, подгружается bash и VS Code Server
~/.codex/.env Proxy-переменные для Codex CLI, Codex Desktop и их дочерних процессов. Перекрывают унаследованное окружение. Шаблон: ~/.config/proxy-client/examples/codex.env
~/.bash_aliases Персональные алиасы bash
~/.gitconfig.local Персональные Git-настройки (user.name, core.editor и т.д.)
~/.local/bin/start-claude-proxy.ps1 Скрипт запуска Claude Desktop для Windows с переменными прокси и параметрами Electron
~/.local/bin/start-claude-proxy.vbs Скрытый запуск PowerShell-скрипта без привязки Claude к видимому окну терминала
~/.local/bin/start-codex-proxy.ps1 Запуск Codex для Windows через системный идентификатор; прокси Electron задается параметрами, а codex.exe читает ~/.codex/.env
~/.local/bin/start-chatgpt-proxy Запуск Linux-приложения ChatGPT через активную настройку proxy-client
~/.local/share/applications/chatgpt-proxy.desktop Отдельный Linux-ярлык ChatGPT Proxy, не подменяющий штатный ChatGPT
~/.config/powershell/profile.extra.ps1 Локальные дополнения к pwsh-профилю
~/.config/powershell/profile.d/*.ps1 Фрагменты, загружаемые по алфавиту
~/.claude/settings.json Управляется Claude Code: model, effortLevel, "always allow" permissions

Дизайн-решения

Почему stow на Linux + chezmoi на Windows? stow проще и покрывает весь Linux/WSL workflow. chezmoi нужен на Windows, где stow недоступен и нужны run-скрипты (миграция .gitconfig, настройка Windows Terminal). Два инструмента живут рядом и не мешают друг другу: chezmoi использует отдельный source dir chezmoi/, а .chezmoiignore исключает Linux-файлы на Windows.

Почему Windows PowerShell 5.1 не трогается? Если форсировать UTF-8 и менять профиль PS 5.1, можно сломать старые скрипты, .bat/.cmd и консольные утилиты. PS 7 - основной shell, PS 5.1 - режим совместимости.

Почему у Claude в репозитории нет настроек? Все настройки Claude Code (settings.json, settings.local.json) принадлежат самому Claude Code: он перезаписывает их при каждом "always allow" и при смене модели. Список разрешений не ведём вручную - работаем с autoapprove. Из репозитория линкуются только скиллы. Машинно-специфичные настройки (model, effortLevel) - в settings.json, управляются через Claude Code.