功能(tools): 添加 OpenCode 启动脚本及快捷别名
- 新增 runoc.sh 支持 GLM 和 DeepSeek 模型快捷切换 - 在 bashrc.tail.sh 中添加 oc 系列别名 - 添加 tmux pane 级 OpenCode 配置继承
This commit is contained in:
@@ -26,15 +26,38 @@ alias cc51='cc 51'
|
||||
alias ccds='cc -p deepseek ds'
|
||||
alias ccdsf='cc -p deepseek dsf'
|
||||
|
||||
# tmux pane 级模型继承:从 pane option 读取模型配置(由 runcc.sh 写入)
|
||||
# ── OpenCode 启动函数(参数透传至 runoc.sh)──────────────────
|
||||
oc() { $BIN_PATH/runoc.sh "$@"; }
|
||||
|
||||
# OpenCode 模型快捷方式: oc51, oc51 ..., oc -p deepseek ds ...
|
||||
alias oc45='oc 45'
|
||||
alias oc45a='oc 45a'
|
||||
alias oc46='oc 46'
|
||||
alias oc47='oc 47'
|
||||
alias oc5='oc 5'
|
||||
alias oc5t='oc 5t'
|
||||
alias oc51='oc 51'
|
||||
|
||||
# OpenCode DeepSeek 快捷方式
|
||||
alias ocds='oc -p deepseek ds'
|
||||
alias ocdsf='oc -p deepseek dsf'
|
||||
|
||||
# tmux pane 级模型继承:从 pane option 读取模型配置(由 runcc.sh / runoc.sh 写入)
|
||||
# 覆盖 session 级环境变量,实现同 session 不同 pane 的模型隔离
|
||||
if [ -n "${TMUX:-}" ]; then
|
||||
_model="$(tmux show-option -pv @anthropic_model 2>/dev/null || true)"
|
||||
if [ -n "$_model" ]; then
|
||||
export ANTHROPIC_DEFAULT_HAIKU_MODEL="$_model"
|
||||
export ANTHROPIC_DEFAULT_SONNET_MODEL="$_model"
|
||||
export ANTHROPIC_DEFAULT_OPUS_MODEL="$_model"
|
||||
# Claude Code 模型继承
|
||||
_cc_model="$(tmux show-option -pv @anthropic_model 2>/dev/null || true)"
|
||||
if [ -n "$_cc_model" ]; then
|
||||
export ANTHROPIC_DEFAULT_HAIKU_MODEL="$_cc_model"
|
||||
export ANTHROPIC_DEFAULT_SONNET_MODEL="$_cc_model"
|
||||
export ANTHROPIC_DEFAULT_OPUS_MODEL="$_cc_model"
|
||||
fi
|
||||
unset _model
|
||||
unset _cc_model
|
||||
|
||||
# OpenCode 配置继承
|
||||
_oc_config="$(tmux show-environment -t "$(tmux display-message -p '#{session_id}')" OPENCODE_CONFIG 2>/dev/null | sed 's/^OPENCODE_CONFIG=//' || true)"
|
||||
if [ -n "$_oc_config" ]; then
|
||||
export OPENCODE_CONFIG="$_oc_config"
|
||||
fi
|
||||
unset _oc_config
|
||||
fi
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
#!/bin/bash
|
||||
# OpenCode 启动脚本
|
||||
# 支持通过快捷名指定模型
|
||||
#
|
||||
# Provider ID:
|
||||
# zhipuai-coding-plan 智谱 GLM 系列(凭据在 opencode.json + auth.json 中配置)
|
||||
# deepseek DeepSeek 系列(凭据在 auth.json 中配置)
|
||||
#
|
||||
# 用法:
|
||||
# runoc.sh # 默认模型 (GLM 5.1)
|
||||
# runoc.sh 51 # GLM 5.1
|
||||
# runoc.sh ds # DeepSeek V4 Pro
|
||||
# runoc.sh -p deepseek # DeepSeek Provider + 默认模型
|
||||
# runoc.sh -p deepseek ds # DeepSeek Provider + DeepSeek V4 Pro
|
||||
|
||||
# ── 参数解析 ──────────────────────────────────────────────
|
||||
MODEL_KEY=""
|
||||
PROVIDER_OVERRIDE=""
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--provider|-p)
|
||||
[ $# -ge 2 ] || { echo "错误: --provider 需要参数" >&2; exit 1; }
|
||||
PROVIDER_OVERRIDE="$2"; shift 2
|
||||
;;
|
||||
-h|--help)
|
||||
echo "用法: runoc.sh [选项] [模型]"
|
||||
echo ""
|
||||
echo "选项:"
|
||||
echo " --provider, -p <名称> API 提供商 (glm / deepseek)"
|
||||
echo ""
|
||||
echo "GLM 模型: 45|45a|46|47|5|5t|51"
|
||||
echo "DeepSeek 模型: ds|dsf"
|
||||
echo "其他: 直接传入 provider/model 格式"
|
||||
echo ""
|
||||
echo "示例:"
|
||||
echo " runoc.sh # 默认 GLM 5.1"
|
||||
echo " runoc.sh 47 # GLM 4.7"
|
||||
echo " runoc.sh -p deepseek ds # DeepSeek V4 Pro"
|
||||
echo " runoc.sh zhipuai-coding-plan/glm-5.1 # 完整格式"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
MODEL_KEY="$1"; shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# ── Provider & 模型解析 ──────────────────────────────────
|
||||
MODEL_KEY="${MODEL_KEY:-51}"
|
||||
|
||||
case "$MODEL_KEY" in
|
||||
45) MODEL="zhipuai-coding-plan/glm-4.5" ;;
|
||||
45a) MODEL="zhipuai-coding-plan/glm-4.5-air" ;;
|
||||
46) MODEL="zhipuai-coding-plan/glm-4.6" ;;
|
||||
47) MODEL="zhipuai-coding-plan/glm-4.7" ;;
|
||||
5) MODEL="zhipuai-coding-plan/glm-5" ;;
|
||||
5t) MODEL="zhipuai-coding-plan/glm-5-turbo" ;;
|
||||
51) MODEL="zhipuai-coding-plan/glm-5.1" ;;
|
||||
ds) MODEL="deepseek/deepseek-v4-pro"; PROVIDER_OVERRIDE="deepseek" ;;
|
||||
dsf) MODEL="deepseek/deepseek-v4-flash"; PROVIDER_OVERRIDE="deepseek" ;;
|
||||
*) MODEL="$MODEL_KEY" ;;
|
||||
esac
|
||||
|
||||
if [ -n "$PROVIDER_OVERRIDE" ]; then
|
||||
case "$MODEL" in
|
||||
*/*) ;;
|
||||
*) MODEL="${PROVIDER_OVERRIDE}/${MODEL}" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# ── tmux 模型传播 ────────────────────────────────────────
|
||||
if [ -n "${TMUX:-}" ]; then
|
||||
SESSION_ID="$(tmux display-message -p '#{session_id}')"
|
||||
tmux set-option -p @opencode_model "$MODEL"
|
||||
fi
|
||||
|
||||
# ── 启动 OpenCode ────────────────────────────────────────
|
||||
echo "启动 OpenCode (模型: $MODEL)"
|
||||
opencode -m "$MODEL"
|
||||
Reference in New Issue
Block a user