Update AI setup rules and documentation
This commit is contained in:
127
README.md
127
README.md
@@ -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
|
||||||
bash ai-setup.sh
|
bash ai-setup.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
## Доступные ИИ-агенты
|
Скрипт прямо запрещает запуск от root. При этом, если Node.js не найден, он может попытаться установить Node.js через `apt-get` или `dnf` и тогда попросит `sudo` уже внутри этого шага.
|
||||||
|
|
||||||
После установки вам будут доступны независимые команды:
|
После установки, если shell ещё не видит новые команды:
|
||||||
|
|
||||||
* `ai-claude` — оригинальный Claude Code (от Anthropic)
|
```bash
|
||||||
* `ai-gpt` — OpenAI Codex
|
exec bash
|
||||||
* `ai-deepseek` — DeepSeek (проверяет и сохраняет ваш API-ключ)
|
```
|
||||||
* `ai-kimi` — Kimi K2.6 через Artemox API
|
|
||||||
* `ai-gemini` — Gemini (через Antigravity CLI)
|
|
||||||
|
|
||||||
> **💡 Совет по Gemini:** Для `ai-gemini` настоятельно рекомендуется использовать отдельный Google-аккаунт, чтобы избежать потенциальных блокировок основного аккаунта.
|
## Требования
|
||||||
|
|
||||||
## Особенности
|
- `bash`
|
||||||
|
- `curl`
|
||||||
|
- `python3`
|
||||||
|
- Node.js/npm для npm-глобальных инструментов
|
||||||
|
|
||||||
* **Безопасность:** Скрипт не использует `sudo`. Все устанавливается локально в директорию пользователя (`~/.npm-global` и `~/.local/bin`).
|
Если Node.js отсутствует, скрипт пытается поставить его автоматически для систем с `apt-get` или `dnf`. Для остальных систем Node.js нужно поставить вручную.
|
||||||
* **Ключи доступа:** API ключи (например, для DeepSeek) хранятся в `~/.config/claude-launcher/` с безопасными правами доступа (только для чтения пользователем).
|
|
||||||
* **Автоматизация:** Зависимости (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. **Стиль общения:** Только русский язык, дружелюбная манера (на "ты"). Юмор, мат, сарказм - приветствуются.
|
Для `ai-gemini` скрипт в конце отдельно предупреждает использовать отдельный Google-аккаунт.
|
||||||
2. **Запрет на самостоятельные коммиты:** Никаких `git commit` без прямой команды пользователя.
|
|
||||||
3. **Отображение изменений (Plain git diff):** Оставлять файлы в рабочей директории (unstaged). Запрещено использовать `git add`.
|
## Ключи и конфиги
|
||||||
4. **Типографика:** Всегда использовать только короткое дефис-тире ("-").
|
|
||||||
5. **Контекст проекта:** Обязательно изучать содержимое всех `.md` файлов проекта перед началом работы.
|
- 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`.
|
||||||
|
|||||||
94
ai-setup.sh
94
ai-setup.sh
@@ -194,40 +194,90 @@ mkdir -p "$CONFIG_DIR"
|
|||||||
# ── 6.5. Генерация глобальных правил агентов ─────────────────
|
# ── 6.5. Генерация глобальных правил агентов ─────────────────
|
||||||
info "Обновляю глобальные правила агентов..."
|
info "Обновляю глобальные правила агентов..."
|
||||||
cat > "$CONFIG_DIR/global_rules.md" << 'RULESEOF'
|
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. **Запрет на самостоятельные коммиты:**
|
## 1. Think Before Coding
|
||||||
Никогда не выполняй `git commit`, если пользователь прямо и недвусмысленно не попросил об этом. Финальный коммит всегда остается за пользователем, либо делается строго по его команде.
|
|
||||||
|
|
||||||
3. **Отображение изменений (Plain git diff):**
|
**Don't assume. Don't hide confusion. Surface tradeoffs.**
|
||||||
Все изменения должны быть видны пользователю через стандартную команду `git diff`. Оставляй изменённые файлы в рабочей директории (unstaged). Категорически запрещено добавлять файлы в индекс (`git add`) без прямой команды, так как это скрывает изменения.
|
|
||||||
|
|
||||||
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. **Контекст проекта:**
|
## 2. Simplicity First
|
||||||
При начале работы обращай пристальное внимание на содержимое всех предоставленных `.md` файлов проекта (они передаются тебе автоматически), чтобы сразу погрузиться в контекст и специфику текущего репозитория.
|
|
||||||
|
|
||||||
## Инженерные правила качества
|
**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
|
RULESEOF
|
||||||
success "Глобальные правила обновлены: $CONFIG_DIR/global_rules.md"
|
success "Глобальные правила обновлены: $CONFIG_DIR/global_rules.md"
|
||||||
|
|
||||||
|
|||||||
@@ -75,12 +75,16 @@ test_gemini_native_launcher() {
|
|||||||
|
|
||||||
# ── global rules: Karpathy-style guidelines and native rule files ───────────
|
# ── global rules: Karpathy-style guidelines and native rule files ───────────
|
||||||
test_global_rules_include_quality_guidelines() {
|
test_global_rules_include_quality_guidelines() {
|
||||||
if grep -q 'Инженерные правила качества' "$SCRIPT" \
|
karpathy_line=$(grep -n '^## 1\. Think Before Coding$' "$SCRIPT" | head -1 | cut -d: -f1)
|
||||||
&& grep -q 'multica-ai/andrej-karpathy-skills/CLAUDE.md' "$SCRIPT" \
|
global_line=$(grep -n '^# Global Rules for All AI Agents$' "$SCRIPT" | head -1 | cut -d: -f1)
|
||||||
&& grep -q 'Точечные изменения' "$SCRIPT"; then
|
if [ -n "$karpathy_line" ] \
|
||||||
ok "global rules: include Karpathy-style quality guidelines"
|
&& [ -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
|
else
|
||||||
fail "global rules: missing Karpathy-style quality guidelines"
|
fail "global rules: missing English Karpathy guidelines or translated user rules"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user