Lumoswitch 文档
Agent 接入

Continue Agent 接入

Continue 是可配置的编码 Agent,适合在终端、VS Code 或 JetBrains 中进行问答、编辑与工具调用。官方 CLI 命令是 cn;CLI 和 IDE 使用相同的 YAML Schema,但 Secret 来源与启动方式不同。目前没有独立的 Continue Desktop 应用。

现状说明:Continue 官方仓库已设为只读并停止积极维护,VS Code、CLI 与 JetBrains 的最终版本为 2.0.0;官方建议 JetBrains 用户优先使用 CLI。本文按该最终版本维护。

开始前,请创建使用 OpenAI-compatible 输出的 Lumoswitch 配置 API。

方式总览

方式CLIVS Code / JetBrains
仅本次启动支持,通过 cn --config 加载临时文件不支持;扩展不能读取终端进程环境变量
永久使用支持,写入原生 YAML 与可选维护启动器支持,合并到本机 config.yaml.env
清除接入精确删除专属文件按字段移除 Lumoswitch 模型与 Secret

准备连接信息

占位符应填写的内容
{{api_base_url}}配置 API 的下游地址,包含 /v1
{{access_key}}当前配置使用的 Lumoswitch Access Key
{{model}}配置 API 显示的下游模型名称
{{continue_config_json}}包含全部下游模型的 Continue 配置

仅本次启动

下面命令在系统临时目录创建 YAML,只传给本次 cn 进程,并在退出时自动删除:

(
  set -e
  LUMOSWITCH_CONTINUE_CONFIG="$(mktemp "${TMPDIR:-/tmp}/lumoswitch-continue.XXXXXX")"
  trap 'rm -f "$LUMOSWITCH_CONTINUE_CONFIG"' EXIT
  cat > "$LUMOSWITCH_CONTINUE_CONFIG" <<'LUMOSWITCH_CONTINUE_CONFIG_EOF'
{{continue_config_json}}
LUMOSWITCH_CONTINUE_CONFIG_EOF
  chmod 600 "$LUMOSWITCH_CONTINUE_CONFIG"
  env LUMOSWITCH_CONTINUE_API_KEY="{{access_key}}" \
    cn --config "$LUMOSWITCH_CONTINUE_CONFIG"
)

如果目标模型不支持工具调用,请移除 capabilities: - tool_use,否则 Continue 会尝试模型无法完成的 Agent 操作。

CLI 永久使用

这条命令会首次保留原文件,然后写入 Continue 原生 ~/.continue/config.yaml~/.continue/.env,并保存可选维护启动器:

set -e
LUMOSWITCH_ROOT="$HOME/.config/lumoswitch/agents/continue"
LUMOSWITCH_ENV="$LUMOSWITCH_ROOT/env.sh"
LUMOSWITCH_LAUNCHER="$HOME/.local/bin/lumoswitch-continue"
mkdir -p "$LUMOSWITCH_ROOT/original" "$(dirname "$LUMOSWITCH_LAUNCHER")"
umask 077

preserve_lumoswitch_original() {
  LUMOSWITCH_NATIVE_FILE="$1"
  LUMOSWITCH_ORIGINAL_NAME="$2"
  LUMOSWITCH_STATE="$LUMOSWITCH_ROOT/original/$LUMOSWITCH_ORIGINAL_NAME.state"
  if [ -f "$LUMOSWITCH_STATE" ]; then return; fi
  if [ -f "$LUMOSWITCH_NATIVE_FILE" ]; then
    cp "$LUMOSWITCH_NATIVE_FILE" "$LUMOSWITCH_ROOT/original/$LUMOSWITCH_ORIGINAL_NAME"
    printf '%s\n' present > "$LUMOSWITCH_STATE"
  else
    printf '%s\n' absent > "$LUMOSWITCH_STATE"
  fi
}

