Hi there 👋

Welcome to my blog, my name is Ray. I am a software developer and this is my personal blog where I share my thoughts, experiences, and projects. Feel free to explore and connect with me!

docker自建镜像加速

Info 我实在是受不了这个网络问题,不能畅快的 pull image 就和便秘一样。 然而,大部分的曾经一配即可用的镜像源大多数不好用或者开始收费,这些就不多说了,总之就是不好用了,那么我就打算自建一个。 之前是给公司打了个 Harbor,不过Harbor 所在的环境也无法连接外网、且多管理内部镜像为主。前段时间刷到一篇文章,但是一直迟迟没有行动,直到今天连文章都找不到了,那就只能自己处理了。grok 给我搜到了官方的方案Docker Registry Pull-Through Cache,但是他一次一个容器配置一个源,我也不知道我会用到多少个,于是搜了一下果然有人做了 第一次grok 推荐的,GitHub - rpardini/docker-registry-proxy: An HTTPS Proxy for Docker providing centralized configuration and caching of any registry (quay.io, DockerHub, registry.k8s.io, ghcr.io) 后续找到的: GitHub - dqzboy/Docker-Proxy: 🔥 🔥 🔥 自建Docker镜像加速服务,基于官方Docker Registry 一键部署Docker、K8s、Quay、Ghcr、Mcr、Nvcr等镜像加速\管理服务。支持免服务器部署到 ClawCloud\Render\Koyeb 准备一台海外服务器、我还准备了个域名,ok 一键部署,按照脚本部署. 坑来了。没白写 由于我的粗心大意,作者 README 中提到的安装Hub-cm-ui 的安装过程被我误认为是全部的安装过程。 正当我感慨作者大大做了一个很好的集成时开开心心把这个 ui 的地址配置了域名反代并且直接加入我的 docker 配置中,pull 了一下。 失败后折腾了很久才意识到。这是个客户端或者说是展示用的 UI 而不是一个集成体 ...

March 2, 2026 · 1 min · 79 words · Ray

OpenClaw 二吃

安装 OpenClaw 我也不知道啥情况,总之是三巨头各种折腾然后似乎被 openai 收入麾下了,我在第一次使用龙虾到现在他名字都换了两次了。所以把之前的清空配置,再重新安装。 Install | OpenClaw | The AI That Actually Does Things 这里我使用他的 sh 脚本访问不到,于是使用 pnpm 安装,然后 onboard 这次多了不少配置,我们选择 vLLM 并且输入我对应的信息 这次有飞书可以选择了 配置飞书 参考文档 Feishu - OpenClaw 在权限页面,批量导入以下权限 [json] 显示已折叠代码(23 行) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 { "scopes": { "tenant": [ "aily:file:read", "aily:file:write", "application:application.app_message_stats.overview:readonly", "application:application:self_manage", "application:bot.menu:write", "contact:user.employee_id:readonly", "corehr:file:download", "event:ip_list", "im:chat.access_event.bot_p2p_chat:read", "im:chat.members:bot_access", "im:message", "im:message.group_at_msg:readonly", "im:message.p2p_msg:readonly", "im:message:readonly", "im:message:send_as_bot", "im:resource" ], "user": ["aily:file:read", "aily:file:write", "im:chat.access_event.bot_p2p_chat:read"] } } ...

February 25, 2026 · 1 min · 105 words · Ray

Qwen3.5-35B-A3B浅尝

Qwen3.5-35B-A3B Info Qwen3.5 系列终于发布了小杯模型,对应的在阿里云提供 API,Qwen3.5-Plus 即 Qwen3.5-397B-A17B,Qwen3.5-Flash 即 Qwen3.5-35B-A3B。 前面几天对于 Qwen3.5-Plus 的表现,网友评论都是不错、那么这个小杯表现如何是我们比较关注的,毕竟一点资源就能跑起来了。 Qwen3.5 Usage Guide - vLLM Recipes Qwen/Qwen3.5-35B-A3B · Hugging Face 服务器信息: 显示已折叠代码(29 行) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 【CPU 信息】 CPU 型号: Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz CPU 核心数: 32 【系统版本】 操作系统: Ubuntu 版本: 22.04.5 LTS (Jammy Jellyfish) 内核版本: 5.15.0-168-generic 【GPU 信息】 NVIDIA GPU 检测到: GPU 0: NVIDIA GeForce RTX 3090 显存: 24576 MiB 驱动版本: 580.126.09 GPU 1: NVIDIA GeForce RTX 3090 显存: 24576 MiB 驱动版本: 580.126.09 GPU 2: NVIDIA GeForce RTX 3090 显存: 24576 MiB 驱动版本: 580.126.09 GPU 3: NVIDIA GeForce RTX 3090 显存: 24576 MiB 驱动版本: 580.126.09 GPU 4: NVIDIA GeForce RTX 3090 显存: 24576 MiB 驱动版本: 580.126.09 CUDA 版本: 13.0 部署 按照官方文档 安装最新的 vLLM,使用 vLLM 部署qwen3.5-35b-a3b,(我习惯使用 vLLM,好用、性能也很好) ...

February 25, 2026 · 1 min · 190 words · Ray

zvec 浅尝

阿里新开源了 zvec,开个小仓库浅浅试一下。 这篇就是折腾记录,不作为任何指南、是为了给未来如果做 LLM桌面应用时,多一个 vector DB 的选择。 GitHub - alibaba/zvec GitHub - Coco422/zvec-try 怎么测的 目标很简单:先把“建库 -> 入库 -> 向量查询 -> 命中评估”这条链路跑通。 我在 zvec-try 里做了这几件事: 用 datasets/*.json 配 4 组中英混合语料 每条 query 写 expected_doc_ids,按 top-k 命中做 PASS/FAIL embedding 走第三方 API(SiliconFlow / 阿里云/自部署) 每个语料单独创建一个本地 zvec collection,方便重复跑 配环境 我还是用 uv。 1 2 uv sync cp .env.example .env .env 里填这几个值就能跑: 1 2 3 AI_BASE_URL=https://api.siliconflow.cn AI_API_KEY=sk-xxx EMBEDDING_MODEL_NAME=Qwen/Qwen3-Embedding-0.6B 代码里对 endpoint 处理了一下: 如果你已经写到 /v1,会自动补成 /v1/embeddings 如果你直接写域名,也会自动拼接 embeddings 路径 数据格式 每个语料是一个 JSON,结构大概这样: ...

February 25, 2026 · 1 min · 192 words · Ray

open-webui 迁移数据库

原因 我的 Open Web UI 最早的时候用的是 SQLite 数据库,用久了之后,发现性能总感觉跟不上。所以决定迁移到 Postgres 数据库里。 脚本 用 claude opus 4.6 分析了一圈 关键差异总结: auth.active: SQLite 是 INTEGER (0/1),PG 是 BOOLEAN — 需要转换 chat.created_at/updated_at: SQLite 存的是 Unix 时间戳整数,PG 是 BIGINT — 兼容 config.created_at/updated_at: SQLite 是 DATETIME 字符串,PG 是 timestamp without time zone — 需要保持字符串格式 function/model/tool.is_active/is_global: SQLite 是 INTEGER (0/1),PG 是 BOOLEAN 一些旧表(auth, chatidtag, file, function, model, tool)在两边都没有显式 PK 约束 以下是用到的 python 脚本,注意,本脚本只对 23f47d28bfc3 这个 ID 的镜像有效,请注意有效期。各位可以按照差不多的规则自己 下载 pg 的镜像和 sqlite 的 然后对比分析下 ...

February 13, 2026 · 7 min · 1377 words · Ray