Технически именно этим мне нравится WARP... Ну уже и не нужен получается 😆
это в zshrc
# ── AI Command-Not-Found via claude CLI ───────────────────
# Глобальная переменная для передачи команды в precmd
_AI_CMD_FILE="${TMPDIR:-/tmp}/.zsh_ai_cmd_$$"
_ai_precmd() {
if [[ -f "$_AI_CMD_FILE" ]]; then
local cmd
cmd=$(<"$_AI_CMD_FILE")
rm -f "$_AI_CMD_FILE"
[[ -n "$cmd" ]] && print -z "$cmd"
fi
}
precmd_functions+=(_ai_precmd)
command_not_found_handler() {
if ! command -v claude &>/dev/null; then
echo "zsh: command not found: $1" >&2
return 127
fi
echo "\033[90m⟳ Asking Claude...\033[0m" >&2
local response
response=$(claude -p --model haiku \
--system-prompt "You are a terminal assistant. Reply with ONLY the raw shell command. No explanation, no markdown, no backticks. Just the command itself." \
"$*" 2>/dev/null)
if [[ -n "$response" ]]; then
echo "\033[36m→ $response\033[0m" >&2
# Пишем в файл — main shell прочитает в precmd
echo "$response" > "$_AI_CMD_FILE"
fi
return 127
}