if [ -f "$LUMOSWITCH_LAUNCHER" ]; then
  LUMOSWITCH_BACKUP="$LUMOSWITCH_LAUNCHER.backup.$(date +%Y%m%d-%H%M%S)-$$"
  cp "$LUMOSWITCH_LAUNCHER" "$LUMOSWITCH_BACKUP"
  chmod 600 "$LUMOSWITCH_BACKUP"
fi

LUMOSWITCH_CONTINUE_CONFIG="$HOME/.continue/config.yaml"
LUMOSWITCH_CONTINUE_ENV="$HOME/.continue/.env"
mkdir -p "$HOME/.continue"
preserve_lumoswitch_original "$LUMOSWITCH_CONTINUE_CONFIG" config
preserve_lumoswitch_original "$LUMOSWITCH_CONTINUE_ENV" env
cat > "$LUMOSWITCH_CONTINUE_CONFIG" <<'LUMOSWITCH_CONFIG_EOF'
{{continue_config_json}}
LUMOSWITCH_CONFIG_EOF
cat > "$LUMOSWITCH_CONTINUE_ENV" <<'LUMOSWITCH_ENV_EOF'
LUMOSWITCH_CONTINUE_API_KEY={{access_key}}
LUMOSWITCH_ENV_EOF

cat > "$LUMOSWITCH_ENV" <<'LUMOSWITCH_ENV_EOF'
: # This Agent reads its persistent values from its own default files.
LUMOSWITCH_ENV_EOF

case "$SHELL" in
  */zsh) LUMOSWITCH_PROFILE="$HOME/.zshrc" ;;
  */bash) LUMOSWITCH_PROFILE="$HOME/.bashrc" ;;
  *) LUMOSWITCH_PROFILE="$HOME/.profile" ;;
esac
touch "$LUMOSWITCH_PROFILE"
LUMOSWITCH_PROFILE_MARKER='# Lumoswitch Agent: continue'
LUMOSWITCH_SOURCE_LINE='[ -f "$HOME/.config/lumoswitch/agents/continue/env.sh" ] && . "$HOME/.config/lumoswitch/agents/continue/env.sh"'
if ! grep -Fqx "$LUMOSWITCH_SOURCE_LINE" "$LUMOSWITCH_PROFILE"; then
  printf '\n%s\n%s\n' "$LUMOSWITCH_PROFILE_MARKER" "$LUMOSWITCH_SOURCE_LINE" >> "$LUMOSWITCH_PROFILE"
fi
printf '%s\n' "$LUMOSWITCH_PROFILE" > "$LUMOSWITCH_ROOT/profile-path"

cat > "$LUMOSWITCH_LAUNCHER" <<'LUMOSWITCH_LAUNCHER_EOF'
#!/usr/bin/env bash
set -e
LUMOSWITCH_ROOT="$HOME/.config/lumoswitch/agents/continue"
LUMOSWITCH_ENV="$LUMOSWITCH_ROOT/env.sh"
LUMOSWITCH_LAUNCHER="$HOME/.local/bin/lumoswitch-continue"

restore_lumoswitch_original() {
  LUMOSWITCH_NATIVE_FILE="$1"
  LUMOSWITCH_ORIGINAL_NAME="$2"
  LUMOSWITCH_STATE="$LUMOSWITCH_ROOT/original/$LUMOSWITCH_ORIGINAL_NAME.state"
  if [ ! -f "$LUMOSWITCH_STATE" ]; then return; fi
  if [ "$(cat "$LUMOSWITCH_STATE")" = present ]; then
    mkdir -p "$(dirname "$LUMOSWITCH_NATIVE_FILE")"
    cp "$LUMOSWITCH_ROOT/original/$LUMOSWITCH_ORIGINAL_NAME" "$LUMOSWITCH_NATIVE_FILE"
  else
    rm -f "$LUMOSWITCH_NATIVE_FILE"
  fi
}

