WSL2环境下的Claude Code与lanyuncodingui安装与配置

前言

AI编码助手Claude Code因其强大的功能在开发者社区中备受关注,但其官方仅支持macOS与Linux平台,这一明确的技术限制将广大的Windows开发者排除在外,使其无法在自己熟悉的操作系统上直接体验。

我们将借助适用于Linux的Windows子系统(WSL2)技术,在Windows系统内部构建一个完整的、无缝集成的GNU/Linux环境,从而为Claude Code的运行创造必要条件。本指南将提供一份详尽、严肃的技术操作说明,不仅引导您完成WSL2的配置和Claude Code的部署,还将进一步安装lanyuncodingui可视化界面,将原本无法运行且基于命令行的工具,转变为一个在Windows上功能完善、操作直观的图形化AI编程工作站。

安装wsl2

wsl2是适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。

接下来我教各位如何进行wsl2的安装操作

系统设置

控制面板->程序->启用或关闭 windows 功能,开启 Windows 虚拟化和 Linux 子系统(WSL2)以及虚拟机平台

系统一键默认安装,打开终端输入命令进行WSL更新,

bash 复制代码
wsl.exe --update

即可安装 WSL 相关的组件,这一步可能需要几分钟的时间。

安装Ubuntu

打开 Microsoft Store,搜索 Ubuntu 22.04.5 LTS并下载。

下载完成后,可以在开始菜单中找到Ubuntu 22.04.5 LTS,如果终端使用的是 Windows Terminal 那么在选项卡中也能看到 Ubuntu 22.04.5 LTS 的选项。

双击Ubuntu 22.04.5 LTS进入到界面,我们需要创建新用户和密码

这一步需要输入用户名和密码,注意:输密码的界面是看不到的,不要认为是哪里出问题了。

在输入完用户名称和密码之后,就代表安装成功了:

trae链接wsl并进行相关配置安装

打开trae,我们进行wsl链接

安装node.js和npm

切换到管理员账号

bash 复制代码
sudo -i

这里需要我们输入自己的用户密码就能成功进行切换

更新系统包列表:

bash 复制代码
sudo apt update && sudo apt upgrade -y

安装必要的依赖

bash 复制代码
sudo apt install -y curl software-properties-common

使用 NodeSource 安装脚本安装 Node.js 20.x:

安装 Node.js 和 npm:

bash 复制代码
sudo apt install -y nodejs

验证安装是否成功:

bash 复制代码
node -v # 应该显示v20.x.x npm -v # 应该显示对应的npm版本
npm-v   # 应该显示对应的npm版本

安装claude code

输入下方命令进行claude code的安装

bash 复制代码
bash -c "$(curl -fsSL https://raw.githubusercontent.com/LanyunAI-labs/lanyun-cc/main/install.sh)"

这里显示我们的链接失败了

因为这个是一个脚本文件,我们直接打开这个链接https://raw.githubusercontent.com/LanyunAI-labs/lanyun-cc/main/install.sh

网页内容如下

bash 复制代码
#!/bin/bash

set -e

install_nodejs() {
    local platform=$(uname -s)
    
    case "$platform" in
        Linux|Darwin)
            echo "🚀 Installing Node.js on Unix/Linux/macOS..."
            
            echo "📥 Downloading and installing nvm..."
            curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
            
            echo "🔄 Loading nvm environment..."
            \. "$HOME/.nvm/nvm.sh"
            
            echo "📦 Downloading and installing Node.js v22..."
            nvm install 22
            
            echo -n "✅ Node.js installation completed! Version: "
            node -v # Should print "v22.17.0".
            echo -n "✅ Current nvm version: "
            nvm current # Should print "v22.17.0".
            echo -n "✅ npm version: "
            npm -v # Should print "10.9.2".
            ;;
        *)
            echo "Unsupported platform: $platform"
            exit 1
            ;;
    esac
}

# Check if Node.js is already installed and version is >= 18
if command -v node >/dev/null 2>&1; then
    current_version=$(node -v | sed 's/v//')
    major_version=$(echo $current_version | cut -d. -f1)
    
    if [ "$major_version" -ge 18 ]; then
        echo "Node.js is already installed: v$current_version"
    else
        echo "Node.js v$current_version is installed but version < 18. Upgrading..."
        install_nodejs
    fi
else
    echo "Node.js not found. Installing..."
    install_nodejs
fi

# Check if Claude Code is already installed
if command -v claude >/dev/null 2>&1; then
    echo "Claude Code is already installed: $(claude --version)"
else
    echo "Claude Code not found. Installing..."
    npm install -g @anthropic-ai/claude-code
fi

