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`, если пользователь прямо и недвусмысленно не попросил об этом. Финальный коммит делает пользователь или вы — строго по его команде.
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):** Все ответы, пояснения, вопросы и комментарии — на русском языке, если пользователь явно не попросит иначе.
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). Скрипт обязан привести все генерируемые файлы к эталонному виду, однозначно определяемому текущей конфигурацией.

View File

@@ -4,7 +4,7 @@
# Запуск: bash ai-setup.sh
# ============================================================
CONFIG_DIR="$HOME/.config/claude-launcher"
CONFIG_DIR="$HOME/.config/ai-setup"
BIN_DIR="$HOME/.local/bin"
NPM_GLOBAL="$HOME/.npm-global"
PROXY_BIN="$BIN_DIR/claude-code-proxy"
@@ -191,6 +191,30 @@ fi
# ── 6. Папка для конфигов ────────────────────────────────────
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 ───────────
clean_rc() {
local rc_file="$1"
@@ -400,6 +424,17 @@ _open_browser() {
elif command -v sensible-browser &>/dev/null; then sensible-browser "$url" 2>/dev/null
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
chmod +x "$HELPERS_FILE"
@@ -407,6 +442,7 @@ chmod +x "$HELPERS_FILE"
cat > "$BIN_DIR/ai-gpt" << 'GPTEOF'
#!/usr/bin/env bash
# ai-gpt — запуск нативного OpenAI Codex
source "$HOME/.local/bin/ai-api-helpers.sh" 2>/dev/null || true
codex_bin="$HOME/.npm-global/bin/codex"
[ ! -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
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
chmod +x "$BIN_DIR/ai-gpt"
@@ -433,7 +470,7 @@ cat > "$BIN_DIR/ai-deepseek" << 'DEEPSEEKEOF'
#!/usr/bin/env bash
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=""
reauth=0
@@ -493,7 +530,8 @@ ANTHROPIC_DEFAULT_SONNET_MODEL=deepseek-v4-pro \
ANTHROPIC_DEFAULT_HAIKU_MODEL=deepseek-v4-flash \
CLAUDE_CODE_SUBAGENT_MODEL=deepseek-v4-flash \
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
chmod +x "$BIN_DIR/ai-deepseek"
@@ -526,7 +564,7 @@ case "${1:-}" in
esac
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_name="kimi-k2.6"
base_url="https://api.artemox.com/v1"
@@ -674,7 +712,8 @@ chmod 600 "$key_file"
_write_artemox_config
echo "Kimi настроен на Artemox: $model_alias"
exec "$kimi_bin" --yolo "$@"
SYS_PROMPT=$(_build_ai_sys_prompt)
exec "$kimi_bin" --yolo --system-prompt "$SYS_PROMPT" "$@"
KIMIEOF
chmod +x "$BIN_DIR/ai-kimi"
@@ -700,7 +739,23 @@ if [ -z "$agy_bin" ] || [ ! -f "$agy_bin" ]; then
exit 1
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
chmod +x "$BIN_DIR/ai-gemini"
@@ -708,7 +763,9 @@ chmod +x "$BIN_DIR/ai-gemini"
cat > "$BIN_DIR/ai-claude" << 'CLAUDEEOF'
#!/usr/bin/env bash
# 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
chmod +x "$BIN_DIR/ai-claude"