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!

Ghostty食用指南

先上图,当前效果 Info 刚换这个 mac 的时候,我用的是原生的 terminal,因为很多 remote 开发任务都是使用 vscode 来进行连接,所以当时找了个不知名教程简单配了下 oh my zsh。 之后 ssh 连接的多了后用了 terminus,对它真的是又爱又恨,功能恰好满足我的需求、外观也基本看习惯了。但是某一次 update 后 由于我没有登录账号也没有购买订阅,本地的所有 ssh 连接保存在里面的全部丢失了。这件事情还发生了不止一次。所以一怒之下找了很久其他开源替代。目前暂时使用 tabby,同时在当时切换 terminal -> iTerm,一个月后的今天,心血来潮试了试 Ghostty,那么按目前来说,效果满意 安装 一键安装 1 brew install --cask ghostty 小工具 1 2 brew install btop neofetch brew install starship btop:htop/top 加强版,这个推荐 neofetch:系统信息展示工具,一次性装逼 这俩工具是示例图的右侧和下方的东西 Starship(终端显示 Git、CPU、时间等) 对我来讲略微有点花哨 配置 这里我直接摘抄 树獭非懒 文中的配置,直接一键复制 就是毛玻璃紫色效果 显示已折叠代码(52 行) 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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 # --- Typography --- font-family = "Maple Mono NF CN" font-size = 14 adjust-cell-height = 2 # --- Theme and Colors --- theme = Catppuccin Mocha # --- Window and Appearance --- background-opacity = 0.85 background-blur-radius = 30 macos-titlebar-style = transparent window-padding-x = 10 window-padding-y = 8 window-save-state = always window-theme = auto # --- Cursor --- cursor-style = bar cursor-style-blink = true cursor-opacity = 0.8 # --- Mouse --- mouse-hide-while-typing = true copy-on-select = clipboard # --- Quick Terminal --- quick-terminal-position = top quick-terminal-screen = mouse quick-terminal-autohide = true quick-terminal-animation-duration = 0.15 # --- Security --- clipboard-paste-protection = true clipboard-paste-bracketed-safe = true # --- Shell Integration --- shell-integration = zsh # --- Claude 专属优化 --- # initial-command = /opt/homebrew/bin/claude initial-window = true quit-after-last-window-closed = true notify-on-command-finish = always # --- Performance --- scrollback-limit = 25000000 # --- 基础分屏(左右添加屏幕)--- keybind = cmd+d=new_split:right keybind = cmd+shift+enter=toggle_split_zoom keybind = cmd+shift+f=toggle_split_zoom ok,到这一步我已知足,日后研究字体相关(等我自己的 mac 到了再折腾) ...

March 17, 2026 · 2 min · 301 words · Ray

openclaw食用小结

OpenClaw 的价值不在于它能做什么,而在于你能想到用它做什么,能不能赚到钱取决于你怎么用,但 Token 消耗确实也是实实在在的成本。 openclaw是什么 OpenClaw是一个AI Agent框架,和我们常使用的 Claude code、codex类似,只不过后者专注于编码领域,但是关注相关应用的应该了解有不少程序员 魔改这类cli-agent 让他们进行通用任务(背后的模型足够强大) Openclaw 爆火的原因主要在于做足了周边适配,一个agent配置了基座模型后能够轻易的接入WhatsApp、telegram。让他像真-助理一样存在于你的日常对话APP中。 同时早期的许多案例、给足了openclaw足够的权限、模型能基于shell环境基本控制整个Linux系统,基于强大的模型,做到了很多让普通人眼前一亮的事情、比如帮忙炒股、帮忙购买物品、帮忙制作视频并且上传。 **AI Agent从来不是一个全新的概念。**但OpenClaw本身并不是人工智能——它只是一个“翻译官”和“执行官”。真正聪明的,是它背后接入的语言模型(比如GPT、Claude、Gemini等)。 由于context window 的存在,所以LLM的输入、输出长度是有限的,每个模型的上限不同、现在比较好的模型基本上是 1M上下文 也就是说,模型有严重的失忆症 这就像电影《我的失忆女友》里的女主角,每天早上醒来都会忘记前一天发生的一切。她的男友只能把重要的事情写下来,让她每天早上读一遍。 每次你和它聊天时,它都会把以下内容打包成一段超长的文字,再传给语言模型: 你是谁(主人信息)它自己是谁(身份设定)过去所有的对话记录今天要执行的任务 语言模型看完这一大段“剧本”后,才开始做文字接龙——于是它就接出“我是XX(身份认定),很高兴为您服务”这样的回答。 下面是一些介绍、关于ai agent如何工作,怎么规避LLM的弊端,大部分由 openclaw 为例。 龙虾怎么干活 Function call (最早openai的概念、翻译就是工具调用、另外几家有叫 tool use、或者tool什么的。本质上就是工具调用) 假设你让它“打开question.txt文件,读里面的问题,把答案写到answer.txt里”。流程是这样的: 1、你的指令传到OpenClaw,加上系统提示后发给语言模型 2、语言模型看完指令,发现需要读文件,于是返回一条特殊指令:“请使用read工具,读取question.txt” 3、OpenClaw看到这条指令,直接执行read工具,读取文件内容 4、读到的内容(比如“李宏毅几班”)又被送回语言模型 5、语言模型发现需要写答案,再返回:“请使用write工具,把‘大金’写到answer.txt” 6、OpenClaw执行write工具,完成任务 7、最后语言模型接出“主人,任务完成”,OpenClaw把这句话发回给你 整个过程就像语言模型在手把手地指挥OpenClaw,而OpenClaw就像一个听话的机器人,让做什么就做什么。 工具调用潜在的风险点:exec 接触shell环境将可以执行任何命令,如 rm -rf 当然、这种危险指令可以黑名单、也可以让他的shell进入sandbox执行 自建工具 Function call 由于各家的标准不同、后来出现了统一的mcp范式 而如果一个agent在每次使用时 全量加载它的 二十个mcp,关于各个mcp的描述可能来到了十万上下文 后面就出现了 skills 规范,可以理解为 渐进式加载提示词 ,或者说工作的标准流程 比如 只描述,操作Excel 时需要用到 excel tool 这个skill,这个skill 存放在某某目录 ...

