15 mins
2999 words
Loading views
Claude Desktop 安装 + Loomy API 本地代理完整教程

从零开始在 Windows 上安装 Claude Desktop,并通过本地协议转换代理使用 Loomy/iModel API 通道调用大模型的完整解决方案。涵盖 winget/MSIX 安装、Cowork 报错修复、OneDrive 卸载故障处理、Session Token 提取与协议转换代理配置。

目标:在 Windows 上安装 Claude Desktop,并通过本地代理使用 Loomy 的 API 通道调用大模型。

适用场景:没有 Anthropic 官方 API Key,但有 Loomy 订阅/额度,希望在 Claude Code Desktop 中使用。


目录h2


第一章:Claude Desktop 安装h2

1.1 方法一:winget 安装(推荐作为第一步)h3

Terminal window
winget install Anthropic.Claude

✅ 结果:安装成功,应用可以正常启动。 ❌ 问题:Cowork 功能报错 — Reinstall required - Cowork requires Claude Desktop to be installed via a modern installer

原因:Cowork 功能会校验 Claude Desktop 是否通过 MSIX(现代安装程序)部署。winget 安装的记录在 Windows 侧不完整,Cowork 认为安装来源不合法。


1.2 方法二:直接安装 MSIXh3

下载 MSIX 安装包:

Terminal window
Invoke-WebRequest -Uri "https://claude.ai/api/desktop/win32/x64/msix/latest/redirect" -OutFile "Claude.msix"

为当前用户安装:

Terminal window
Add-AppxPackage -Path "Claude.msix"

❌ 问题:安装成功,但应用无法启动。点击图标无反应。

原因:MSIX 包本身缺少某些运行时依赖或签名上下文。单独安装 MSIX 时,Windows 没有正确解析其依赖链。


1.3 最终方案:winget + MSIX 组合安装 ✅h3

先通过 winget 安装基础版本(确保依赖齐全、应用可启动),再用 MSIX 覆盖安装(修正安装器签名记录)。

完整命令

Terminal window
# 第 1 步:winget 安装(使应用可运行,依赖完整)
winget install Anthropic.Claude
# 第 2 步:下载 MSIX 安装包
Invoke-WebRequest -Uri "https://claude.ai/api/desktop/win32/x64/msix/latest/redirect" -OutFile "Claude.msix"
# 第 3 步:MSIX 覆盖安装(修正安装来源,Cowork 可识别)
Add-AppxPackage -Path "Claude.msix"

最终效果

检查项结果
应用启动✅ 正常启动
Cowork 校验✅ 不再报错
程序签名✅ 完整

第二章:理解你的代理工具h2

你的 Loomy Workspace 目录下有三个文件,分工如下:

2.1 文件总览h3

Loomy Workspace/
├── 代理使用教程.md # 配置指南(DNS 劫持方案,供参考)
├── get-session.cjs # Session Token 提取器
└── anthropic-proxy.mjs # 协议转换代理(主力方案)

2.2 get-session.cjs — Session Token 自动提取h3

作用:从 Loomy 桌面端的本地数据库中提取登录会话密钥。

