Add global AI quality rules
This commit is contained in:
38
ai-setup.sh
38
ai-setup.sh
@@ -212,6 +212,22 @@ cat > "$CONFIG_DIR/global_rules.md" << 'RULESEOF'
|
||||
|
||||
5. **Контекст проекта:**
|
||||
При начале работы обращай пристальное внимание на содержимое всех предоставленных `.md` файлов проекта (они передаются тебе автоматически), чтобы сразу погрузиться в контекст и специфику текущего репозитория.
|
||||
|
||||
## Инженерные правила качества
|
||||
|
||||
Данные правила адаптированы из `multica-ai/andrej-karpathy-skills/CLAUDE.md` и совместимы с глобальными правилами выше.
|
||||
|
||||
1. **Думай перед кодом:**
|
||||
Не делай скрытых предположений. Явно называй важные допущения, неопределенности и технические компромиссы. Если задача допускает несколько несовместимых трактовок и безопасное разумное предположение невозможно - остановись и спроси. Если есть более простой путь - скажи об этом и используй его, когда он решает задачу.
|
||||
|
||||
2. **Сначала простота:**
|
||||
Пиши минимальный код, который решает поставленную задачу. Не добавляй функции "на будущее", одноразовые абстракции, лишнюю конфигурируемость и обработку невозможных сценариев. Если решение получилось заметно сложнее, чем нужно, упрости его.
|
||||
|
||||
3. **Точечные изменения:**
|
||||
Трогай только то, что нужно для задачи. Не улучшай соседний код, комментарии и форматирование без необходимости. Следуй существующему стилю проекта. Если видишь не связанный с задачей мертвый код - упомяни его, но не удаляй без просьбы. Удаляй только те неиспользуемые импорты, переменные и функции, которые появились из-за твоих изменений.
|
||||
|
||||
4. **Работа от проверяемой цели:**
|
||||
Для нетривиальных задач формулируй короткий план и критерии успеха. Исправляя баг, по возможности сначала воспроизведи его или добавь проверку, затем добейся прохождения тестов. После изменений запускай релевантные проверки и явно сообщай, что было проверено.
|
||||
RULESEOF
|
||||
success "Глобальные правила обновлены: $CONFIG_DIR/global_rules.md"
|
||||
|
||||
@@ -427,19 +443,25 @@ _open_browser() {
|
||||
|
||||
_build_ai_sys_prompt() {
|
||||
local global_rules="$HOME/.config/ai-setup/global_rules.md"
|
||||
local global_rendered=""
|
||||
[ -f "$global_rules" ] && global_rendered="$(cat "$global_rules" 2>/dev/null)"
|
||||
|
||||
# Нативные глобальные правила: только global_rules.md, без проектного контекста.
|
||||
# Проектные *.md файлы агент должен читать из текущего репозитория сам, если умеет.
|
||||
# Для агентов без надежного нативного чтения проектный контекст добавляется ниже в prompt.
|
||||
mkdir -p "$HOME/.codex" "$HOME/.kimi-code" "$HOME/.claude" "$HOME/.gemini"
|
||||
echo "$global_rendered" > "$HOME/.codex/AGENTS.md"
|
||||
echo "$global_rendered" > "$HOME/.kimi-code/AGENTS.md"
|
||||
echo "$global_rendered" > "$HOME/.claude/CLAUDE.md"
|
||||
echo "$global_rendered" > "$HOME/.gemini/GEMINI.md"
|
||||
|
||||
local sp="=== ГЛОБАЛЬНЫЕ ПРАВИЛА ===\n"
|
||||
[ -f "$global_rules" ] && sp+="$(cat "$global_rules" 2>/dev/null)\n\n"
|
||||
[ -n "$global_rendered" ] && sp+="$global_rendered\n\n"
|
||||
sp+="=== ПРАВИЛА ПРОЕКТА ===\n"
|
||||
for f in *.md; do
|
||||
[ -f "$f" ] && sp+="\n--- Файл $f ---\n$(cat "$f")\n"
|
||||
done
|
||||
# Единый source of truth — сохраняем для всех агентов
|
||||
local rendered
|
||||
rendered="$(echo -e "$sp")"
|
||||
mkdir -p "$HOME/.codex" "$HOME/.kimi-code"
|
||||
echo "$rendered" > "$HOME/.codex/AGENTS.md"
|
||||
echo "$rendered" > "$HOME/.kimi-code/AGENTS.md"
|
||||
echo "$rendered"
|
||||
echo -e "$sp"
|
||||
}
|
||||
HELPEREOF
|
||||
chmod +x "$HELPERS_FILE"
|
||||
|
||||
@@ -14,6 +14,7 @@ fail() { echo "[FAIL] $1"; FAIL=$((FAIL+1)); }
|
||||
GPT_SECTION=$(awk '/^cat > "\$BIN_DIR\/ai-gpt"/,/^GPTEOF/' "$SCRIPT")
|
||||
KIMI_SECTION=$(awk '/^cat > "\$BIN_DIR\/ai-kimi"/,/^KIMIEOF/' "$SCRIPT")
|
||||
GEMINI_SECTION=$(awk '/^cat > "\$BIN_DIR\/ai-gemini"/,/^GEMINIEOF/' "$SCRIPT")
|
||||
HELPERS_SECTION=$(awk '/^cat > "\$HELPERS_FILE"/,/^HELPEREOF/' "$SCRIPT")
|
||||
|
||||
# ── ai-gpt: auto-install codex ────────────────────────────────────────────
|
||||
test_gpt_autoinstall() {
|
||||
@@ -72,6 +73,29 @@ test_gemini_native_launcher() {
|
||||
fi
|
||||
}
|
||||
|
||||
# ── global rules: Karpathy-style guidelines and native rule files ───────────
|
||||
test_global_rules_include_quality_guidelines() {
|
||||
if grep -q 'Инженерные правила качества' "$SCRIPT" \
|
||||
&& grep -q 'multica-ai/andrej-karpathy-skills/CLAUDE.md' "$SCRIPT" \
|
||||
&& grep -q 'Точечные изменения' "$SCRIPT"; then
|
||||
ok "global rules: include Karpathy-style quality guidelines"
|
||||
else
|
||||
fail "global rules: missing Karpathy-style quality guidelines"
|
||||
fi
|
||||
}
|
||||
|
||||
test_native_rule_files_generated() {
|
||||
if echo "$HELPERS_SECTION" | grep -q 'echo "$global_rendered" > "$HOME/.codex/AGENTS.md"' \
|
||||
&& echo "$HELPERS_SECTION" | grep -q 'echo "$global_rendered" > "$HOME/.kimi-code/AGENTS.md"' \
|
||||
&& echo "$HELPERS_SECTION" | grep -q 'echo "$global_rendered" > "$HOME/.claude/CLAUDE.md"' \
|
||||
&& echo "$HELPERS_SECTION" | grep -q 'echo "$global_rendered" > "$HOME/.gemini/GEMINI.md"' \
|
||||
&& ! echo "$HELPERS_SECTION" | grep -q 'echo "$rendered" >'; then
|
||||
ok "global rules: native rule files contain only global_rules.md"
|
||||
else
|
||||
fail "global rules: native rule files must not include project prompt render"
|
||||
fi
|
||||
}
|
||||
|
||||
# ── Fix 7: trap quotes $TMP correctly ────────────────────────────────────────
|
||||
test_fix7_trap_tmp() {
|
||||
if grep -q "trap 'rm -rf \"\$TMP\"' EXIT" "$SCRIPT"; then
|
||||
@@ -98,6 +122,8 @@ test_kimi_autoinstall
|
||||
test_kimi_no_proxy
|
||||
test_kimi_artemox_config
|
||||
test_gemini_native_launcher
|
||||
test_global_rules_include_quality_guidelines
|
||||
test_native_rule_files_generated
|
||||
test_fix7_trap_tmp
|
||||
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user