From cd804713071dc794954057f79df99042a93d73e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Mon, 24 Aug 2026 20:54:42 -0400 Subject: [PATCH] Add AI default-agent mapping via harness-native config persistence Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01QKxGW1raAWaqeU8WdHsMsp --- bin/omarchy-cn-ai-default | 70 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100755 bin/omarchy-cn-ai-default diff --git a/bin/omarchy-cn-ai-default b/bin/omarchy-cn-ai-default new file mode 100755 index 00000000..4a067a93 --- /dev/null +++ b/bin/omarchy-cn-ai-default @@ -0,0 +1,70 @@ +#!/bin/bash +# omarchy:summary=Map an AI profile onto Omarchy's default agent and hotkey +# omarchy:args=[profile] +# omarchy:examples=omarchycn ai default | omarchycn ai default work + +set -euo pipefail + +source "$OMARCHY_PATH/cn/lib/ai.sh" + +profile="${1:-$(cn_ai_current_profile)}" + +if [[ ! -f $CN_AI_PROFILE_DIR/$profile.toml ]]; then + echo "No such profile: $profile" >&2 + exit 1 +fi + +harness=$(cn_ai_profile_field "$profile" harness) +provider=$(cn_ai_profile_field "$profile" provider) +model=$(cn_ai_profile_field "$profile" model) + +# Only harnesses whose provider config persists in their own files can back +# the upstream hotkey; opencode is session-env only, natives self-auth +case "$harness" in +claude-code) agent="claude" ;; +codex) agent="codex" ;; +*) + echo "$harness 无法映射为上游默认 Agent;用 omarchycn ai launch $profile 启动" >&2 + exit 1 + ;; +esac + +key=$(omarchy-cn-ai-secret get "$provider") + +case "$harness" in +claude-code) + # Persist provider env in Claude Code's own settings so the upstream + # Super+Shift+Ctrl+A -> omarchy-agent path launches fully configured + settings="$HOME/.claude/settings.json" + mkdir -p "${settings%/*}" + base=$(cn_ai_endpoint "$provider" anthropic) + fast=$(cn_ai_fast_model "$provider") + current="{}" + if [[ -s $settings ]]; then + current=$(cat "$settings") + cp "$settings" "$settings.omarchycn-bak-$(date +%Y%m%d-%H%M%S)" + fi + jq --arg base "$base" --arg key "$key" --arg model "$model" --arg fast "$fast" \ + '.env = (.env // {}) + { + ANTHROPIC_BASE_URL: $base, + ANTHROPIC_AUTH_TOKEN: $key, + ANTHROPIC_API_KEY: $key, + ANTHROPIC_MODEL: $model, + ANTHROPIC_DEFAULT_SONNET_MODEL: $model, + ANTHROPIC_DEFAULT_OPUS_MODEL: $model, + ANTHROPIC_DEFAULT_HAIKU_MODEL: $fast + }' <<<"$current" > "$settings.omarchycn-new" + chmod 600 "$settings.omarchycn-new" + mv "$settings.omarchycn-new" "$settings" + ;; +codex) + cn_ai_render_codex_config "$provider" "$model" "$key" + ;; +esac + +agent_file="$HOME/.config/omarchy/defaults/agent" +mkdir -p "${agent_file%/*}" +printf '%s\n' "$agent" > "$agent_file" + +echo "默认 Agent: $agent($profile: $provider x $model)" +echo "快捷键 Super+Shift+Ctrl+A 或 'omarchy agent' 将以该配置启动"