原理

  • Loomy 桌面端使用 Electron 的 Local Storage,底层是 LevelDB
  • LevelDB 的数据存储在 %APPDATA%/loomy/Local Storage/leveldb/ 目录下,以 .log.ldb 文件存在
  • 该工具扫描这些文件,在二进制数据中查找 loggedInAt 关键字
  • loggedInAt 附近寻找 32 位十六进制字符串(即 loomy-session-key
  • 同时提取手机号做脱敏显示

用法

Terminal window
# 仅输出最新 session key
node get-session.cjs
# 列出所有历史 session
node get-session.cjs --all
# 输出 SESSION_TOKEN=xxx 格式(适合管道)
node get-session.cjs --env
# 实时监听 session 变化(每 5 秒轮询)
node get-session.cjs --watch

前置条件:Loomy 桌面端必须已登录运行。


2.3 anthropic-proxy.mjs — 协议转换代理(核心)h3

这是整套方案的核心组件。它解决的问题是:

Claude Code Desktop 只认 Anthropic Messages API 格式,而 Loomy/iModel 只提供 OpenAI Chat Completions API 格式。两者协议不兼容。

架构图h4

Claude Code Desktop anthropic-proxy.mjs upstream
(ANTHROPIC_BASE_URL=:8080) (localhost:8080) (loomyad.xunfei.cn)
┌─────────────────┐ POST /v1/messages ┌─────────────────────┐ POST /api/v1/chat/completions ┌──────────────┐
│ Anthropic 格式 │ ───────────────────→ │ 协议转换 + 模型映射 │ ───────────────────────────────→ │ OpenAI 格式 │
│ 请求 │ │ │ │ 请求 │
│ │ ←─────────────────── │ │ ←─────────────────────────────── │ │
└─────────────────┘ Anthropic 格式响应 └─────────────────────┘ OpenAI 格式响应 └──────────────┘

核心功能 1:协议转换h4

项目Anthropic Messages APIOpenAI Chat Completions API
System Promptsystem 顶层字段role: "system" 作为第一条消息
用户消息role: "user", content 为对象数组role: "user", content 为字符串或数组
图片输入type: "image", source: {data, media_type}type: "image_url", image_url.url (base64 data URI)
工具调用type: "tool_use", input 是对象tool_calls, function.arguments 是 JSON 字符串
工具结果role: "user", type: "tool_result"role: "tool", tool_call_id
流式事件content_block_start/delta/stop + message_start/delta/stopSSE data: {...}, 每行一个 delta chunk

核心功能 2:模型映射h4

代理将 Claude 模型名映射到上游 iModel 的模型:

Claude 模型名映射到上游模型说明
claude-sonnet-4-6 系列deepseek-v4-flash主力模型
claude-opus-4 系列qwen3.5-plus高级模型,支持图片
claude-sonnet-4-6-lite 系列qwen3.5-flash轻量模型
claude-3-opus-4-videodoubao-seed-2.0-pro视频理解

核心功能 3:API 端点h4

路径方法说明
//healthGET健康检查,返回代理状态和模型列表
/v1/modelsGET返回映射表中的所有 Claude 模型(Claude Code 启动时会调用)
/v1/messagesPOST主要端点:接收 Anthropic 请求,转换后转发到上游
/v1/messages/:idGET返回假响应(防止 Claude Code 因 404 报错)

核心功能 4:流式支持h4

完整的流式转换。上游 OpenAI SSE 流中的每个 delta 被实时转换为 Anthropic 的 content_block_delta 事件。支持:

  • 文本 delta → content_block_delta (text_delta)
  • Tool calls delta → content_block_delta (input_json_delta)
  • Usage 信息 → message_delta 中的 usage
  • Finish reason 映射

Session Token 获取h4

优先级:

  1. 环境变量 SESSION_TOKEN(最高优先级)
  2. 自动提取 — 调用 get-session.cjs 从 Loomy 桌面端 LevelDB 读取

第三章:配置与启动代理h2

3.1 确认前置条件h3

  • Loomy 桌面端已安装并登录
  • Node.js 已安装(建议 v18+)
  • Claude Desktop 已正确安装(按第一章流程)

3.2 验证 Session 可获取h3

Terminal window
cd "C:\Users\Administrator\Documents\Loomy Workspace"
# 确保 Loomy 桌面端正在运行且已登录
node get-session.cjs

预期输出:一串 32 位十六进制字符串,如 a1b2c3d4e5f6...

如果报错 未找到 session,请确认 Loomy 桌面端已登录。

3.3 启动代理h3

Terminal window
# 方式一:自动提取 session
node anthropic-proxy.mjs
# 方式二:手动指定 session(优先级更高)
set SESSION_TOKEN=你的32位hex字符串
node anthropic-proxy.mjs
# 方式三:启用调试日志
set DEBUG_PROXY=true
node anthropic-proxy.mjs
# 方式四:指定其他端口(默认 8080)
set PROXY_PORT=9090
node anthropic-proxy.mjs

启动成功应看到如下输出:

╔════════════════════════════════════════════════════════╗
║ Anthropic → iModel API 代理 ║
╠════════════════════════════════════════════════════════╣
║ 代理地址: http://127.0.0.1:8080 ║
║ 上游 API: https://loomyad.xunfei.cn ║
║ Session: a1b2c3d4e5f6... ║
╚════════════════════════════════════════════════════════╝

3.4 验证代理运行正常h3

Terminal window
# 测试健康检查
curl http://127.0.0.1:8080/health
# 测试模型列表
curl http://127.0.0.1:8080/v1/models

第四章:配置 Claude Code Desktoph2

4.1 设置环境变量h3

在 Claude Code Desktop 的配置中(claude_desktop_config.json),添加:

{
"projectSettings": {
"ANTHROPIC_BASE_URL": "http://127.0.0.1:8080",
"ANTHROPIC_API_KEY": "sk-session-token"
}
}

说明

  • ANTHROPIC_BASE_URL 指向本地代理地址。Claude Code 的所有 API 请求都会发到这里。
  • ANTHROPIC_API_KEY 代理不校验其真实性,填任意值即可。
  • 不要在全局设置中配置,只在项目级别配置,避免影响其他使用场景。

4.2 验证连通性h3

在 Claude Code Desktop 中发送一条消息,确认能正常返回。

4.3 日志排查h3

如果遇到问题,启用调试日志再次启动代理:

Terminal window
set DEBUG_PROXY=true
node anthropic-proxy.mjs

查看日志中的关键信息:

  • 模型映射是否匹配:Model mapping: claude-sonnet-4-6 → deepseek-v4-flash
  • 上游返回状态码:非 200 说明上游有问题
  • 请求体中的消息数量和工具数量

第五章:常见安装故障修复 — 卸载 OneDrive 后 Claude 无法启动h2

问题现象h3

卸载 OneDrive 之后,Claude Desktop(或其他应用)点击图标无反应,无法启动。

根因h3

Windows 的 User Shell Folders 注册表中,DesktopDocuments 等路径仍然指向 C:\Users\xxx\OneDrive\Desktop 这类目录。OneDrive 被卸载后这些目录已不存在,Claude Desktop 启动时找不到标准文件夹路径,直接崩溃。

此外,旧版本 Claude 的残留文件也可能干扰新安装。

修复脚本h3

以下脚本会自动完成全部修复流程。将代码保存为 Fix-ClaudeDesktop-OneDrivePath.ps1,然后以管理员身份运行

Fix-ClaudeDesktop-OneDrivePath.ps1
# ============================================================
# 用途:修复卸载 OneDrive 后 Claude Desktop 无法启动的问题
# 原理:清理 User Shell Folders 中残留的 OneDrive 路径 + 清理 Claude 残留
# 运行:以管理员身份运行 PowerShell,然后执行本脚本
# ============================================================
# 0. 检查管理员权限
if (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Write-Host "请以管理员身份运行 PowerShell 后再执行本脚本。" -ForegroundColor Red
exit 1
}
$ErrorActionPreference = "Stop"
$timestamp = Get-Date -Format "yyyyMMdd-HHmmss"
$backupDir = "$env:USERPROFILE\Desktop\ClaudeFix-Backup-$timestamp"
New-Item -ItemType Directory -Path $backupDir | Out-Null
Write-Host "备份目录:$backupDir" -ForegroundColor Cyan
# 1. 备份注册表 User Shell Folders / Shell Folders
Write-Host "`n[1/5] 备份注册表 ..." -ForegroundColor Yellow
reg export "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" "$backupDir\UserShellFolders.reg" /y | Out-Null
reg export "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "$backupDir\ShellFolders.reg" /y | Out-Null
Write-Host " 注册表已备份。"
# 2. 修正 User Shell Folders 中含 OneDrive 的路径
Write-Host "`n[2/5] 扫描并修正 User Shell Folders 中的 OneDrive 路径 ..." -ForegroundColor Yellow
$keys = @(
"HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders",
"HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
)
foreach ($key in $keys) {
$props = Get-ItemProperty -Path $key
foreach ($name in $props.PSObject.Properties.Name) {
if ($name -like "PS*") { continue }
$value = $props.$name
if ($value -is [string] -and $value -match "OneDrive") {
$newValue = $value -replace "([A-Za-z]:\\Users\$\^$\$+|%USERPROFILE%)\\OneDrive(?:\s-\s[^\\]+)?\\", "%USERPROFILE%\"
if ($newValue -ne $value) {
Write-Host " [$key] $name" -ForegroundColor Green
Write-Host " 旧: $value"
Write-Host " 新: $newValue"
Set-ItemProperty -Path $key -Name $name -Value $newValue
}
}
}
}
# 3. 确保本地默认文件夹存在
Write-Host "`n[3/5] 确保本地默认文件夹存在 ..." -ForegroundColor Yellow
$folders = @("Desktop","Documents","Downloads","Pictures","Music","Videos","Favorites")
foreach ($f in $folders) {
$p = Join-Path $env:USERPROFILE $f
if (-not (Test-Path $p)) {
New-Item -ItemType Directory -Path $p | Out-Null
Write-Host " 已创建: $p"
}
}
# 4. 卸载 Claude Desktop(若存在)并清理残留目录
Write-Host "`n[4/5] 卸载 Claude Desktop 并清理残留 ..." -ForegroundColor Yellow
try {
$pkg = Get-AppxPackage -Name "*Claude*" -ErrorAction SilentlyContinue
if ($pkg) {
$pkg | Remove-AppxPackage
Write-Host " 已卸载 MSIX 包: $($pkg.Name)"
} else {
Write-Host " 未检测到 MSIX 形式的 Claude(可能是 exe 安装,请手动到'已安装的应用'中卸载)。"
}
} catch {
Write-Host " 卸载 MSIX 包失败: $_" -ForegroundColor Red
}
$residue = @(
"$env:LOCALAPPDATA\AnthropicClaude",
"$env:LOCALAPPDATA\Claude",
"$env:APPDATA\Claude",
"$env:APPDATA\AnthropicClaude"
)
foreach ($d in $residue) {
if (Test-Path $d) {
Copy-Item $d "$backupDir\" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item $d -Recurse -Force -ErrorAction SilentlyContinue
Write-Host " 已清理: $d (已备份到 $backupDir)"
}
}
# 5. 完成提示
Write-Host "`n[5/5] 完成!" -ForegroundColor Green
Write-Host "请执行以下两步:" -ForegroundColor Cyan
Write-Host " 1) 重启电脑(必须,让 Explorer 重新加载 Shell Folders)"
Write-Host " 2) 从 https://claude.ai/download 重新下载并以管理员身份安装 Claude Desktop"
Write-Host "`n如出现异常,可双击 $backupDir 下的 .reg 文件恢复注册表。" -ForegroundColor Cyan

脚本执行流程h3

步骤操作说明
0检查管理员权限非管理员直接退出
1备份注册表导出 User Shell FoldersShell Folders 到桌面备份目录
2修正 OneDrive 路径扫描注册表中所有含 OneDrive 的路径,替换为 %USERPROFILE%\XXX
3创建缺失文件夹确保 DesktopDocuments 等标准文件夹存在
4清理 Claude 残留卸载 MSIX 包,删除 %LOCALAPPDATA%%APPDATA% 下的残留目录
5完成提示提示重启电脑并重新安装 Claude Desktop

恢复方法h3

如果修复后出现异常,双击桌面备份目录中的 .reg 文件即可恢复注册表到修复前的状态。

与第一章的配合h3

如果遇到了 OneDrive 卸载导致的问题,正确的完整流程是:

Terminal window
# 第 1 步:运行本修复脚本(清理注册表 + 卸载旧版 Claude)
# (以管理员身份运行 Fix-ClaudeDesktop-OneDrivePath.ps1)
# 第 2 步:重启电脑
# 第 3 步:重新安装 Claude Desktop
winget install Anthropic.Claude
# 第 4 步:MSIX 覆盖安装(修正 Cowork 安装来源)
Invoke-WebRequest -Uri "https://claude.ai/api/desktop/win32/x64/msix/latest/redirect" -OutFile "Claude.msix"
Add-AppxPackage -Path "Claude.msix"

之后再按后续章节配置代理即可。


常见问题排查h2

Q1:Claude Code 启动时报 “No available models”h3

原因:代理未启动或 ANTHROPIC_BASE_URL 配置错误。

解决

Terminal window
# 确认代理正在运行
curl http://127.0.0.1:8080/v1/models
# 确认配置的 URL 可访问
curl http://127.0.0.1:8080/health

Q2:请求返回 401 Unauthorizedh3

原因:Session Token 过期或无效。

解决:重新运行 get-session.cjs 获取最新 token,或用 --watch 模式监控变化。

Q3:请求返回 502 Bad Gatewayh3

原因:上游 loomyad.xunfei.cn 不可达。

解决

Terminal window
# 测试网络连通性
ping loomyad.xunfei.cn
# 检查是否需要代理上网

Q4:端口被占用h3

原因:8080 端口已被其他程序占用。

解决

Terminal window
set PROXY_PORT=9090
node anthropic-proxy.mjs

同时在 Claude Code Desktop 配置中将 ANTHROPIC_BASE_URL 改为 http://127.0.0.1:9090

Q5:工具调用(Tool Use)失败h3

原因:上游模型不支持某些工具调用格式。

解决:检查 get-session.cjs --env 输出的 session 是否有效,以及上游 iModel 是否支持 function calling。


附录h2

完整启动流程速查h3

Terminal window
# 1. 确保 Loomy 桌面端已登录
# 2. 启动代理
cd "C:\Users\Administrator\Documents\Loomy Workspace"
node anthropic-proxy.mjs
# 3. 保持终端窗口打开,另开一个窗口启动 Claude Code Desktop
# 4. 确保 claude_desktop_config.json 中已配置:
# ANTHROPIC_BASE_URL=http://127.0.0.1:8080
# ANTHROPIC_API_KEY=sk-session-token

文件清单h3

文件说明是否需要修改
get-session.cjsSession Token 提取器不需要,直接使用
anthropic-proxy.mjs协议转换代理不需要,直接使用
Claude Desktop + Loomy 代理完整安装与配置教程.md本文档

参考链接h3

Comments