if [ "$1" = "--lumoswitch-clean" ]; then
  if [ -f "$LUMOSWITCH_ROOT/profile-path" ]; then
    LUMOSWITCH_PROFILE="$(cat "$LUMOSWITCH_ROOT/profile-path")"
    if [ -f "$LUMOSWITCH_PROFILE" ]; then
      LUMOSWITCH_PROFILE_MARKER='# Lumoswitch Agent: continue'
      LUMOSWITCH_SOURCE_LINE='[ -f "$HOME/.config/lumoswitch/agents/continue/env.sh" ] && . "$HOME/.config/lumoswitch/agents/continue/env.sh"'
      LUMOSWITCH_PROFILE_TMP="$LUMOSWITCH_PROFILE.lumoswitch.$$"
      awk -v marker="$LUMOSWITCH_PROFILE_MARKER" -v source="$LUMOSWITCH_SOURCE_LINE" '$0 != marker && $0 != source' "$LUMOSWITCH_PROFILE" > "$LUMOSWITCH_PROFILE_TMP"
      mv "$LUMOSWITCH_PROFILE_TMP" "$LUMOSWITCH_PROFILE"
    fi
  fi
  restore_lumoswitch_original "$HOME/.continue/config.yaml" config
  restore_lumoswitch_original "$HOME/.continue/.env" env
  if [ -d "$LUMOSWITCH_ROOT" ]; then
    find "$LUMOSWITCH_ROOT" -depth \( -type f -o -type l \) -delete
    find "$LUMOSWITCH_ROOT" -depth -type d -exec rmdir {} \; 2>/dev/null || true
  fi
  find "$(dirname "$LUMOSWITCH_LAUNCHER")" -maxdepth 1 -type f -name 'lumoswitch-continue.backup.*' -delete
  rm -f "$LUMOSWITCH_LAUNCHER"
  printf '%s\n' 'Lumoswitch native setup and optional launcher removed. Open a new terminal to refresh the environment.'
  exit 0
fi

if [ -f "$LUMOSWITCH_ENV" ]; then . "$LUMOSWITCH_ENV"; fi
exec cn "$@"
LUMOSWITCH_LAUNCHER_EOF

chmod 600 "$LUMOSWITCH_ENV"
find "$LUMOSWITCH_ROOT" -type f -exec chmod 600 {} \;
chmod 700 "$LUMOSWITCH_LAUNCHER"
. "$LUMOSWITCH_ENV"
printf '%s\n' 'Native Lumoswitch setup saved. Future command: cn'
printf '%s\n' 'Optional maintenance launcher: ~/.local/bin/lumoswitch-continue'
cn

以后运行:

cn

Windows PowerShell 原生导入

以下命令在 Windows PowerShell 中原生运行,不需要 WSL。它们与本页的 macOS/Linux 模板使用同一组连接值。

仅本次使用(Windows)

& {
  $ErrorActionPreference = 'Stop'
  $lumoswitchConfig = Join-Path ([IO.Path]::GetTempPath()) ('lumoswitch-' + [Guid]::NewGuid().ToString('N') + '.yaml')
  $lumoswitchConfigContent = @'
{{continue_config_json}}
'@
  [IO.File]::WriteAllText($lumoswitchConfig, $lumoswitchConfigContent, [Text.UTF8Encoding]::new($false))
  $lumoswitchEnvironmentNames = @('LUMOSWITCH_CONTINUE_API_KEY')
  $lumoswitchPreviousEnvironment = @{}
  foreach ($lumoswitchName in $lumoswitchEnvironmentNames) {
    $lumoswitchPreviousEnvironment[$lumoswitchName] = [Environment]::GetEnvironmentVariable($lumoswitchName, 'Process')
  }
  $lumoswitchExitCode = 0
  try {
    [Environment]::SetEnvironmentVariable('LUMOSWITCH_CONTINUE_API_KEY', '{{access_key}}', 'Process')
    $lumoswitchArguments = @('--config', $lumoswitchConfig)
    $lumoswitchExecutable = Get-Command 'cn.cmd' -CommandType Application -ErrorAction SilentlyContinue
    if ($null -eq $lumoswitchExecutable) { $lumoswitchExecutable = Get-Command 'cn' -CommandType Application -ErrorAction Stop }
    & $lumoswitchExecutable.Path @lumoswitchArguments
    if ($null -ne $LASTEXITCODE) { $lumoswitchExitCode = $LASTEXITCODE }
  } finally {
    foreach ($lumoswitchName in $lumoswitchEnvironmentNames) {
      [Environment]::SetEnvironmentVariable($lumoswitchName, $lumoswitchPreviousEnvironment[$lumoswitchName], 'Process')
    }
    Remove-Item -LiteralPath $lumoswitchConfig -Force -ErrorAction SilentlyContinue
  }
  if ($lumoswitchExitCode -ne 0) { throw 'cn exited with code ' + $lumoswitchExitCode }
}

