feat: внедрена автогенерация глобальных правил ИИ-агентов и очистка AGENTS.md
This commit is contained in:
12
AGENTS.md
12
AGENTS.md
@@ -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). Скрипт обязан привести все генерируемые файлы к эталонному виду, однозначно определяемому текущей конфигурацией.
|
||||
|
||||
73
ai-setup.sh
73
ai-setup.sh
@@ -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"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user