R2S复活记
Info 成为魔法师已经不知道多少年、为了魔法,年少无知的深夜不知多少次抓耳挠腮 某一天、某论坛、刷到一个路由器的推荐:H3CNX30pro,至今为止我都能背出型号,实在是第一个折腾的给到的印象太深。当时给到的教程配套了刷机教程,刷了 immortalwrt,一个裁剪后的 openwrt,虽然功能不多,但是核心功能已有,让我体验了丝滑的上网体验,但是如果家中只有这一台路由器,当魔法失效时,全家的网都会崩溃。 随后在前辈的指引下,他给了我一台 R2S,实在是太美好了,小巧的机身,极致极客的金属质感。起初我在这台完整的 openwrt 作为入网主路由,LAN 口后面带着 H3C 做 AP,但是这依旧没有解决魔法失效全家网络崩溃的问题。于是我找到了旁路由这个方案,随后由于魔法频繁失效、至最近半年无法订阅等各种问题出现,一直没有解决,所以我的 R2S 已经荒废已久。在今晚,他迎来了重生!!! 环境情况 至今,我家里的网络拓扑如下 这里直接用 iStoreOS 的图表示了 其中 WIFI-路由器是我的主路由,入网用以及担任 zerotier 组网 还有无线 AP 其中一条 LAN 口连接 R2S 的 LAN 口 H3C IP:192.168.6.1 R2S IP:192.168.6.80 以往使用时,我会将需要魔法的设备网关指定 R2S 来使用,而如果我修改了这个配置、他是对我的网络适配器做修改,也就是说当我换一个环境和网络,他连上不同的网络还用这个固定配置,就会失效(这里我没仔细研究,只是觉得不方便)这是我的第一个需求,要能自动从路由器发 IP 的时候就自动分开,但是老版本的 immortalwrt 或者 R2S 的完整 openwrt,DHCP 的 GUI 界面里面都暂时没有这种功能。分配静态地址时只能指定 IP 给指定 MAC 所以也一直搁置着,昨晚我购买了一份更昂贵的套餐后,选择复活 R2S 升级固件 刚开始来到 passwall2的页面,再次尝试订阅和手动导入,都没有成功。于是我推测是 Xray 那些固件太老了。于是我尝试通过页面手动更新,结果直接失败。 那我就想找到新的 passwall2 来手动更新整个服务 Releases · Openwrt-Passwall/openwrt-passwall2 ...
首次尝试使用 CDN 加速网站访问
基础概念 CDN(Content Delivery Network / Content Distribution Network) 内容分发网络(或内容交付网络)。它是一个分布在全球各地的服务器网络,把你的网站内容(图片、JS、CSS、视频、HTML 等)缓存到离用户更近的服务器上,从而加快访问速度、减轻源站压力、提高可用性。 源站(Origin Server / 源服务器) 你自己的服务器(你例子里的服务器 A),存放网站原始内容的服务器。CDN 所有内容最初都来自这里。 边缘节点(Edge Node / PoP - Point of Presence) CDN 在全球各地部署的“边缘”服务器。用户访问时,CDN 会把请求调度到离用户最近的边缘节点。如果节点有缓存,就直接返回;没有就去源站拉取(回源)。 初次使用CDN 部署了网站,假设域名为 666.com 客户反馈访问经常断联。那是由于我的服务器在地球的另一端,所以域名直接解析到的是我的服务器IP 由于使用的DNS服务商并没有像CF的小黄云代理我的网络,所以这个做法一来是连接不稳定、二来是暴露服务器公网地址容易被打死,所以在这个情况下,逼我去看了一下CDN 首先看了一下阿里云的(贵,放弃了) 在热佬的社区留言发现了这个平台,Doki CDN 配置过程 环境情况 我已有美国服务器A,域名666.com直接指向服务器A的地址,A部署nginx代理并且部署证书开启TSL 配置CDN 我购买了一个套餐,选择了我要加速的域名 平台会给到我一个用来CNAME指向的域名,让我去DNS解析平台配置,而我为了快速上线,这里没有切换主域名的使用,而是选择加速了一个www.666.com DokiDoki CDN 侧完整配置步骤 登录 DokiDoki CDN 控制台(dooki.cloud 后台): 添加加速域名 去「CDN加速」→ 点击「添加网站」。 加速域名 填:www.666.com(强烈推荐子域名) 源站类型:选「源站 IP」→ 填服务器 A 的 IP(或者选「源站域名」填原来的域名也行)。 回源协议:建议选「协议跟随」或「HTTP」(先用 HTTP 回源最稳,等全通后再改 HTTPS)。 提交,等待审核通过(一般几分钟)。 上传证书(必须做!) 去「证书管理」或「SSL 证书」页面 → 「添加证书」/「上传证书」。 证书名称:随便起个(如 666-letsencrypt)。 证书公钥(PEM):复制 Let’s Encrypt fullchain.pem(或 crt 文件)全部内容(从 —–BEGIN CERTIFICATE—– 到结束,包含中间证书链)。 私钥(PEM):复制 privkey.pem(或 .key 文件)全部内容。 保存。 回到刚添加的域名配置里,找到 HTTPS 设置 → 选择刚上传的证书 → 开启 HTTPS。 获取 CNAME 在域名列表里找到 www.666.com,复制它对应的 CNAME 值 填写到DNS解析平台处,我这里www原本有一个默认的 www 的A记录,直接改了就行 Hint ...
自建 RSS 聚合——freshRSS
Info 昨天在 L 站逛的时候,看到一位佬友推荐的信息源,Hacker News,我英文水平没那么好,自然是少听说这些海外的信息平台,借着翻译进去看了一圈,真的非常有意思,于是又想盯他,然而此时我已经有几个平台会每天盯了。所以想到了很久之前听说过的 RSS。 RSS是什么 RSS 是一种用于自动获取网站更新内容的订阅技术,全称是 Really Simple Syndication。它本质上是一种基于 XML 的数据格式,让网站把最新内容“推送”给订阅者,而不是你手动去刷新页面查看。 它是怎么工作的 核心流程很简单: 网站生成一个 RSS Feed(订阅源) 通常是一个 .xml 地址 里面包含最新文章、标题、摘要、链接等 用户用 RSS 阅读器订阅这个 Feed 常见工具: Feedly Inoreader FreshRSS(自建) 阅读器定时拉取更新 有新内容就显示给你 本次我 在对比了几个 RSS 的订阅器后选择了 FreshRSS (单纯看起来比较简单),先上手用起来,再考虑以后的优化 FreshRSS 选择这个 FreshRSS 还有几个原因是, 我有服务器可以满足自托管的需求 有一些信息源需要海外获取 轻量 而且支持一些插件,所以我先打通我的 V1 部署之后,未来配合一个好用的 Claw 打通 V2 的需求 1 2 3 4 [RSS源] ---> [FreshRSS] ---> [数据库] | +--> Web UI +--> API(客户端/自定义服务) 1 FreshRSS --> LLM服务 --> 智能摘要 / 分类 / 推荐 这样未来我的Claw 可以不止收集一个免费的头条信息。而是可以从我收藏的这些订阅源里面筛选出 总结出 我想看的内容 ...
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 到了再折腾) ...
openclaw食用小结
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 存放在某某目录 只有当模型判断当前任务需要使用excel时他才会读取该目录下 各个工具的具体用法,避免每次无关的任务也处理这些工具信息从而污染上下文 skills可以通过指定的 skill create 遵循规范来创造。模型本身也会进行一些简单的脚本创建。 ...