March 16, 2026 · 1 min · 142 words · Ray

在博客养了只小猫🐱

如图所示、小猫在会 睡觉、打哈欠、挠头、追踪你的鼠标。点一下睡觉都它就会起来了,别的太花哨的又不是很喜欢。目前这个小猫的实现逻辑非常灵巧。未来希望能够搞一搞它 GitHub - adryd325/oneko.js: Cat follow mouse real! A hacky script I wrote to put a cat on my site. · GitHub 基于这个仓库实现,一个 oneko.js + 一张 oneko.gif 就搞定,没有太多的交互,以后仰仗肖工帮我实现一下 摸头交互功能 可以抄我的作业如下 layouts/partials/extend_footer.html [html] 显示已折叠代码(19 行) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 {{- $neko := site.Params.neko | default dict -}} {{- $enabled := true -}} {{- if isset $neko "enable" -}} {{- $enabled = $neko.enable -}} {{- end -}} {{- $onlyHome := true -}} {{- if isset $neko "onlyHome" -}} {{- $onlyHome = $neko.onlyHome -}} {{- end -}} {{- if and $enabled (or (not $onlyHome) .IsHome) -}} {{- $script := resources.Get "js/neko.js" | js.Build (dict "minify" hugo.IsProduction) -}} {{- if not site.Params.assets.disableFingerprinting -}} {{- $script = $script | fingerprint -}} <script defer crossorigin="anonymous" data-oneko-gif="/hugo-neko/oneko.gif" src="{{ $script.RelPermalink }}" integrity="{{ $script.Data.Integrity }}"></script> {{- else -}} <script defer crossorigin="anonymous" data-oneko-gif="/hugo-neko/oneko.gif" src="{{ $script.RelPermalink }}"></script> {{- end -}} {{- end -}} hugo.yaml ...

March 13, 2026 · 7 min · 1318 words · Ray

Linux 存储空间爆满排查处理

Info 在Linux中创建文件或运行应用时,出现错误提示No space left on device,表明存储资源已耗尽。 参考文章 :诊断并解决Linux实例磁盘空间满的多种场景-云服务器 ECS-阿里云 GPT5.4 指导 排查过程 由于该服务器是公司的主开发、测试服务器,使用人数较多经常会出现这个问题,这次统一整理一下操作过程,记录学习 检查分区情况 首先使用 df -h 查看 哪个分区满了 df : disk free -h: human-readable,不加该参数默认会以“字节”(Bytes)为单位显示,加上后系统会自动以 G (GB)、M (MB)、K (KB) 等单位显示 1 2 3 4 5 6 7 8 9 10 11 (base) yangr@172-16-99-32-Dev:/data/huggingface_model$ df -h Filesystem Size Used Avail Use% Mounted on tmpfs 13G 29M 13G 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 501G 481G 0 100% / tmpfs 63G 3.0M 63G 1% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sdb1 3.6T 2.8T 622G 82% /data /dev/sda2 2.0G 252M 1.6G 14% /boot /dev/sda1 1.1G 6.1M 1.1G 1% /boot/efi tmpfs 13G 12K 13G 1% /run/user/1000 tmpfs 13G 12K 13G 1% /run/user/1002 我这里 / 分区已经 100% 此时大部分程序写入 日志或者 /tmp之类都会失效,严重影响服务器使用 ...

March 13, 2026 · 4 min · 809 words · Ray

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