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`, если пользователь прямо и недвусмысленно не попросил об этом. Финальный коммит делает пользователь или вы — строго по его команде.
|
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):** Все ответы, пояснения, вопросы и комментарии — на русском языке, если пользователь явно не попросит иначе.
|
|
||||||
|
|||||||
73
ai-setup.sh
73
ai-setup.sh
@@ -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"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user