feat: внедрена автогенерация глобальных правил ИИ-агентов и очистка AGENTS.md

This commit is contained in:
2026-05-31 21:36:22 +07:00
parent 2bde831f1a
commit 93b9fbb43b
2 changed files with 68 additions and 17 deletions

View File

@@ -1,11 +1,5 @@
# Правила для агентов (Agent Instructions) # Правила текущего проекта (Project-specific Instructions)
Данные правила применяются ко всем агентам (Claude, Gemini, DeepSeek и др.), работающим в этом проекте. Данные правила применяются ко всем агентам, работающим конкретно в этом репозитории.
1. **Никаких самостоятельных коммитов (No unauthorized commits):** ЗАПРЕЩЕНО выполнять команду `git commit`, если пользователь прямо и недвусмысленно не попросил об этом. Финальный коммит делает пользователь или вы — строго по его команде. 1. **Полная перегенерация standalone-скриптов при запуске сетап-скрипта (Full regeneration of standalone scripts on setup run):** При каждом запуске `ai-setup.sh` все генерируемые скрипты в `~/.local/bin/` (`ai-gpt`, `ai-deepseek`, `ai-kimi`, `ai-gemini`, `ai-api-helpers.sh`, `ai-claude`) должны быть **полностью перезаписаны** актуальными версиями. Запрещено выполнять слияние (merge) старого и нового содержимого или дополнение (append). Скрипт обязан привести все генерируемые файлы к эталонному виду, однозначно определяемому текущей конфигурацией.
2. **Полная перегенерация standalone-скриптов при запуске сетап-скрипта (Full regeneration of standalone scripts on setup run):** При каждом запуске `ai-setup.sh` все генерируемые скрипты в `~/.local/bin/` (`ai-gpt`, `ai-deepseek`, `ai-kimi`, `ai-gemini`, `ai-api-helpers.sh`, `ai-claude`) должны быть **полностью перезаписаны** актуальными версиями. Запрещено выполнять слияние (merge) старого и нового содержимого или дополнение (append). Скрипт обязан привести все генерируемые файлы к эталонному виду, однозначно определяемому текущей конфигурацией.
3. **Изменения должны быть видны через `git diff` (Changes must be visible via plain git diff):** Оставляйте изменённые файлы в рабочей директории (unstaged), чтобы пользователь мог увидеть их, просто написав `git diff` в консоли. Не добавляйте их в индекс (`git add`) без прямой команды, так как это скрывает изменения от стандартной команды `git diff`.
4. **Отвечать на русском языке (Respond in Russian):** Все ответы, пояснения, вопросы и комментарии — на русском языке, если пользователь явно не попросит иначе.

View File

