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. **Контекст проекта:**
|
5. **Контекст проекта:**
|
||||||
При начале работы обращай пристальное внимание на содержимое всех предоставленных `.md` файлов проекта (они передаются тебе автоматически), чтобы сразу погрузиться в контекст и специфику текущего репозитория.
|
При начале работы обращай пристальное внимание на содержимое всех предоставленных `.md` файлов проекта (они передаются тебе автоматически), чтобы сразу погрузиться в контекст и специфику текущего репозитория.
|
||||||
|
|
||||||
|
## Инженерные правила качества
|
||||||
|
|
||||||
|
Данные правила адаптированы из `multica-ai/andrej-karpathy-skills/CLAUDE.md` и совместимы с глобальными правилами выше.
|
||||||
|
|
||||||
|
1. **Думай перед кодом:**
|
||||||
|
Не делай скрытых предположений. Явно называй важные допущения, неопределенности и технические компромиссы. Если задача допускает несколько несовместимых трактовок и безопасное разумное предположение невозможно - остановись и спроси. Если есть более простой путь - скажи об этом и используй его, когда он решает задачу.
|
||||||
|
|
||||||
|
2. **Сначала простота:**
|
||||||
|
Пиши минимальный код, который решает поставленную задачу. Не добавляй функции "на будущее", одноразовые абстракции, лишнюю конфигурируемость и обработку невозможных сценариев. Если решение получилось заметно сложнее, чем нужно, упрости его.
|
||||||
|
|
||||||
|
3. **Точечные изменения:**
|
||||||
|
Трогай только то, что нужно для задачи. Не улучшай соседний код, комментарии и форматирование без необходимости. Следуй существующему стилю проекта. Если видишь не связанный с задачей мертвый код - упомяни его, но не удаляй без просьбы. Удаляй только те неиспользуемые импорты, переменные и функции, которые появились из-за твоих изменений.
|
||||||
|
|
||||||
|
4. **Работа от проверяемой цели:**
|
||||||
|
Для нетривиальных задач формулируй короткий план и критерии успеха. Исправляя баг, по возможности сначала воспроизведи его или добавь проверку, затем добейся прохождения тестов. После изменений запускай релевантные проверки и явно сообщай, что было проверено.
|
||||||
RULESEOF
|
RULESEOF
|
||||||
success "Глобальные правила обновлены: $CONFIG_DIR/global_rules.md"
|
success "Глобальные правила обновлены: $CONFIG_DIR/global_rules.md"
|
||||||
|
|
||||||
@@ -427,19 +443,25 @@ _open_browser() {
|
|||||||
|
|
||||||
_build_ai_sys_prompt() {
|
_build_ai_sys_prompt() {
|
||||||
local global_rules="$HOME/.config/ai-setup/global_rules.md"
|
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"
|
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"
|
sp+="=== ПРАВИЛА ПРОЕКТА ===\n"
|
||||||
for f in *.md; do
|
for f in *.md; do
|
||||||
[ -f "$f" ] && sp+="\n--- Файл $f ---\n$(cat "$f")\n"
|
[ -f "$f" ] && sp+="\n--- Файл $f ---\n$(cat "$f")\n"
|
||||||
done
|
done
|
||||||
# Единый source of truth — сохраняем для всех агентов
|
echo -e "$sp"
|
||||||
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"
|
|
||||||
}
|
}
|
||||||
HELPEREOF
|
HELPEREOF
|
||||||
chmod +x "$HELPERS_FILE"
|
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")
|
GPT_SECTION=$(awk '/^cat > "\$BIN_DIR\/ai-gpt"/,/^GPTEOF/' "$SCRIPT")
|
||||||
KIMI_SECTION=$(awk '/^cat > "\$BIN_DIR\/ai-kimi"/,/^KIMIEOF/' "$SCRIPT")
|
KIMI_SECTION=$(awk '/^cat > "\$BIN_DIR\/ai-kimi"/,/^KIMIEOF/' "$SCRIPT")
|
||||||
GEMINI_SECTION=$(awk '/^cat > "\$BIN_DIR\/ai-gemini"/,/^GEMINIEOF/' "$SCRIPT")
|
GEMINI_SECTION=$(awk '/^cat > "\$BIN_DIR\/ai-gemini"/,/^GEMINIEOF/' "$SCRIPT")
|
||||||
|
HELPERS_SECTION=$(awk '/^cat > "\$HELPERS_FILE"/,/^HELPEREOF/' "$SCRIPT")
|
||||||
|
|
||||||
# ── ai-gpt: auto-install codex ────────────────────────────────────────────
|
# ── ai-gpt: auto-install codex ────────────────────────────────────────────
|
||||||
test_gpt_autoinstall() {
|
test_gpt_autoinstall() {
|
||||||
@@ -72,6 +73,29 @@ test_gemini_native_launcher() {
|
|||||||
fi
|
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 ────────────────────────────────────────
|
# ── Fix 7: trap quotes $TMP correctly ────────────────────────────────────────
|
||||||
test_fix7_trap_tmp() {
|
test_fix7_trap_tmp() {
|
||||||
if grep -q "trap 'rm -rf \"\$TMP\"' EXIT" "$SCRIPT"; then
|
if grep -q "trap 'rm -rf \"\$TMP\"' EXIT" "$SCRIPT"; then
|
||||||
@@ -98,6 +122,8 @@ test_kimi_autoinstall
|
|||||||
test_kimi_no_proxy
|
test_kimi_no_proxy
|
||||||
test_kimi_artemox_config
|
test_kimi_artemox_config
|
||||||
test_gemini_native_launcher
|
test_gemini_native_launcher
|
||||||
|
test_global_rules_include_quality_guidelines
|
||||||
|
test_native_rule_files_generated
|
||||||
test_fix7_trap_tmp
|
test_fix7_trap_tmp
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
|
|||||||
Reference in New Issue
Block a user