本机使用的是win系统,经过搜索,更适合使用原生的wsl进行(教程比较粗糙,后续会优化一下的)

WSL2

WSL2 不是传统意义“完全隔离的虚拟机”,而是 Windows 里集成的 Linux 环境,特点是:

  • 能直接访问你的 Windows 磁盘:比如 C:\Users\xxx 在 WSL 里是 /mnt/c/Users/xxx

  • Windows 浏览器也能直接打开 WSL 里跑的服务(比如 127.0.0.1:18789 这种端口转发非常顺)

  • 可以在 WSL 里调用 Windows 命令(例如 powershell.execmd.exe

本机现在还未安装wsl,所以第一步需要进行安装虚拟机,我是没有进行分盘的,所以我是直接安装在C盘的指定位置的,

# 1) 创建目录
mkdir C:\wsl -Force | Out-Null
mkdir C:\wsl\ubuntu-openclaw -Force | Out-Null
mkdir C:\wsl\images -Force | Out-Null

# 2) 下载 Ubuntu 24.04 (Noble) 的 WSL rootfs
$rootfs = "C:\wsl\images\ubuntu-noble-wsl-amd64-24.04lts.rootfs.tar.gz"
Invoke-WebRequest -Uri "https://cloud-images.ubuntu.com/wsl/releases/24.04/current/ubuntu-noble-wsl-amd64-24.04lts.rootfs.tar.gz" -OutFile $rootfs

# 3) 确认是不是空的
dir $rootfs

# 4) 导入为一个新的 WSL 发行版(名字你也可以换)
wsl --import Ubuntu-OpenClaw C:\wsl\ubuntu-openclaw $rootfs --version 2


# 5)
wsl -d Ubuntu-OpenClaw

adduser oai

  • 输入你想给 oai 的密码(输入时不会显示,是正常的)

  • 回车

  • 再输入一次确认

  • 回车

Full NameRoom NumberWork PhoneHome PhoneOther
都可以直接一直按回车跳过,最后会问 Is the information correct? [Y/n],输入 Y 回车即可。

目的:给 oai 用户添加 sudo 管理权限。
原因: 后面我们会用 oai 身份安装/配置软件(比如安装依赖、修改系统配置、启动服务)。这些操作需要管理员权限;用 sudo 比一直用 root 更安全、更符合 Linux 正常使用习惯。

usermod -aG sudo oai

su - oai(切换到 oai 用户(不再用 root))

sudo -v(验证 oai 的 sudo 权限是否生效)

sudo sh -c 'printf "[user]\ndefault=oai\n" > /etc/wsl.conf'(把 WSL 设置成默认进入 oai 用户)

exit(退出)

wsl --shutdown(这个需要在Windows PowerShell 的提示符中使用)

wsl -d Ubuntu-OpenClaw(重新进入发行版并验证默认用户)

sudo sh -c 'printf "[boot]\nsystemd=true\n" >> /etc/wsl.conf'(开启 systemd(让后面 OpenClaw 这种常驻服务更稳定))

exit

wsl --shutdown(关闭并重启 WSL,让刚才写入的 systemd=true 生效。)

wsl -d Ubuntu-OpenClaw(重新进入 Ubuntu-OpenClaw,为验证 systemd 是否生效做准备。)

ps -p 1 -o comm=(检查 systemd 是否已经启用成功。)

curl -fsSL https://openclaw.ai/install.sh | bash(安装 OpenClaw CLI(后面才能进行初始化和启动 Gateway)。)

接下来输入之前设置的密码回车

等待安装结束,选择yes

直接回车

先跑通流程,再去配置密钥,直接选择最下面的回车

直接回车

直接回车

直接回车

选择no,回车

选中最上面的那个,然后回车

直接回车

OpenClaw 的本地网关服务启动并连上了(本地部署核心已经跑起来了),但是我们之前的API没有配置,现在需要进行中断配置

接下来我们先退出,因为之前的API并没有配置,ctrl+c

复制那个后面带一串token的网址,在浏览器中进行搜索

接下来我们来进行配置这个模型的API,我们在这个终端输入:openclaw config

上面的都是各个模型都可以进行配置,我使用的是deepseek模型,上面没有直接的所以我需要单独配置一下,然后一路回车。

接着会出现一个报错,就是DeepSeek 这个端点在 OpenClaw 里配置成了 ctx=4096,而 OpenClaw 的这个 agent/模式要求最小 16000,所以直接拒绝调用。

所以我们需要进行调整把 DeepSeek 的 ctx(上下文窗口)调大到 >= 16000(建议 16000 或 32768)。

grep -n "custom-api-deepseek-com" -n ~/.openclaw/openclaw.json



python3 - <<'PY'
import json, pathlib
p = pathlib.Path.home()/".openclaw"/"openclaw.json"
data = json.loads(p.read_text(encoding="utf-8"))
mc = data.setdefault("modelsConfig", {})
key = "custom-api-deepseek-com/deepseek-chat"
cfg = mc.get(key, {})
if not isinstance(cfg, dict):
    cfg = {}
cfg["ctx"] = 16000
mc[key] = cfg
p.write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print("updated", p, "-> modelsConfig[{}].ctx=16000".format(key))
PY

接下来重新加载配置,然后依次下面的几个指令,就可以了

openclaw gateway restart


grep -n "\"ctx\"\|context\|model" ~/.openclaw/openclaw.json | head -n 80



python3 - <<'PY'
import json, pathlib
p = pathlib.Path.home()/".openclaw"/"openclaw.json"
data = json.loads(p.read_text(encoding="utf-8"))

# 递归把所有 contextWindow==4096 的地方改成 16000
def walk(x):
    if isinstance(x, dict):
        for k,v in list(x.items()):
            if k == "contextWindow" and v == 4096:
                x[k] = 16000
            else:
                walk(v)
    elif isinstance(x, list):
        for i in x: walk(i)

walk(data)
p.write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print("updated all contextWindow: 4096 -> 16000 in", p)
PY







python3 - <<'PY'
import json, pathlib
p = pathlib.Path.home()/".openclaw"/"openclaw.json"
data = json.loads(p.read_text(encoding="utf-8"))
removed = False
if isinstance(data, dict) and "modelsConfig" in data:
    data.pop("modelsConfig", None)
    removed = True
p.write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print("removed modelsConfig:", removed)
PY




openclaw gateway restart






openclaw tui

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