@@ -4,7 +4,7 @@
# Запуск: bash ai-setup.sh # Запуск: bash ai-setup.sh
# ============================================================ # ============================================================
CONFIG_DIR="$HOME/.config/claude-launcher" CONFIG_DIR="$HOME/.config/ai-setup"
BIN_DIR="$HOME/.local/bin" BIN_DIR="$HOME/.local/bin"
NPM_GLOBAL="$HOME/.npm-global" NPM_GLOBAL="$HOME/.npm-global"
PROXY_BIN="$BIN_DIR/claude-code-proxy" PROXY_BIN="$BIN_DIR/claude-code-proxy"
@@ -191,6 +191,30 @@ fi
# ── 6. Папка для конфигов ──────────────────────────────────── # ── 6. Папка для конфигов ────────────────────────────────────
mkdir -p "$CONFIG_DIR" mkdir -p "$CONFIG_DIR"
# ── 6.5. Генерация глобальных правил агентов ─────────────────
info "Обновляю глобальные правила агентов..."
cat > "$CONFIG_DIR/global_rules.md" << 'RULESEOF'
# Глобальные правила для всех ИИ-агентов
Данные правила имеют наивысший приоритет при любых взаимодействиях и выполнении задач:
1. **Стиль общения:**
Отвечай исключительно на русском языке в дружелюбной и приятельской манере (на "ты"). Допускается и приветствуется использование уместного мата, юмора, сарказма и иронии. Общайся как живой напарник-программист, а не как сухой робот.
2. **Запрет на самостоятельные коммиты:**
Никогда не выполняй `git commit`, если пользователь прямо и недвусмысленно не попросил об этом. Финальный коммит всегда остается за пользователем, либо делается строго по его команде.
3. **Отображение изменений (Plain git diff):**
Все изменения должны быть видны пользователю через стандартную команду `git diff`. Оставляй изменённые файлы в рабочей директории (unstaged). Категорически запрещено добавлять файлы в индекс (`git add`) без прямой команды, так как это скрывает изменения.
4. **Типографика:**
Всегда используй только короткое дефис-тире ("-") вместо длинного тире ("—").
5. **Контекст проекта:**
При начале работы обращай пристальное внимание на содержимое всех предоставленных `.md` файлов проекта (они передаются тебе автоматически), чтобы сразу погрузиться в контекст и специфику текущего репозитория.
RULESEOF
success "Глобальные правила обновлены: $CONFIG_DIR/global_rules.md"
# ── 7. Очистка старых функций из .bashrc / .zshrc ─────────── # ── 7. Очистка старых функций из .bashrc / .zshrc ───────────
clean_rc() { clean_rc() {
local rc_file="$1" local rc_file="$1"
@@ -400,6 +424,17 @@ _open_browser() {
elif command -v sensible-browser &>/dev/null; then sensible-browser "$url" 2>/dev/null elif command -v sensible-browser &>/dev/null; then sensible-browser "$url" 2>/dev/null
else echo "Откройте вручную: $url"; fi else echo "Откройте вручную: $url"; fi
} }
_build_ai_sys_prompt() {
local global_rules="$HOME/.config/ai-setup/global_rules.md"
local sp="=== ГЛОБАЛЬНЫЕ ПРАВИЛА ===\n"
[ -f "$global_rules" ] && sp+="$(cat "$global_rules" 2>/dev/null)\n\n"
sp+="=== ПРАВИЛА ПРОЕКТА ===\n"
for f in *.md; do
[ -f "$f" ] && sp+="\n--- Файл $f ---\n$(cat "$f")\n"
done
echo -e "$sp"
}
HELPEREOF HELPEREOF
chmod +x "$HELPERS_FILE" chmod +x "$HELPERS_FILE"
@@ -407,6 +442,7 @@ chmod +x "$HELPERS_FILE"
cat > "$BIN_DIR/ai-gpt" << 'GPTEOF' cat > "$BIN_DIR/ai-gpt" << 'GPTEOF'
#!/usr/bin/env bash #!/usr/bin/env bash
# ai-gpt — запуск нативного OpenAI Codex # ai-gpt — запуск нативного OpenAI Codex
source "$HOME/.local/bin/ai-api-helpers.sh" 2>/dev/null || true
codex_bin="$HOME/.npm-global/bin/codex" codex_bin="$HOME/.npm-global/bin/codex"
[ ! -f "$codex_bin" ] && codex_bin="$(command -v codex 2>/dev/null)" [ ! -f "$codex_bin" ] && codex_bin="$(command -v codex 2>/dev/null)"
@@ -423,7 +459,8 @@ if [ -z "$codex_bin" ] || [ ! -f "$codex_bin" ]; then
exit 1 exit 1
fi fi
exec "$codex_bin" --dangerously-bypass-approvals-and-sandbox "$@" SYS_PROMPT=$(_build_ai_sys_prompt)
exec "$codex_bin" --dangerously-bypass-approvals-and-sandbox --system-prompt "$SYS_PROMPT" "$@"
GPTEOF GPTEOF
chmod +x "$BIN_DIR/ai-gpt" chmod +x "$BIN_DIR/ai-gpt"
@@ -433,7 +470,7 @@ cat > "$BIN_DIR/ai-deepseek" << 'DEEPSEEKEOF'
#!/usr/bin/env bash #!/usr/bin/env bash
source ~/.local/bin/ai-api-helpers.sh source ~/.local/bin/ai-api-helpers.sh
key_file="$HOME/.config/claude-launcher/deepseek_key" key_file="$HOME/.config/ai-setup/deepseek_key"
api_key="" api_key=""
reauth=0 reauth=0
@@ -493,7 +530,8 @@ ANTHROPIC_DEFAULT_SONNET_MODEL=deepseek-v4-pro \
ANTHROPIC_DEFAULT_HAIKU_MODEL=deepseek-v4-flash \ ANTHROPIC_DEFAULT_HAIKU_MODEL=deepseek-v4-flash \
CLAUDE_CODE_SUBAGENT_MODEL=deepseek-v4-flash \ CLAUDE_CODE_SUBAGENT_MODEL=deepseek-v4-flash \
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 \ CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 \
claude --dangerously-skip-permissions "$@" SYS_PROMPT=$(_build_ai_sys_prompt)
claude --dangerously-skip-permissions --system-prompt "$SYS_PROMPT" "$@"
DEEPSEEKEOF DEEPSEEKEOF
chmod +x "$BIN_DIR/ai-deepseek" chmod +x "$BIN_DIR/ai-deepseek"
@@ -526,7 +564,7 @@ case "${1:-}" in
esac esac
config_file="${KIMI_CODE_HOME:-$HOME/.kimi-code}/config.toml" config_file="${KIMI_CODE_HOME:-$HOME/.kimi-code}/config.toml"
key_file="$HOME/.config/claude-launcher/kimi_key" key_file="$HOME/.config/ai-setup/kimi_key"
model_alias="artemox/kimi-k2.6" model_alias="artemox/kimi-k2.6"
model_name="kimi-k2.6" model_name="kimi-k2.6"
base_url="https://api.artemox.com/v1" base_url="https://api.artemox.com/v1"
@@ -674,7 +712,8 @@ chmod 600 "$key_file"
_write_artemox_config _write_artemox_config
echo "Kimi настроен на Artemox: $model_alias" echo "Kimi настроен на Artemox: $model_alias"
exec "$kimi_bin" --yolo "$@" SYS_PROMPT=$(_build_ai_sys_prompt)
exec "$kimi_bin" --yolo --system-prompt "$SYS_PROMPT" "$@"
KIMIEOF KIMIEOF
chmod +x "$BIN_DIR/ai-kimi" chmod +x "$BIN_DIR/ai-kimi"
@@ -700,7 +739,23 @@ if [ -z "$agy_bin" ] || [ ! -f "$agy_bin" ]; then
exit 1 exit 1
fi fi
exec "$agy_bin" --dangerously-skip-permissions "$@" source "$HOME/.local/bin/ai-api-helpers.sh" 2>/dev/null || true
SYS_PROMPT=$(_build_ai_sys_prompt)
if [ $# -eq 0 ]; then
exec "$agy_bin" --dangerously-skip-permissions -i "$SYS_PROMPT\n\nПрочитай правила выше и коротко подтверди готовность к работе."
else
ARGS=("$@")
INJECTED=0
for i in "${!ARGS[@]}"; do
if [[ "${ARGS[$i]}" == "-i" || "${ARGS[$i]}" == "-p" || "${ARGS[$i]}" == "--prompt-interactive" || "${ARGS[$i]}" == "--print" ]]; then
ARGS[$((i+1))]="$SYS_PROMPT\n\nЗапрос пользователя:\n${ARGS[$((i+1))]}"
INJECTED=1
break
fi
done
exec "$agy_bin" --dangerously-skip-permissions "${ARGS[@]}"
fi
GEMINIEOF GEMINIEOF
chmod +x "$BIN_DIR/ai-gemini" chmod +x "$BIN_DIR/ai-gemini"
@@ -708,7 +763,9 @@ chmod +x "$BIN_DIR/ai-gemini"
cat > "$BIN_DIR/ai-claude" << 'CLAUDEEOF' cat > "$BIN_DIR/ai-claude" << 'CLAUDEEOF'
#!/usr/bin/env bash #!/usr/bin/env bash
# ai-claude — запуск оригинального Claude Code (Anthropic) # ai-claude — запуск оригинального Claude Code (Anthropic)
exec claude --dangerously-skip-permissions "$@" source "$HOME/.local/bin/ai-api-helpers.sh" 2>/dev/null || true
SYS_PROMPT=$(_build_ai_sys_prompt)
exec claude --dangerously-skip-permissions --system-prompt "$SYS_PROMPT" "$@"
CLAUDEEOF CLAUDEEOF
chmod +x "$BIN_DIR/ai-claude" chmod +x "$BIN_DIR/ai-claude"