永久使用(Windows)

该命令会备份已有的 Lumoswitch 专用文件,并为配置和启动器收紧当前用户的访问权限。

& {
  $ErrorActionPreference = 'Stop'
  $lumoswitchRoot = Join-Path $env:LOCALAPPDATA 'Lumoswitch\agents\continue'
  $lumoswitchLauncher = Join-Path $env:LOCALAPPDATA 'Lumoswitch\bin\lumoswitch-continue.ps1'
  $lumoswitchBackupSuffix = (Get-Date -Format 'yyyyMMdd-HHmmss') + '-' + $PID

  function Protect-LumoswitchFile([string] $Path) {
    $lumoswitchSid = [Security.Principal.WindowsIdentity]::GetCurrent().User.Value
    & icacls.exe $Path '/inheritance:r' '/grant:r' ('*' + $lumoswitchSid + ':(F)') '*S-1-5-18:(F)' '*S-1-5-32-544:(F)' | Out-Null
    if ($LASTEXITCODE -ne 0) { throw "Could not restrict access to $Path" }
  }

  function Install-LumoswitchFile([string] $Path, [string] $Content) {
    [IO.Directory]::CreateDirectory((Split-Path -Parent $Path)) | Out-Null
    if (Test-Path -LiteralPath $Path) {
      $lumoswitchItem = Get-Item -LiteralPath $Path -Force
      if ($lumoswitchItem.PSIsContainer -or ($lumoswitchItem.Attributes -band [IO.FileAttributes]::ReparsePoint)) {
        throw "Lumoswitch refused to replace a directory or link: $Path"
      }
      $lumoswitchBackup = $Path + '.backup.' + $lumoswitchBackupSuffix
      Copy-Item -LiteralPath $Path -Destination $lumoswitchBackup
      Protect-LumoswitchFile $lumoswitchBackup
    }
    $lumoswitchTemporary = $Path + '.' + [Guid]::NewGuid().ToString('N') + '.tmp'
    try {
      [IO.File]::WriteAllText($lumoswitchTemporary, $Content, [Text.UTF8Encoding]::new($false))
      Move-Item -LiteralPath $lumoswitchTemporary -Destination $Path -Force
      Protect-LumoswitchFile $Path
    } finally {
      Remove-Item -LiteralPath $lumoswitchTemporary -Force -ErrorAction SilentlyContinue
    }
  }

  function Preserve-LumoswitchOriginal([string] $Path, [string] $Name) {
    $lumoswitchOriginalRoot = Join-Path $lumoswitchRoot 'original'
    $lumoswitchState = Join-Path $lumoswitchOriginalRoot ($Name + '.state')
    if (Test-Path -LiteralPath $lumoswitchState -PathType Leaf) { return }
    [IO.Directory]::CreateDirectory($lumoswitchOriginalRoot) | Out-Null
    if (Test-Path -LiteralPath $Path -PathType Leaf) {
      $lumoswitchOriginal = Join-Path $lumoswitchOriginalRoot $Name
      Copy-Item -LiteralPath $Path -Destination $lumoswitchOriginal
      Protect-LumoswitchFile $lumoswitchOriginal
      [IO.File]::WriteAllText($lumoswitchState, 'present', [Text.UTF8Encoding]::new($false))
    } else {
      [IO.File]::WriteAllText($lumoswitchState, 'absent', [Text.UTF8Encoding]::new($false))
    }
    Protect-LumoswitchFile $lumoswitchState
  }

  [IO.Directory]::CreateDirectory($lumoswitchRoot) | Out-Null
  $lumoswitchConfig = Join-Path $HOME '.continue\config.yaml'
  $lumoswitchEnv = Join-Path $HOME '.continue\.env'
  Preserve-LumoswitchOriginal $lumoswitchConfig 'config'
  Preserve-LumoswitchOriginal $lumoswitchEnv 'env'
  $lumoswitchConfigContent = @'
{{continue_config_json}}
'@
  Install-LumoswitchFile $lumoswitchConfig $lumoswitchConfigContent
  Install-LumoswitchFile $lumoswitchEnv 'LUMOSWITCH_CONTINUE_API_KEY={{access_key}}'

  $lumoswitchEnvironment = [ordered]@{}
  # No user environment variables are required for this Agent.
  foreach ($lumoswitchEntry in $lumoswitchEnvironment.GetEnumerator()) {
    [Environment]::SetEnvironmentVariable($lumoswitchEntry.Key, $lumoswitchEntry.Value, 'User')
    [Environment]::SetEnvironmentVariable($lumoswitchEntry.Key, $lumoswitchEntry.Value, 'Process')
  }

  $lumoswitchLauncherContent = @'
param([Parameter(ValueFromRemainingArguments = $true)][string[]] $AgentArgs)
$ErrorActionPreference = 'Stop'
$lumoswitchRoot = Join-Path $env:LOCALAPPDATA 'Lumoswitch\agents\continue'
$lumoswitchLauncher = Join-Path $env:LOCALAPPDATA 'Lumoswitch\bin\lumoswitch-continue.ps1'

function Remove-LumoswitchFile([string] $Path) {
  if (-not (Test-Path -LiteralPath $Path)) { return }
  $lumoswitchItem = Get-Item -LiteralPath $Path -Force
  if ($lumoswitchItem.PSIsContainer -or ($lumoswitchItem.Attributes -band [IO.FileAttributes]::ReparsePoint)) {
    throw "Lumoswitch refused to remove a directory or link: $Path"
  }
  Remove-Item -LiteralPath $Path -Force
}

function Restore-LumoswitchOriginal([string] $Path, [string] $Name) {
  $lumoswitchOriginalRoot = Join-Path $lumoswitchRoot 'original'
  $lumoswitchState = Join-Path $lumoswitchOriginalRoot ($Name + '.state')
  if (-not (Test-Path -LiteralPath $lumoswitchState -PathType Leaf)) { return }
  if ((Get-Content -LiteralPath $lumoswitchState -Raw).Trim() -eq 'present') {
    [IO.Directory]::CreateDirectory((Split-Path -Parent $Path)) | Out-Null
    Copy-Item -LiteralPath (Join-Path $lumoswitchOriginalRoot $Name) -Destination $Path -Force
  } else {
    Remove-LumoswitchFile $Path
  }
}

if ($AgentArgs.Count -gt 0 -and $AgentArgs[0] -eq '--lumoswitch-clean') {
  foreach ($lumoswitchName in @()) {
    [Environment]::SetEnvironmentVariable($lumoswitchName, $null, 'User')
    [Environment]::SetEnvironmentVariable($lumoswitchName, $null, 'Process')
  }
  Restore-LumoswitchOriginal (Join-Path $HOME '.continue\config.yaml') 'config'
  Restore-LumoswitchOriginal (Join-Path $HOME '.continue\.env') 'env'
  # No external Lumoswitch file needs removal.
  if (Test-Path -LiteralPath $lumoswitchRoot -PathType Container) {
    $lumoswitchRootItem = Get-Item -LiteralPath $lumoswitchRoot -Force
    if ($lumoswitchRootItem.Attributes -band [IO.FileAttributes]::ReparsePoint) { throw 'Lumoswitch refused to clean through a linked directory.' }
    foreach ($lumoswitchFile in @(Get-ChildItem -LiteralPath $lumoswitchRoot -File -Recurse -Force)) { Remove-LumoswitchFile $lumoswitchFile.FullName }
    foreach ($lumoswitchDirectory in @(Get-ChildItem -LiteralPath $lumoswitchRoot -Directory -Recurse -Force | Sort-Object FullName -Descending)) {
      if ($null -eq (Get-ChildItem -LiteralPath $lumoswitchDirectory.FullName -Force | Select-Object -First 1)) { Remove-Item -LiteralPath $lumoswitchDirectory.FullName -Force }
    }
    if ($null -eq (Get-ChildItem -LiteralPath $lumoswitchRoot -Force | Select-Object -First 1)) { Remove-Item -LiteralPath $lumoswitchRoot -Force }
  }
  $lumoswitchBin = Split-Path -Parent $lumoswitchLauncher
  if (Test-Path -LiteralPath $lumoswitchBin -PathType Container) {
    foreach ($lumoswitchBackup in @(Get-ChildItem -LiteralPath $lumoswitchBin -Filter 'lumoswitch-continue.ps1.backup.*' -File -Force)) { Remove-LumoswitchFile $lumoswitchBackup.FullName }
  }
  Remove-LumoswitchFile $lumoswitchLauncher
  Write-Host 'Lumoswitch native setup and optional launcher removed. Open a new terminal to refresh the environment.'
  exit 0
}

$lumoswitchEnvironment = [ordered]@{}
# No process environment variables are required for this Agent.
foreach ($lumoswitchEntry in $lumoswitchEnvironment.GetEnumerator()) {
  [Environment]::SetEnvironmentVariable($lumoswitchEntry.Key, $lumoswitchEntry.Value, 'Process')
}
$lumoswitchExecutable = Get-Command 'cn.cmd' -CommandType Application -ErrorAction SilentlyContinue
if ($null -eq $lumoswitchExecutable) { $lumoswitchExecutable = Get-Command 'cn.exe' -CommandType Application -ErrorAction SilentlyContinue }
if ($null -eq $lumoswitchExecutable) { $lumoswitchExecutable = Get-Command 'cn' -CommandType Application -ErrorAction Stop }
$lumoswitchArguments = @()
& $lumoswitchExecutable.Path @lumoswitchArguments @AgentArgs
if ($null -ne $LASTEXITCODE) { exit $LASTEXITCODE }
'@
  Install-LumoswitchFile $lumoswitchLauncher $lumoswitchLauncherContent
  Write-Host 'Native Lumoswitch setup saved. Future command: cn'
  Write-Host 'Optional maintenance launcher:' $lumoswitchLauncher
  $lumoswitchExecutable = Get-Command 'cn.cmd' -CommandType Application -ErrorAction SilentlyContinue
  if ($null -eq $lumoswitchExecutable) { $lumoswitchExecutable = Get-Command 'cn.exe' -CommandType Application -ErrorAction SilentlyContinue }
  if ($null -eq $lumoswitchExecutable) { $lumoswitchExecutable = Get-Command 'cn' -CommandType Application -ErrorAction Stop }
  $lumoswitchArguments = @()
  & $lumoswitchExecutable.Path @lumoswitchArguments
  if ($null -ne $LASTEXITCODE -and $LASTEXITCODE -ne 0) { throw 'cn exited with code ' + $LASTEXITCODE }
}