# Configure Claude Code to skip onboarding
echo "Configuring Claude Code to skip onboarding..."
node --eval '
    const homeDir = os.homedir(); 
    const filePath = path.join(homeDir, ".claude.json");
    if (fs.existsSync(filePath)) {
        const content = JSON.parse(fs.readFileSync(filePath, "utf-8"));
        fs.writeFileSync(filePath,JSON.stringify({ ...content, hasCompletedOnboarding: true }, 2), "utf-8");
    } else {
        fs.writeFileSync(filePath,JSON.stringify({ hasCompletedOnboarding: true }), "utf-8");
    }'

# Prompt user for API key
echo "🔑 Please enter your lanyun API key:"
echo "🔑 请输入您的蓝耘 API 密钥:"
echo "   You can get your API key from: https://maas.lanyun.net/"
echo "   您可以从这里获取 API 密钥:https://maas.lanyun.net/"
echo "   Note: The input is hidden for security. Please paste your API key directly."
echo "   注意:为了安全起见,输入内容将被隐藏。请直接粘贴您的 API 密钥。"
echo ""
read -s api_key
echo ""

if [ -z "$api_key" ]; then
    echo "⚠️  API key cannot be empty. Please run the script again."
    exit 1
fi

# Prompt user for model (optional, default is k2)
echo ""
echo "🤖 Please enter the Claude model to use (press Enter for default 'k2'):"
echo "🤖 请输入要使用的 Claude 模型(按回车使用默认值 'k2'):"
echo ""
read model
echo ""

# Set default model if not provided
if [ -z "$model" ]; then
    model="k2"
    echo "ℹ️  Using default model: k2"
fi

# Detect current shell and determine rc file
current_shell=$(basename "$SHELL")
case "$current_shell" in
    bash)
        rc_file="$HOME/.bashrc"
        ;;
    zsh)
        rc_file="$HOME/.zshrc"
        ;;
    fish)
        rc_file="$HOME/.config/fish/config.fish"
        ;;
    *)
        rc_file="$HOME/.profile"
        ;;
esac

# Add environment variables to rc file
echo ""
echo "📝 Adding environment variables to $rc_file..."

# Check if ALL three variables exist
has_base_url=$(grep -c "ANTHROPIC_BASE_URL" "$rc_file" 2>/dev/null || echo 0)
has_api_key=$(grep -c "ANTHROPIC_API_KEY" "$rc_file" 2>/dev/null || echo 0)
has_model=$(grep -c "ANTHROPIC_MODEL" "$rc_file" 2>/dev/null || echo 0)

if [ "$has_base_url" -gt 0 ] && [ "$has_api_key" -gt 0 ] && [ "$has_model" -gt 0 ]; then
    echo "⚠️  Environment variables already exist in $rc_file. Updating with new values..."
    # Remove old entries (compatible with both macOS and Linux)
    if [[ "$OSTYPE" == "darwin"* ]]; then
        sed -i.bak '/ANTHROPIC_BASE_URL/d' "$rc_file"
        sed -i.bak '/ANTHROPIC_API_KEY/d' "$rc_file"
        sed -i.bak '/ANTHROPIC_MODEL/d' "$rc_file"
        rm -f "$rc_file.bak"
    else
        sed -i '/ANTHROPIC_BASE_URL/d' "$rc_file"
        sed -i '/ANTHROPIC_API_KEY/d' "$rc_file"
        sed -i '/ANTHROPIC_MODEL/d' "$rc_file"
    fi
fi

# Add/update entries
echo "" >> "$rc_file"
echo "# Claude Code environment variables" >> "$rc_file"
echo "export ANTHROPIC_BASE_URL=https://maas-api.lanyun.net/anthropic-k2/" >> "$rc_file"
echo "export ANTHROPIC_API_KEY=$api_key" >> "$rc_file"
echo "export ANTHROPIC_MODEL=$model" >> "$rc_file"
echo "✅ Environment variables added/updated in $rc_file"

echo ""
echo "🎉 Installation completed successfully!"
echo "🎉 安装成功完成!"
echo ""
echo "⚠️  IMPORTANT: Run this command to activate Claude Code:"
echo "⚠️  重要:运行以下命令激活 Claude Code:"
echo ""
echo "   source $rc_file"
echo ""
echo "🚀 After that, you can use: claude"
echo "🚀 之后即可使用:claude"

将文本复制到Ubuntu中,保存到文件install.sh

我们这个样子就是保存好了的

输入命令执行这个文件

bash 复制代码
./install.sh

但是这里显示不被允许,说明我们文件没有权限进行执行

使用命令进行查询文件状态

bash 复制代码
ll

输入下方命令给文件install.sh增加可执行的权限

bash 复制代码
chmod +x install.sh

然后我们再次输入命令进行文件install.sh的执行

bash 复制代码
./install.sh

这里他就会检查我们的环境配置,这里显示claude code还没有安装,所以我们这里是先进行claude code的安装的

这里我们是需要等待一会儿的

安装好了之后如下:

这里我们需要进行api-key的配置操作

