docs(readme): убраны эмодзи и машинная типографика

- Зачем:
  - README писался моделью, и в нем остались знаки, которых нет на
    клавиатуре: их некому было подставить, потому что markdown правят
    в редакторе кода, а не в Word с автозаменой.
  - декоративные эмодзи в заголовках в русском тексте вне переписки
    не ставят вовсе, это самый однозначный след генерации.
- Что:
  - сняты эмодзи с шести заголовков и из комментария в блоке кода.
  - 21 длинное тире заменено на дефис, 3 пары елочек на прямые кавычки,
    7 стрелок на ->, буква "е" приведена к авторскому стилю в 14 словах.
  - в разделе "Дизайн-решения" отглагольные существительные развернуты
    в глаголы: "форсирование и изменение может сломать" стало
    "если форсировать и менять, можно сломать".
- Проверка:
  - якорных ссылок на заголовки ни внутри README, ни снаружи нет,
    переименование ничего не ломает.
  - блоки кода не тронуты: ни одно тире не попало внутрь фенсов,
    10 фенсов и 62 строки таблиц на месте.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Dmitriy DementievandClaude committed 2026-08-21 11:18:28 +03:00
1 parent 31f7fddcde
commit f7e3f0e889
1 file changed
+41 -41
+41 -41
View File
@@ -2,7 +2,7 @@
Персональные конфигурации для Linux/WSL (stow) и Windows (chezmoi).
## 🚀 Quick start
## Quick start
### Linux / WSL
@@ -19,13 +19,13 @@ cd ~/dotfiles
```powershell
winget install --id Microsoft.PowerShell
winget install twpayne.chezmoi
# ⚠️ Перезапустить терминал, чтобы pwsh и chezmoi попали в PATH
# Перезапустить терминал, чтобы pwsh и chezmoi попали в PATH
chezmoi -S "$HOME\dotfiles\chezmoi" apply
```
Chezmoi использует отдельный source dir `chezmoi/` внутри этого репозитория, не трогая stow/install.sh workflow.
## 🔧 Требования
## Требования
### Linux / WSL
@@ -35,13 +35,13 @@ Chezmoi использует отдельный source dir `chezmoi/` внутр
### Windows
- Windows 10/11 + Developer Mode (Settings → System → For developers)
- Windows 10/11 + Developer Mode (Settings -> System -> For developers)
- PowerShell 7.x
- [chezmoi](https://www.chezmoi.io/)
> `Windows PowerShell 5.1` остаётся legacy-режимом совместимости — не форсируется в UTF-8 и не тюнится.
> `Windows PowerShell 5.1` остается legacy-режимом совместимости - не форсируется в UTF-8 и не тюнится.
## 📦 Что включено
## Что включено
### Linux / WSL (stow)
@@ -52,7 +52,7 @@ Chezmoi использует отдельный source dir `chezmoi/` внутр
| `tmux` | Два префикса (`Ctrl+b`, `Ctrl+Space`), vi-режим, split по `\|` / `-` |
| `vim` | Минимальный .vimrc без плагинов, 2 пробела, leader = `Space` |
| `wezterm` | Общий для Linux и Windows конфиг: одинаковые оформление и горячие клавиши |
| `kitty` | `kitty.conf` и тема; `~/.config/kitty` остаётся настоящим каталогом, чтобы файлы kitty не попадали в репозиторий |
| `kitty` | `kitty.conf` и тема; `~/.config/kitty` остается настоящим каталогом, чтобы файлы kitty не попадали в репозиторий |
| `vscode` | `server-env-setup` для VS Code Server в WSL: секреты + авто-прокси |
| `chatgpt` | Отдельный ярлык `ChatGPT Proxy` с запретом прямого запуска при ошибке |
@@ -60,14 +60,14 @@ Chezmoi использует отдельный source dir `chezmoi/` внутр
### 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` для локальных добавок
- **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-инструменты (кросс-платформа)
@@ -76,12 +76,12 @@ Chezmoi использует отдельный source dir `chezmoi/` внутр
| Инструмент | Что настраивается |
|------------|-------------------|
| **Agents** | Каноничное хранилище скиллов: `~/.agents/skills/<name>/SKILL.md` |
| **Claude** | `~/.claude/skills` → симлинк на agents; `settings.local.json` → симлинк на репозиторий (базовые permissions + statusLine); `statusline-command.sh` → копия из репозитория; `settings.json` — управляется Claude Code |
| **[Opencode](https://github.com/anomalyco/opencode)** | MCP-серверы (context7, web-reader, playwright и др.), `~/.config/opencode/skills` → симлинк на agents |
| **Codex** | `~/.codex/skills/` → симлинки на agents |
| **Claude** | `~/.claude/skills` -> симлинк на agents; `settings.local.json` -> симлинк на репозиторий (базовые permissions + statusLine); `statusline-command.sh` -> копия из репозитория; `settings.json` - управляется Claude Code |
| **[Opencode](https://github.com/anomalyco/opencode)** | MCP-серверы (context7, web-reader, playwright и др.), `~/.config/opencode/skills` -> симлинк на agents |
| **Codex** | `~/.codex/skills/` -> симлинки на agents |
| **Gemini** | Политики для CLI: pre-approved readonly команды |
## ⚙️ Настройка
## Настройка
### Секреты (`.env.secrets`)
@@ -89,7 +89,7 @@ Chezmoi использует отдельный source dir `chezmoi/` внутр
cp bash/.env.secrets.example ~/.env.secrets
```
Содержимое — API-ключи для AI-инструментов:
Содержимое - API-ключи для AI-инструментов:
```bash
export CONTEXT7_API_KEY="..." # https://context7.com
@@ -108,7 +108,7 @@ Linux/Bash-интерфейс `proxy-client` поддерживает внешн
[Установка, выбор режима, WSL и ежедневное использование](proxy-client/README.md)
описаны рядом с пакетом. Windows PowerShell и ярлык `Codex Proxy` сохраняют
прежнюю интеграцию с `hproxy.local:12334`. Ярлык запускает упакованное
приложение через системный идентификатор и передаёт параметры Chromium
приложение через системный идентификатор и передает параметры Chromium
`--proxy-server` и `--proxy-bypass-list`. Сам Codex и его дочерние процессы
читают общие proxy-переменные из `~/.codex/.env`; пользовательское окружение
Windows не меняется. Если Codex уже запущен, его нужно полностью закрыть перед
@@ -116,7 +116,7 @@ Windows не меняется. Если Codex уже запущен, его ну
`Claude Proxy` поддерживает как обычную установку в
`%LOCALAPPDATA%\AnthropicClaude`, так и пакет из Microsoft Store. В обоих
случаях он передаёт параметры Electron `--proxy-server` и
случаях он передает параметры Electron `--proxy-server` и
`--proxy-bypass-list`, чтобы прокси применялся ко всему трафику Claude Desktop.
Ярлык использует скрытый промежуточный запускатель, поэтому Claude не открывает
и не удерживает окно Windows Terminal.
@@ -124,14 +124,14 @@ Windows не меняется. Если Codex уже запущен, его ну
запуском через `Claude Proxy`.
Список хостов, которые идут мимо прокси, продублирован в профилях Codex,
PowerShell и VS Code: одного общего файла у Windows и WSL нет. Эталон —
PowerShell и VS Code: одного общего файла у Windows и WSL нет. Эталон -
`DEFAULT_NO_PROXY_EXTRA` в `proxy-client/.local/bin/proxy-client`; меняя его,
поправь и копии. Расхождение ловит `tests/test_proxy_env_sync.py` — раньше
копии разъезжались, и один и тот же хост то шёл мимо прокси, то нет.
поправь и копии. Расхождение ловит `tests/test_proxy_env_sync.py` - раньше
копии разъезжались, и один и тот же хост то шел мимо прокси, то нет.
На Linux Stow-пакет `chatgpt` добавляет отдельный пользовательский ярлык
`ChatGPT Proxy`. Штатный `ChatGPT` остаётся прямым. Прокси-ярлык получает
активные настройки от `proxy-client`, передаёт Chromium явные параметры прокси
`ChatGPT Proxy`. Штатный `ChatGPT` остается прямым. Прокси-ярлык получает
активные настройки от `proxy-client`, передает Chromium явные параметры прокси
и сохраняет proxy-переменные для дочерних процессов. Повторный запуск поднимает
окно уже работающего проксированного экземпляра. Если ChatGPT открыт напрямую
или прокси недоступен, новый режим не подмешивается: GNOME показывает
@@ -148,13 +148,13 @@ PowerShell и VS Code: одного общего файла у Windows и WSL н
| `core.eol` | `lf` | Дефолт ближе к Linux/macOS |
| `core.quotepath` | `false` | Кириллица в путях читаема |
| `core.longpaths` | `true` | Длинные пути на Windows |
| `fetch.prune` | `true` | Убирать удалённые ветки |
| `fetch.prune` | `true` | Убирать удаленные ветки |
| `pull.ff` | `only` | Защита от случайных merge commit |
| `init.defaultBranch` | `main` | — |
| `init.defaultBranch` | `main` | - |
Персональные настройки (`user.name`, `user.email`, `core.editor`, `core.sshCommand`) живут в `~/.gitconfig.local`.
На Windows chezmoi при первом apply мигрирует существующий `~/.gitconfig` в `~/.gitconfig.local` и подставляет managed baseline. На Linux baseline задаётся вручную или через скрипты.
На Windows chezmoi при первом apply мигрирует существующий `~/.gitconfig` в `~/.gitconfig.local` и подставляет managed baseline. На Linux baseline задается вручную или через скрипты.
Проверка: `git config --global --includes --list --show-origin`.
@@ -166,7 +166,7 @@ PowerShell и VS Code: одного общего файла у Windows и WSL н
*.cmd text eol=crlf
```
## 📖 Справочник
## Справочник
### Bash-функции (`~/.config/proxy-client/shell.bash`)
@@ -176,7 +176,7 @@ PowerShell и VS Code: одного общего файла у Windows и WSL н
| `proxy_off` | Очищает proxy-переменные |
| `pclaude` / `pcodex` | Запуск Claude/Codex CLI через прокси с fail-fast pre-flight |
| `myip` | Показывает текущий внешний IP |
| `update_hproxy` | Остаётся в `~/.bash_functions` и обновляет WSL NAT-алиас |
| `update_hproxy` | Остается в `~/.bash_functions` и обновляет WSL NAT-алиас |
### PowerShell-функции (`~/.config/powershell/profile.ps1`)
@@ -188,9 +188,9 @@ PowerShell и VS Code: одного общего файла у Windows и WSL н
| `myip` | Показывает текущий внешний IP |
| `Reload-Profile` | Перечитывает профиль без перезапуска сессии |
| `which` | `Get-Command -All` по имени |
| `touch` | Создаёт файл или обновляет `LastWriteTime` |
| `mkcd` | Создаёт директорию и переходит в неё |
| `open` | `Invoke-Item` — открывает путь |
| `touch` | Создает файл или обновляет `LastWriteTime` |
| `mkcd` | Создает директорию и переходит в нее |
| `open` | `Invoke-Item` - открывает путь |
| `croot` | Переходит в корень текущего Git-репозитория |
| `wt-here` | Новое окно Windows Terminal в текущей директории |
| `wt-tab-here` | Новая вкладка в текущей директории |
@@ -206,20 +206,20 @@ PowerShell и VS Code: одного общего файла у Windows и WSL н
| `~/.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-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 |
| `~/.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 — режим совместимости.
Если форсировать UTF-8 и менять профиль PS 5.1, можно сломать старые скрипты, `.bat`/`.cmd` и консольные утилиты. PS 7 - основной shell, PS 5.1 - режим совместимости.
**Почему Claude `settings.local.json` — симлинк, а `settings.json` — нет?**
Claude Code перезаписывает `settings.json` при каждом «always allow» — этот файл принадлежит Claude Code. Базовые permissions и statusLine живут в `settings.local.json`, который Claude Code только читает и мержит с `settings.json`. Симлинк из `~/.claude/settings.local.json` на файл в репозитории безопасен. Машинно-специфичные настройки (`model`, `effortLevel`) — в `settings.json`, управляются через Claude Code.
**Почему Claude `settings.local.json` - симлинк, а `settings.json` - нет?**
Claude Code перезаписывает `settings.json` при каждом "always allow" - этот файл принадлежит Claude Code. Базовые permissions и statusLine живут в `settings.local.json`, который Claude Code только читает и мержит с `settings.json`. Симлинк из `~/.claude/settings.local.json` на файл в репозитории безопасен. Машинно-специфичные настройки (`model`, `effortLevel`) - в `settings.json`, управляются через Claude Code.