导入会写入 Agent 支持的持久化配置,并直接启动 cn。保存的 Lumoswitch 维护脚本不是启动 Agent 的必需入口;需要恢复或移除此接入时,运行它并追加 --lumoswitch-clean

清除 CLI 接入

Windows PowerShell

先退出该 Agent 的所有 Lumoswitch 会话,再运行下面的命令。可选维护启动器会删除受管原生配置、恢复已保留的共享文件、清除 Lumoswitch 用户环境变量,并移除自身。

& {
  $lumoswitchLauncher = Join-Path $env:LOCALAPPDATA 'Lumoswitch\bin\lumoswitch-continue.ps1'
  if (-not (Test-Path -LiteralPath $lumoswitchLauncher -PathType Leaf)) {
    throw 'The optional Lumoswitch maintenance launcher is missing. Run persistent import again before cleanup.'
  }
  & powershell.exe -NoLogo -NoProfile -ExecutionPolicy Bypass -File $lumoswitchLauncher --lumoswitch-clean
}

macOS / Linux

"$HOME/.local/bin/lumoswitch-continue" --lumoswitch-clean

命令只删除本文创建的 Lumoswitch 文件,不删除 Continue 的索引、会话、默认配置或其他模型。

VS Code 与 JetBrains 永久接入

~/.continue/config.yaml 已有的 models 列表中追加下面一项,不要覆盖整个文件:

- name: Lumoswitch
  provider: openai
  model: "{{model}}"
  apiBase: "{{api_base_url}}"
  apiKey: ${{ secrets.LUMOSWITCH_CONTINUE_API_KEY }}
  capabilities:
    - tool_use

再把下面一行添加到 ~/.continue/.env,不要提交到 Git:

LUMOSWITCH_CONTINUE_API_KEY={{access_key}}

保存后 Continue 会重新加载配置;必要时重载 IDE 窗口。IDE 没有临时接入命令,因为 VS Code 和 JetBrains 扩展不能读取你在终端中 export 的进程变量,必须从 .env 解析 Secret。

清除 IDE 接入

  1. ~/.continue/config.yamlmodels 中只删除 name: Lumoswitch 对应的完整模型项。
  2. 运行下面命令,只从 Continue 的 .env 删除 Lumoswitch 变量:
if [ -f "$HOME/.continue/.env" ]; then
  umask 077
  LUMOSWITCH_ENV_TEMP="$(mktemp "${TMPDIR:-/tmp}/lumoswitch-continue-env.XXXXXX")"
  awk '!/^LUMOSWITCH_CONTINUE_API_KEY=/' "$HOME/.continue/.env" > "$LUMOSWITCH_ENV_TEMP"
  chmod 600 "$LUMOSWITCH_ENV_TEMP"
  mv "$LUMOSWITCH_ENV_TEMP" "$HOME/.continue/.env"
fi

不提供自动重写 config.yaml 的命令,因为共享 YAML 可能含有注释、Anchor 和其他模型;通用文本删除容易破坏缩进或误删相邻配置。也不要删除整个 ~/.continue

验证与排查

  • CLI 可运行 cn --config <路径> 明确指定配置;IDE 使用 Config 选择器打开本地配置。
  • model 必须是下游模型名称,不是上游供应商 ID。
  • 工具不可用时,确认模型支持 Tool Call,再决定是否保留 tool_use

参考:Continue 官方状态说明CLI 配置YAML ReferenceSecret 解析配置说明。最近核验:2026-08-27。

维护者发布字段
  • 平台 ID:continue
  • 展示名称:Continue CLI
  • 下游协议:openai-compatible
  • commandTemplate:复制「仅本次启动」代码框的完整内容
  • 永久策略:native
  • persistentCommandTemplate:复制「CLI 永久使用」代码框的完整内容
  • futureCommandcn
  • 展示顺序:100
  • 最近核验:2026-08-27

On this page