来到https://console.lanyun.net/#/register?promoterCode=0131进行蓝耘的注册,输入相关信息即可注册成功

主页顶部找到MaaS平台

这里有很多的ai模型供你使用

进行api-key的创建

将密钥进行复制

来到终端,将你的api-key粘贴到这种然后回车就能将api-key写入到环境变量中去

然后我们回车即可,使用默认的模型

按照上面的提示我们需要进行激活操作

bash 复制代码
source /root/.bashrc

然后输入命令激活claude code

bash 复制代码
claude

他这里会询问我们的密钥是否选择我们环境中配置好的,我们直接选择Yes就行了

然后他又询问我们是否相信这个文件,我们同样选择

bash 复制代码
Yes,proceed

然后就到了我们的使用界面了

这个还是挺不错的,模型是kimi -k2

安装lanyuncodingui

但是这种方式我觉得挺不方便的,但是蓝耘提供了可视化ui界面供我们使用

在终端输入命令进行可视化ui界面安装

bash 复制代码
npm install -g lanyuncodingui@latest

这样子我们就安装好了,你如果出现了报错的话说明你没有切换到管理员账号

bash 复制代码
sudo -i  #输入密码切换到root管理员账户

然后输入命令进行界面启动

bash 复制代码
lanyuncodingui

这里他提示我们界面运行在http://localhost:3700/

首次运行我们需要进行账户的创建操作

输入账号密码就能进行登录了

进入到可视化界面的首页,他提醒我们进行项目文件夹的选择

这里我们可以看到历史聊天的记录

仔细看还能发现这里可以进行终端命令的输入

还能进行git仓库的链接,更好的管理文件资源

终端文件同样也是可视化操作的

左下角设置界面里面可以进行规则以及MCP的设置

并且我们还能进行api的设置,可以设置其他的模型

这个k2模型不管是代码还是写作生成都是很强势的

总结

本教程的核心贡献在于,利用WSL2技术成功地将官方不支持Windows的Claude Code带到了广大的Windows平台,彻底解决了跨平台兼容性的首要难题。我们通过详尽的步骤,确保了开发者能够顺利地在WSL2环境中完成所有基础环境的搭建与配置。

此基础上,蓝耘lanyuncodingui的引入是提升整个方案实用性的关键。它将原本完全基于命令行的操作流程,转变为一个高效且易于管理的图形化应用,具体体现在以下几个方面:

  • 简化的配置管理:用户不再需要手动编辑配置文件或执行source命令来加载环境变量。lanyuncodingui提供了清晰的设置界面,用于直接输入和修改API密钥、切换AI模型,这降低了配置错误的可能性。

  • 高效的文件操作:它提供了可视化的文件目录树和内置编辑器,用户可以通过图形界面直接进行文件的创建、查看、修改和删除,无需依赖ls、vim等Linux命令,显著提高了文件管理的效率。

  • 集成化的工作环境:该界面将AI对话、历史记录、Git版本控制以及一个功能完整的终端整合到单一窗口中。这种设计减少了在不同应用程序之间切换的需要,使开发工作流更加连贯。

综上所述,lanyuncodingui并非一个简单的图形前端,而是一个功能性的集成开发工具。它通过提供一个结构化、可视化的操作环境,极大地降低了Claude Code的使用难度。它免除了开发者记忆和输入大量命令的负担,使其能够将精力完全集中于代码开发任务本身。因此,lanyuncodingui的运用,使得在Windows上使用Claude Code成为一个真正高效、可靠的技术方案。

蓝耘平台目前的MaaS 特价/折扣资源包活动和"周周抢免费无门槛代金券"活动都是在线的,感兴趣的赶紧来体验吧
蓝耘

相关推荐
Shier833_Ww23 天前
Windows10+WSL2+Docker相关整理
docker·容器·ubuntu20.04·windows10·wsl2
Mike_6662 个月前
win10安装WSL2、Ubuntu24.04
windows·ubuntu·wsl2
小妖6663 个月前
wsl2 不能联网
wsl2
YIBO04084 个月前
WSL2下Docker desktop的Cadvisor容器监控
运维·docker·容器·wsl·wsl2
西木九4 个月前
WSL2-Ubuntu22.04安装URSim5.21.3
linux·ubuntu22.04·wsl2·ur机械臂·ur10e
CAE虚拟与现实4 个月前
Ubuntu中snap
linux·运维·ubuntu·apt·wsl·wsl2·snap
CAE虚拟与现实4 个月前
修改wsl中发行版Ubuntu的主机名
linux·运维·ubuntu·wsl·wsl2·修改主机名
CAE虚拟与现实4 个月前
WSL2安装多个版本的Ubuntu
linux·运维·ubuntu·wsl·wsl2
musk12124 个月前
YOLO环境搭建,win11+wsl2+ubuntu24+cuda12.6+idea
yolo·cuda·wsl2