Codex、Claude、Pi、OpenCode、Grok 各记各的,换个宿主就丢上下文。
于是我做了 memocap(忆时):一份本地 SQLite,多宿主共用。每轮先 recall;决策、偏好、任务、约定查过同类再 remember。
仓库:
https://github.com/luodaoyi/memocap
当前 Latest Release 是 v0.1.4。
最近我把写 Zig 时常用的两份说明,和官方 zls 0.16 的诊断通道,收进了一个 Pi 包:pi-zig-skills。
仓库:
https://github.com/luodaoyi/pi-zig-skills
写这篇文章时,已经发到 0.2.2(npm
[email protected],主分支提交 0eb8535240843f1d213f0366ef50b949fc3487e0)。一句话概括:装上之后自动出现 zig-0.16 和 zig-tiger-style 两个 skill,扩展再注册 zig_lsp_diagnostics,去问官方 zls 0.16,不依赖别的包有没有 …
最近用 Visual Studio 写代码,经常卡在从 msdl.microsoft.com 下 PDB。
于是我维护了一份符号代理:pdb_proxy。上游走微软符号服务器,命中过的文件留在本地,下一次直接从缓存出。
仓库:
https://github.com/luodaoyi/pdb_proxy
当前 Latest Release 是 v1.1.0。
最近我把家里那台 TAD6S4N10G 上的飞牛 fnOS 又折腾了一圈,最后做成了一个第三方模块:TAD6S4N模块。
仓库:
https://github.com/luodaoyi/TAD6S4N10G-fnos
写这篇文章时,当前版本是 0.10.0。一句话概括:按 RR CPUinfo 的口径看 CPU 核心最高温度,同时把 Package 原始温度、Package 功耗、风扇曲线、物理仓位和机箱 GPIO 按键放进同一个 fnOS 原生界面里。
最近我做了一个更重要的项目:grok-build。
让 Codex、Claude Code、OpenCode 把活交给 Grok CLI(xAI 的 Grok,不是 Groq),会话别每次新建一个进程就扔了。仓库名是 grok-bridge-rs,装完用的 Skill 名称是 grok-build。
源代码仓库:
https://github.com/luodaoyi/grok-bridge-rs
当前最新是 v0.8.11。
最近我做了一个 Windows 小工具,叫 CodexUsageBar。
项目地址:
https://github.com/luodaoyi/codex-useage-win
一句话概括:它是一个原生 Win32/C++ 桌面挂件,把当前 Codex 账号的 5 小时和每周用量,直接放在桌面上实时显示。
最近我又折腾了一个小项目,叫 komari-zig-agent。
Komari 现有面板不用改,原来怎么接还怎么接,只把机器上那个 agent 换成 Zig。协议对齐原来的 Go agent,二进制体积和常驻内存压下来。OpenWrt、小内存 VPS、低端 ARM / MIPS 这类机器会比较有感。
项目地址:
1 https://github.com/luodaoyi/komari-zig-agent
最近我做了一个新项目,叫 BreatheLens。
项目地址:
1 https://github.com/luodaoyi/BreatheLens 它是一个专门用来分析 ResMed 瑞思迈 CPAP / APAP 呼吸机 SD 卡数据 的本地工具。目标很直接:把原始治疗数据整理成更容易看懂的图表、表格和建议。
很多人手里其实并不缺数据,缺的是一个足够直接、足够轻量、又不逼你折腾半天的查看方式。BreatheLens 就是朝这个方向做的。
域名一多,证书这事就没法靠人记。哪些快过期、哪些已经异常、该通知谁、有没有一个页面能直接给别人看——脚本能应付一两张,再多就乱。
所以我整理了一个自己之前写的项目,叫 Certwarden。自托管,多租户,持续检测证书、记历史、发通知,每个租户有自己的公开状态页。
仓库:
1 https://github.com/luodaoyi/Certwarden 当前版本 v1.3.4。
我最近把这个小工具又整了一轮:仓库还叫 go-codex-notify,本体已经是 Rust,当前最新是 v1.3.23。全局命令和原生程序都叫 codex-notify。
它还是给 Codex 接通知,但渠道不再只有 Telegram。Bark、OpeniLink Hub、Hermes Webhook 都能配,配了几个就同时发。
这个东西本身不复杂,但它解决的是一个很实际的问题:AI 在后台干活的时候,你不想一直盯着终端。
以前最大的别扭是分发。最早是自己下二进制,后来我推过一段时间用 Node 包装拉对应平台。那条路能用,也写进过旧文。现在更稳的做法是:全局装一次原生程序,命令统一用 …
最近想把 B 站关注列表快速清理一下,手动一页一页点太慢,所以写了个油猴脚本。
脚本下载:bilibili-unfollow-simple-refresh.user.js
这个版本走的是 B 站网页接口,不是模拟鼠标疯狂点按钮,整体会稳一些;同时保留了一个很简单的右下角小面板,方便开始和停止。
它的逻辑也很直接:
读取当前页关注列表 逐个取消关注 当前页处理完后自动刷新页面 刷新后自动继续下一页 如果点了停止,就在当前页处理完之后停下来 功能说明 支持批量取消当前账号的关注 支持自动刷新后继续处理下一页 支持失败重试 支持基础防频控延时 支持跳过互粉 / 跳过悄悄关注(默认关闭) 页面右下角会 …
iptables配置无SNAT转发所有流量,保留来源真实IP 前言 在网络架构中,我们经常需要通过中转机转发流量到后端服务器。传统方案通常使用 SNAT/MASQUERADE 来实现,但这会导致一个严重问题:后端服务器看到的来源IP全部变成了中转机的IP,丢失了真实客户端IP信息。
本文将介绍一种无SNAT转发方案,通过 DNAT + 策略路由的组合,在转发所有流量的同时保留客户端的真实IP地址。
这里提供一个“够用且可回滚”的 tinyfecVPN 一键部署脚本:自动安装依赖、拉取/更新源码(含 submodule)、编译 NOLIMIT(无限制)版本、安装二进制到 /usr/local/bin/tinyvpn,并生成/启用 systemd 服务(Server/Client 分开)。脚本全程交互式输入参数,直接写进 ExecStart,重启不丢;部署后默认删除源码目录(带路径保护),机器上只留下 tinyvpn + systemd unit。
这里提供一个“够用且可回滚”的最小 iptables 转发脚本:安装时交互式输入转发目标 IP、需要排除的不转发端口(可多个),并选择入口网卡;其余 TCP/UDP/ICMP 流量统一 DNAT 到后端。由 systemd 托管,重启不丢;一键卸载,出错可干净撤回。
依赖说明 管理脚本会检测 iptables/ip/sysctl/systemctl,缺失时可自动用 apt/dnf/yum 安装(也可提前设置 AUTO_INSTALL=1 静默安装)。在容器环境仍需 CAP_NET_ADMIN 等权限,否则无法生效。
前言 随着Chrome浏览器对Manifest V3的强制要求,许多基于Manifest V2的Chrome扩展都面临着升级的挑战。本文将详细介绍如何将IPIP网站IP信息查询Chrome插件从Manifest V2升级到V3版本,包括遇到的问题、解决方案以及最佳实践。
使用docker compose部署,就俩文件配置好就可以用了
部署镜像仓库代理 (1)创建账号密码【可选】 配置账号密码:设置密码认证后,我们在进行拉取镜像时就需要先 docker login登入到我们的自建的代理镜像仓库,然后才可以拉取镜像
注意:执行htpasswd命令时,请把username和password修改为你自己的账号和密码
用Caddy搭建Docker加速服务, 不用跑docker什么的,直接用就可以了
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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 …
Debian 12 启用自动更新安全补丁 在 Debian 12 上启用自动更新安全补丁(自动安全更新)通常可以使用 unattended-upgrades 工具来实现。下面是详细步骤:
安装 unattended-upgrades 软件包: 通常 Debian 12 默认源中已经包含此工具,如未安装可执行:
1 2 sudo apt-get update sudo apt-get install unattended-upgrades 通过交互式配置启用自动更新: 安装完成后,可以使用 dpkg-reconfigure 来进行配置:
1 sudo dpkg-reconfigure …
默认情况下,创建容器如果绑定了端口,则 docker 会自动修改 iptables 打开这个端口。然而 UFW 并不会显示这个规则,这就导致了不管使用 UFW 做什么限制,docker 绑定的这个端口都是开放的。
问题所在 默认情况下,创建容器如果绑定了端口,则 docker 会自动修改 iptables 打开这个端口。然而 UFW(uncomplicated firewall) 并不会显示这个规则,这就导致了不管使用 UFW 做什么限制,docker 绑定的这个端口都是开放的。
此配置的主要用途是确保没有人可以绕过Cloudflare或其他安全反向代理提供商对网站发起拒绝服务攻击(DoS)。类似功能可以通过real_ip和其他插件实现,但本文的重点是简化设置,不需要安装插件。
需要注意的是,Cloudflare的IP范围并非静态的,尽管变化频率非常低,仍需要手动更新。有人仍然可以通过Cloudflare Workers作为第三方在Cloudflare IP范围内发起请求,不过要使用这种方式进行大规模拒绝服务攻击难度较大。