Update AI setup rules and documentation

This commit is contained in:
2026-06-01 16:56:26 +00:00
parent 7814fdd5b2
commit b1c585a34c
3 changed files with 185 additions and 50 deletions

127
README.md
View File

@@ -1,41 +1,122 @@
# AI Launcher
# AI Setup
Единый набор инструментов для установки и запуска популярных ИИ-помощников для кодинга в терминале.
Набор shell-лаунчеров для локальной установки и запуска нескольких AI coding CLI из единой точки входа.
Скрипт `ai-setup.sh` автоматически скачивает, настраивает и подготавливает для работы агентов от разных провайдеров (Anthropic, OpenAI, DeepSeek, Moonshot/Kimi и Google Gemini).
Главный скрипт - `ai-setup.sh`. Он настраивает пользовательские директории, обновляет глобальные правила агентов и полностью перегенерирует standalone-скрипты в `~/.local/bin`.
## Что реально устанавливается и генерируется
`ai-setup.sh` работает с такими путями:
- `~/.local/bin` - standalone-лаунчеры и вспомогательные скрипты.
- `~/.config/ai-setup` - сохранённые ключи и глобальные правила.
- `~/.npm-global` - пользовательский npm prefix.
После запуска генерируются или обновляются:
- `~/.local/bin/ai-claude`
- `~/.local/bin/ai-gpt`
- `~/.local/bin/ai-deepseek`
- `~/.local/bin/ai-kimi`
- `~/.local/bin/ai-gemini`
- `~/.local/bin/ai-api-helpers.sh`
- `~/.local/bin/claude-gpt-effort-proxy.py`
Все генерируемые standalone-скрипты полностью перезаписываются текущей эталонной версией из `ai-setup.sh`. Старое содержимое не сливается и не дописывается.
Также скрипт при отсутствии скачивает `~/.local/bin/claude-code-proxy`, но текущий `ai-gpt` запускает нативный Codex CLI и не использует старую proxy-логику через `ANTHROPIC_BASE_URL`.
## Установка
Перейдите в папку с проектом и запустите скрипт:
Запускать от обычного пользователя, не через `sudo`:
```bash
bash ai-setup.sh
```
## Доступные ИИ-агенты
Скрипт прямо запрещает запуск от root. При этом, если Node.js не найден, он может попытаться установить Node.js через `apt-get` или `dnf` и тогда попросит `sudo` уже внутри этого шага.
После установки вам будут доступны независимые команды:
После установки, если shell ещё не видит новые команды:
* `ai-claude` — оригинальный Claude Code (от Anthropic)
* `ai-gpt` — OpenAI Codex
* `ai-deepseek` — DeepSeek (проверяет и сохраняет ваш API-ключ)
* `ai-kimi` — Kimi K2.6 через Artemox API
* `ai-gemini` — Gemini (через Antigravity CLI)
```bash
exec bash
```
> **💡 Совет по Gemini:** Для `ai-gemini` настоятельно рекомендуется использовать отдельный Google-аккаунт, чтобы избежать потенциальных блокировок основного аккаунта.
## Требования
## Особенности
- `bash`
- `curl`
- `python3`
- Node.js/npm для npm-глобальных инструментов
* **Безопасность:** Скрипт не использует `sudo`. Все устанавливается локально в директорию пользователя (`~/.npm-global` и `~/.local/bin`).
* **Ключи доступа:** API ключи (например, для DeepSeek) хранятся в `~/.config/claude-launcher/` с безопасными правами доступа (только для чтения пользователем).
* **Автоматизация:** Зависимости (Node.js) устанавливаются автоматически при их отсутствии.
Если Node.js отсутствует, скрипт пытается поставить его автоматически для систем с `apt-get` или `dnf`. Для остальных систем Node.js нужно поставить вручную.
## Глобальные правила
## Команды
Данные правила применяются ко **всем агентам** (Claude, GPT, DeepSeek, Kimi, Gemini), работающим в этом репозитории:
- `ai-claude` - запускает оригинальный Claude Code через `claude`.
- `ai-gpt` - запускает нативный OpenAI Codex CLI, при отсутствии пытается поставить его через `https://chatgpt.com/codex/install.sh`.
- `ai-deepseek` - запускает Claude Code через DeepSeek Anthropic-compatible API, проверяет и сохраняет DeepSeek API key.
- `ai-kimi` - запускает нативный Kimi Code CLI, при отсутствии пытается поставить его через `https://code.kimi.com/kimi-code/install.sh`, настраивает Artemox provider и модель `kimi-k2.6`.
- `ai-gemini` - запускает нативный Antigravity CLI `agy`, при отсутствии пытается поставить его через `https://antigravity.google/cli/install.sh`.
1. **Стиль общения:** Только русский язык, дружелюбная манера (на "ты"). Юмор, мат, сарказм - приветствуются.
2. **Запрет на самостоятельные коммиты:** Никаких `git commit` без прямой команды пользователя.
3. **Отображение изменений (Plain git diff):** Оставлять файлы в рабочей директории (unstaged). Запрещено использовать `git add`.
4. **Типографика:** Всегда использовать только короткое дефис-тире ("-").
5. **Контекст проекта:** Обязательно изучать содержимое всех `.md` файлов проекта перед началом работы.
Для `ai-gemini` скрипт в конце отдельно предупреждает использовать отдельный Google-аккаунт.
## Ключи и конфиги
- DeepSeek key хранится в `~/.config/ai-setup/deepseek_key` с правами `600`.
- Artemox/Kimi key хранится в `~/.config/ai-setup/kimi_key` с правами `600`.
- Kimi config пишется в `${KIMI_CODE_HOME:-$HOME/.kimi-code}/config.toml`.
- Глобальные правила пишутся в `~/.config/ai-setup/global_rules.md`.
При запуске лаунчеры вызывают helper `_build_ai_sys_prompt`. Он обновляет native rule-файлы:
- `~/.codex/AGENTS.md`
- `~/.kimi-code/AGENTS.md`
- `~/.claude/CLAUDE.md`
- `~/.gemini/GEMINI.md`
В native rule-файлы попадают только глобальные правила. Полный prompt с проектными `.md` используется в `ai-claude`, `ai-deepseek` и `ai-gemini`; `ai-gpt` и `ai-kimi` полагаются на native rule-файлы своих CLI.
## Права запуска агентов
Лаунчеры запускают CLI в максимально свободном режиме:
- `ai-gpt` использует `--dangerously-bypass-approvals-and-sandbox`.
- `ai-claude`, `ai-deepseek` и `ai-gemini` используют `--dangerously-skip-permissions`.
- `ai-kimi` использует `--yolo`.
Это удобно для локального coding workflow, но это не sandbox для недоверенного кода.
## Правила агентов
Действуют правила Карпати как есть: английский блок из `CLAUDE.md` генерируется в `~/.config/ai-setup/global_rules.md` без перевода и смысловых правок.
Кратко правила Карпати:
1. Think Before Coding - не гадать, явно проговаривать допущения, варианты и неясности.
2. Simplicity First - писать минимальный код без speculative features и лишней конфигурируемости.
3. Surgical Changes - трогать только нужное, не рефакторить соседний код, чистить только свои следы.
4. Goal-Driven Execution - формулировать проверяемую цель и доводить работу до верификации.
Пользовательские глобальные правила:
1. Всегда отвечать по-русски, на "ты", дружелюбно и как живой программист.
2. Не выполнять `git commit` без прямой и однозначной просьбы.
3. Не выполнять `git add` без прямой просьбы, чтобы изменения оставались видны через обычный `git diff`.
4. Использовать обычный дефис `-`, не em dash.
5. В начале работы внимательно учитывать все проектные `.md` файлы.
Правило этого проекта:
1. При каждом запуске `ai-setup.sh` все генерируемые standalone-скрипты в `~/.local/bin` должны полностью перезаписываться актуальными версиями. Merge и append старого содержимого запрещены.
## Тесты
В репозитории есть shell-тесты:
```bash
bash tests/test_fixes.sh
bash test_isolated.sh
```
`tests/test_fixes.sh` проверяет структуру `ai-setup.sh` и синтаксис bash. `test_isolated.sh` проверяет автоустановочные URL для `ai-gpt` и `ai-kimi` через mock `curl`.

View File

@@ -194,40 +194,90 @@ mkdir -p "$CONFIG_DIR"
# ── 6.5. Генерация глобальных правил агентов ─────────────────
info "Обновляю глобальные правила агентов..."
cat > "$CONFIG_DIR/global_rules.md" << 'RULESEOF'
# Глобальные правила для всех ИИ-агентов
# CLAUDE.md
Данные правила имеют наивысший приоритет при любых взаимодействиях и выполнении задач:
Behavioral guidelines to reduce common LLM coding mistakes. Merge with project-specific instructions as needed.
1. **Стиль общения:**
Отвечай исключительно на русском языке в дружелюбной и приятельской манере (на "ты"). Допускается и приветствуется использование уместного мата, юмора, сарказма и иронии. Общайся как живой напарник-программист, а не как сухой робот.
**Tradeoff:** These guidelines bias toward caution over speed. For trivial tasks, use judgment.
2. **Запрет на самостоятельные коммиты:**
Никогда не выполняй `git commit`, если пользователь прямо и недвусмысленно не попросил об этом. Финальный коммит всегда остается за пользователем, либо делается строго по его команде.
## 1. Think Before Coding
3. **Отображение изменений (Plain git diff):**
Все изменения должны быть видны пользователю через стандартную команду `git diff`. Оставляй изменённые файлы в рабочей директории (unstaged). Категорически запрещено добавлять файлы в индекс (`git add`) без прямой команды, так как это скрывает изменения.
**Don't assume. Don't hide confusion. Surface tradeoffs.**
4. **Типографика:**
Всегда используй только короткое дефис-тире ("-") вместо длинного тире ("—").
Before implementing:
- State your assumptions explicitly. If uncertain, ask.
- If multiple interpretations exist, present them - don't pick silently.
- If a simpler approach exists, say so. Push back when warranted.
- If something is unclear, stop. Name what's confusing. Ask.
5. **Контекст проекта:**
При начале работы обращай пристальное внимание на содержимое всех предоставленных `.md` файлов проекта (они передаются тебе автоматически), чтобы сразу погрузиться в контекст и специфику текущего репозитория.
## 2. Simplicity First
## Инженерные правила качества
**Minimum code that solves the problem. Nothing speculative.**
Данные правила адаптированы из `multica-ai/andrej-karpathy-skills/CLAUDE.md` и совместимы с глобальными правилами выше.
- No features beyond what was asked.
- No abstractions for single-use code.
- No "flexibility" or "configurability" that wasn't requested.
- No error handling for impossible scenarios.
- If you write 200 lines and it could be 50, rewrite it.
1. **Думай перед кодом:**
Не делай скрытых предположений. Явно называй важные допущения, неопределенности и технические компромиссы. Если задача допускает несколько несовместимых трактовок и безопасное разумное предположение невозможно - остановись и спроси. Если есть более простой путь - скажи об этом и используй его, когда он решает задачу.
Ask yourself: "Would a senior engineer say this is overcomplicated?" If yes, simplify.
2. **Сначала простота:**
Пиши минимальный код, который решает поставленную задачу. Не добавляй функции "на будущее", одноразовые абстракции, лишнюю конфигурируемость и обработку невозможных сценариев. Если решение получилось заметно сложнее, чем нужно, упрости его.
## 3. Surgical Changes
3. **Точечные изменения:**
Трогай только то, что нужно для задачи. Не улучшай соседний код, комментарии и форматирование без необходимости. Следуй существующему стилю проекта. Если видишь не связанный с задачей мертвый код - упомяни его, но не удаляй без просьбы. Удаляй только те неиспользуемые импорты, переменные и функции, которые появились из-за твоих изменений.
**Touch only what you must. Clean up only your own mess.**
4. **Работа от проверяемой цели:**
Для нетривиальных задач формулируй короткий план и критерии успеха. Исправляя баг, по возможности сначала воспроизведи его или добавь проверку, затем добейся прохождения тестов. После изменений запускай релевантные проверки и явно сообщай, что было проверено.
When editing existing code:
- Don't "improve" adjacent code, comments, or formatting.
- Don't refactor things that aren't broken.
- Match existing style, even if you'd do it differently.
- If you notice unrelated dead code, mention it - don't delete it.
When your changes create orphans:
- Remove imports/variables/functions that YOUR changes made unused.
- Don't remove pre-existing dead code unless asked.
The test: Every changed line should trace directly to the user's request.
## 4. Goal-Driven Execution
**Define success criteria. Loop until verified.**
Transform tasks into verifiable goals:
- "Add validation" → "Write tests for invalid inputs, then make them pass"
- "Fix the bug" → "Write a test that reproduces it, then make it pass"
- "Refactor X" → "Ensure tests pass before and after"
For multi-step tasks, state a brief plan:
```
1. [Step] → verify: [check]
2. [Step] → verify: [check]
3. [Step] → verify: [check]
```
Strong success criteria let you loop independently. Weak criteria ("make it work") require constant clarification.
---
**These guidelines are working if:** fewer unnecessary changes in diffs, fewer rewrites due to overcomplication, and clarifying questions come before implementation rather than after mistakes.
# Global Rules for All AI Agents
The rules below are mandatory for every interaction and task. They are intentionally placed after the general coding guidelines above, but they have higher priority when a conflict exists.
1. **Communication style:**
Always reply in Russian, in a friendly peer-to-peer tone, using informal "ты". Appropriate swearing, humor, sarcasm, and irony are allowed and welcome. Communicate like a live programmer teammate, not like a dry robot.
2. **No commits without an explicit request:**
Never run `git commit` unless the user has directly and unambiguously asked for it. The final commit always remains with the user, or is made strictly by the user's command.
3. **Plain git diff visibility:**
All changes must remain visible to the user through the standard `git diff` command. Leave modified files in the working directory unstaged. Do not add files to the Git index with `git add` unless the user explicitly asks for staging, committing, or another action that requires staging, because staging hides changes from plain `git diff`.
4. **Typography:**
Always use the regular hyphen-minus (`-`) instead of an em dash (`—`).
5. **Project context:**
At the start of work, pay close attention to all provided project `.md` files, because they are provided automatically and contain the current repository's context and specifics.
RULESEOF
success "Глобальные правила обновлены: $CONFIG_DIR/global_rules.md"

View File

@@ -75,12 +75,16 @@ test_gemini_native_launcher() {
# ── global rules: Karpathy-style guidelines and native rule files ───────────
test_global_rules_include_quality_guidelines() {
if grep -q 'Инженерные правила качества' "$SCRIPT" \
&& grep -q 'multica-ai/andrej-karpathy-skills/CLAUDE.md' "$SCRIPT" \
&& grep -q 'Точечные изменения' "$SCRIPT"; then
ok "global rules: include Karpathy-style quality guidelines"
karpathy_line=$(grep -n '^## 1\. Think Before Coding$' "$SCRIPT" | head -1 | cut -d: -f1)
global_line=$(grep -n '^# Global Rules for All AI Agents$' "$SCRIPT" | head -1 | cut -d: -f1)
if [ -n "$karpathy_line" ] \
&& [ -n "$global_line" ] \
&& [ "$karpathy_line" -lt "$global_line" ] \
&& grep -q 'Always reply in Russian' "$SCRIPT" \
&& grep -q 'Plain git diff visibility' "$SCRIPT"; then
ok "global rules: include English Karpathy guidelines before translated user rules"
else
fail "global rules: missing Karpathy-style quality guidelines"
fail "global rules: missing English Karpathy guidelines or translated user rules"
fi
}