我来问道无馀说,云在青天水在瓶。
MacOS常用软件
聊天和社交 QQ - 80,90的青春。 微信 - 国内TOP1社交软件。brew install --cask wechat 钉钉 - 阿里巴巴出品协同办公软件。 企业微信 - 腾讯出品协同办公软件。 飞书 - 字节跳动出品协同办公软件。 Telegram - 地下社交软件,通信加密。 X(原twitter) - 地下社交软件,了解国内外大事。 XDeck 𝕏桌面客户端 Franz 多合一聊天工具 邮箱工具 Spark 输入法及键盘扩展 AutoSwitchinput 当你在Mac上打开不同的软件的时候,它可以自动帮你切换中文和英文输入法 Input Source Pro,推友开发的一个输入法自动切换工具 Tickeys 键盘打字风格模拟应用, 支持 Cherry轴等多种风格. keycue 快捷键辅助应用, 帮助记忆快捷键. KeyKey macOS 上优雅好用的键盘打字练习。 Karabiner-Elements 键盘映射工具 输入法 rime 可以下载鼠鬚管 Squirrel brew install squirrel-app 可以集成雾凇拼音更好用,具体的步骤如下: 1.打开 Terminal 进入 cd "$HOME/Library“ 2 .保留自带的配置目录 mv Rime Rime.old或者直接干掉这个目录 ...
Arch Linux 常用软件
本文部内容理论上基于Arch的发行版都可以使用本文进行安装。推荐的发行版本 Manajro EndeavourOS CachyOS 如果您安装好了manajro但是又不想重装系统,可以试下这个脚本 来将Manjaro自动转换为Arch。此外,DHH的omarchy (github )也值得一试~ Arch 安装后必装的软件 通过archinstall 安装以后,是没图形界面的。需要安装下面的一些软件和配置 安装时,声音后端的选择: PulseAudio,历史悠久、最为常用; PipeWire,新生代,采用全新架构,整合多种音频后端(PulseAudio、ALSA和JACK),提供低延迟的音频体 连接无线网 iwctl # 进入交互式命令行 device list # 列出无线网卡设备名,比如无线网卡看到叫 wlan0 station wlan0 scan # 扫描网络 station wlan0 get-networks # 列出所有 wifi 网络 station wlan0 connect wifi-name # 进行连接,注意这里无法输入中文。回车后输入密码即可 exit # 连接成功后退出 启用网络 systemctl enable dhcpcd systemctl enable wpa_supplicant systemctl enable NetworkManager 蓝牙 sudo systemctl enable --now bluetooth 如果没这个服务,可能需要通过 paru -S bluetooth进行安装。 ...
withoutBG 纯 Go 封装小记
把 withoutBG 的开放权重模型包成了一个纯 Go 库:github.com/lib-x/withoutbg-go 。和上一个 PP-OCRv6 的封装一样,用 pure-onnx 通过 purego 调 ONNX Runtime,不需要 CGO,也不用装 PyTorch。 这个模型做的是背景去除:输入一张 RGB 照片,输出一张 alpha 蒙版,把蒙版挂到原图的 alpha 通道上就是抠图。模型仓库是 withoutbg/withoutbg-openweights-onnx ,455MB,Apache-2.0。 这篇记录的重点和上一篇不同:上次的第一手来源是模型自带的 inference.yml,这次是模型自带的 sidecar JSON;上次的难点是动态形状和字典映射,这次的难点是几何(letterbox 怎么缩放、蒙版怎么裁回去),踩错一步人物边缘就会被啃掉一圈。 先看术语:抠图和它的度量 没接触过图像处理也没关系,先看这几个词。 抠图(matting)和分割(segmentation)不是一回事。 分割给每个像素一个"是不是前景"的二值标签,抠图给的是 0 到 1 之间的连续值,叫 alpha 蒙版。连续值是为了处理半透明和边缘过渡:发丝、玻璃、烟雾这类区域,一个像素里可能一半是前景一半是背景,硬二值会切出锯齿。这个模型输出的就是连续 alpha。 alpha 合成,把抠图结果和任意背景拼起来用的公式: $$ C = \alpha F + (1-\alpha) B $$ $F$ 是前景色,$B$ 是新背景,$\alpha$ 是蒙版值。$\alpha=1$ 保留原像素,$\alpha=0$ 完全换成背景,中间值按比例混合。库里 Remove() 返回的就是"原图颜色 + 新 alpha 通道"。 letterbox:把任意比例的图塞进正方形输入框的标准做法,等比缩放让长边贴到目标尺寸,空出来的地方填固定颜色。和直接拉伸成正方形的区别是:拉伸会改变物体形状,模型会把形变当成内容。 NCHW:张量内存布局,依次是批、通道、高、宽。这个模型的输入是 [1, 3, 448, 448]。 ...
PP-OCRv6 纯 Go 封装小记
把 PP-OCRv6 的检测和识别模型包成了一个纯 Go 库:github.com/lib-x/ppocr-v6-go 。用 pure-onnx 通过 purego 动态加载 ONNX Runtime,不需要 CGO,不用装 PaddlePaddle 和 OpenCV,除了两个模型文件,只有一个内嵌的字符字典。 代码量不大,时间主要花在把模型需要的参数一个个找出来,再验证对。这篇按"模型和文件从哪来、拿到新模型怎么入手、一张图怎么走完全流程"的顺序记录,中间有四个坑单独讲。 先看术语:检测、识别和它们背后的东西 整图 OCR 一般拆成两个模型。检测模型在整页图上找文字行,输出一堆框,它不认字;识别模型把每个框裁出来读成字符串,它不找位置。PP-OCRv6 是 PaddleOCR 的 v6 版本,det 和 rec 各有 medium / small / tiny 三档,本库用的是 medium det(约 62MB)和 small rec(约 21MB)。本库的组合是 medium det 加 small rec。模型卡表格里 medium 档检测 Hmean 是 86.2%、medium rec 识别准确率 83.2%,small rec 是 81.3%,论文在 arxiv 2606.13108 。这些是模型卡在标准测试集上的数字,和你手上某张图的端到端准确率是两回事。 模型以 ONNX 格式分发。ONNX 文件里除了权重,还存着一张计算图:节点怎么连、每个张量叫什么、形状是什么。ONNX Runtime 执行这张图,pure-onnx 用 purego 加载它的共享库,Go 侧就能直接跑推理。 ...
Memoh 源码解读:一个多 Agent 平台的架构设计参考
本文基于 felinics/Memoh (commit 1aaef83)源码写作。所有代码引用均为仓库内相对路径与行号,可直接到 GitHub 对应行查看。 写作目标:一是拆解这个生产级多 Agent 平台的模块划分、权限设计、AI 调度与流转;二是提炼出你可以直接借鉴的设计模式。如果你没开发过 agent,先读第 1 章的入门部分。 0. 项目速览:Memoh 是什么 Memoh 是一个开源多 Agent 平台,核心卖点是给每个 AI agent 一台自己的"云电脑":独立的容器 workspace(文件系统、桌面、浏览器、网络),24/7 在线,通过 Telegram / Discord / 飞书 / 微信 / Matrix / 邮件等渠道对话,带长期记忆,支持定时任务,还能托管 Claude Code、Codex 等外部 CLI agent。 技术栈:Go + Echo + Uber FX(后端)、Vue 3(Web)、PostgreSQL(主存储)、Qdrant(向量记忆)、Docker/containerd/Apple Virtualization(workspace 容器)、可选 Redis(集群模式队列)。 代码规模:internal/ 下 76 个领域包,仅 internal/agent 就约 9MB 源码,是一个认真做过生产级调度设计的项目。这正是值得读它的原因。大多数开源 agent 项目把"调度"做成内存里的一个循环,而 Memoh 把 turn 的准入、所有权、幂等、恢复全部持久化到了 PostgreSQL,用数据库约束解决并发问题。这是本文最想讲清楚的部分。 1. Agent 运行原理入门(写给没写过 agent 的人) 在深入 Memoh 之前,先用它的真实代码把四个基础概念讲明白:编排(orchestration)、调度(scheduling)、上下文注入(context injection)、输出获取(output consumption)。 ...
Buf 博客 Protobuf Tip 系列全译:10 条 Protobuf 实用技巧【译】
本文汇总翻译自 Buf 官方博客的 Protobuf Tip 系列文章(共 10 篇)。该系列由 Buf 团队撰写,Tip #1–#9 的作者是 M. C. Sunny Young de la Sota,Tip #10 的作者是 Kevin McDonald。每节开头附有原文链接。系列文章中的插图由 D2 图表语言生成,本文直接引用原文 SVG 链接。 系列概览 # 标题 一句话总结 原文 1 字段名是永恒的 永远不要重命名字段 链接 2 压缩你的 Protos! 压缩无处不在,编码体积的权衡没那么重要 链接 3 枚举名需要前缀 枚举值的 FQN 不含枚举名,必须加前缀避免冲突 链接 4 接受我们无法修复的错误 分布式场景下有些错误不值得修,不破坏用户更重要 链接 5 避免 import public/weak 这两个特性是 C++ 历史包袱,不要用 链接 6 枚举别名的隐性危险 allow_alias 会坑到反射和 JSON,别用 链接 7 看清二进制的工具 buf convert + protoscope 调试 wire format 链接 8 永远不要用 required required 是 proto2 的大坑,无法安全移除 链接 9 有些数字比其他数字更"平等" 字段编号 1–15 解码最快 链接 10 选择正确的整数类型 默认用 int64 就对了 链接 Tip #1:字段名是永恒的 原文:Protobuf Tip #1: Field names are forever (2025-04-08) ...
Windows 系统自带功能实现端口转发的完整指南
概述 Windows 系统提供了多种内置工具用于实现端口转发和网络流量重定向,无需安装第三方软件。本文详细介绍各种方法的原理、优缺点和实际应用。 方法一:netsh portproxy(最简便) 原理 netsh 是 Windows 的网络配置命令行工具,其 portproxy 功能可以实现 IPv4/IPv6 端口转发。 基础用法 添加端口转发规则 netsh interface portproxy add v4tov4 listenport=<本地端口> listenaddress=<本地地址> connectport=<远程端口> connectaddress=<远程地址> 参数说明: listenport:本地监听的端口 listenaddress:本地监听的 IP 地址(0.0.0.0 表示所有接口) connectport:转发目标的端口 connectaddress:转发目标的 IP 地址 实例 例1:转发本地 8080 到 localhost:3000 netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=3000 connectaddress=127.0.0.1 例2:转发本地 80 到远程服务器 80 netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=192.168.1.100 管理规则 查看所有转发规则 netsh interface portproxy show all 查看 IPv4 转发规则 netsh interface portproxy show v4tov4 删除特定规则 netsh interface portproxy delete v4tov4 listenport=8080 listenaddress=0.0.0.0 删除所有规则 netsh interface portproxy delete v4tov4 关键点 ⚠️ 需要管理员权限 运行 支持 IPv4 转 IPv4、IPv4 转 IPv6、IPv6 转 IPv4、IPv6 转 IPv6 规则在系统重启后仍然生效 无需额外配置防火墙(通常) 方法二:Windows 防火墙入站规则 原理 通过防火墙规则结合程序代理实现转发。 ...
Hugo 接入 Decap CMS:Netlify 方案
Hugo 博客可以继续把文章放在 Git 仓库里,同时增加一个网页后台,用来写文章、修改标签和上传图片。Decap CMS 做的就是这件事:浏览器里编辑,保存成 Markdown,再提交到 Git。 如果已经有 Netlify,认证服务可以直接交给它。想用 GitHub 账号登录,可以使用 Netlify 托管的 OAuth;想用邮箱和密码登录,可以使用 Netlify Identity 配合 Git Gateway。这两种方式都不需要自己部署 Cloudflare Worker。 前台也不必迁移。一个实用的安排是:读者访问 Cloudflare 上的博客,编辑者打开 Netlify 上的管理后台,两个平台连接同一个内容仓库。 本文使用假想的 paper-notes 项目。your-github-name/paper-notes 是仓库占位符,notes.example.com 是示例域名,paper-notes.netlify.app 也需要换成自己实际分配到的项目地址。下文配置依据截至 2026 年 9 月 11 日的官方文档整理,不表示这个假想项目已经上线。 先选登录方式 Decap 自己不保存用户密码,也不会因为多了一个 /admin/ 页面就自动拥有账号系统。登录方式取决于配置的后端。 方案 编辑者如何登录 编辑者需要 GitHub 账号吗 需要自建认证服务吗 GitHub 后端 + Netlify OAuth GitHub 授权登录 需要,并且具有仓库写权限 不需要 Git Gateway + Netlify Identity 邮箱和密码,也可另配外部登录 不需要 不需要 GitHub 后端 + 自建 OAuth 代理 GitHub 授权登录 需要,并且具有仓库写权限 需要 自己维护技术博客,用 GitHub 登录比较直接。要让不使用 GitHub 的人参与编辑,邮箱和密码更方便。这里的密码属于 Netlify Identity 用户,不是 Netlify 控制台账号,也不是 GitHub 密码。 ...
Omarchy4 设置笔记
距离上次omarchy的文章已经快一年多了,新版的omarchy 4 出来了,很多地方有些不一样了,记录下。 官方有了专门的网站来做插件和主题的管理 主题站点 插件站点 插件 新版的omarchy基于quick shell做了很多插件,下面是我推荐的几个 omarchy-keyboard-indicator 键盘布局显示和切换小插件 omarchy-tray 托盘图标插件 设置 默认浏览器 vivaldi不支持默认的omarchy-defaultbrowser报错 omarchy-default-browser vivaldi Usage: omarchy-default-browser <chromium|chrome|brave|brave-origin|edge|firefox|zen> 实际可以用 env -u BROWSER xdg-settings get default-web-browser vivaldi-stable.desktop 中文输入法 安装相关的包 paru -S fcitx5 fcitx5-configtool fcitx5-qt fcitx5-gtk fcitx5-rime 推荐使用我的aur包 snout-bin,然后一键安装(万象输入法,国内用户记得开启镜像模式),这样会自动使用cnb的镜像进行下载。如果rime没自动加入到输入引擎,程序会提示并自动加入,可能需要重启才能生效。 语音输入法 omarchy对于语音输入法的支持也不错,安装 voxtype-bin 后,先通过程序里面的配置设置好模型,然后 voxtype setup model 下载相应的模型,再到配置程序启动daemon程序。参考 https://omarchy.iamcheyan.com/zh/11-text-extraction-dictation/ 遇到的一些坑 Vivaldi 在 Omarchy + NVIDIA + Wayland 下页面闪烁的排查与修复 现象 在 Omarchy 的 Hyprland 桌面中使用 Vivaldi 浏览网页时,整个浏览器窗口可能频繁闪烁。调整显卡环境变量后,现象会发生变化:原来整个窗口闪烁,设置 LIBVA_DRIVER_NAME=iHD 后,主要剩下网页内容闪烁,而且图片较多的页面更容易触发。改回 LIBVA_DRIVER_NAME=nvidia 后,问题仍然存在。 ...
用 Zvec 构建自己的 RAG 系统:Go 与 Rust 实战指南
Zvec 是阿里巴巴开源的嵌入式(进程内)向量数据库 —— 轻量、极速,可直接嵌入应用程序。本文将介绍如何使用 Zvec 的 Go 和 Rust SDK,从零搭建一套完整的 RAG(Retrieval-Augmented Generation)系统。 署名:本文由小米 MiMo-2.5-Pro 编写,Codex-5.5 审校。 什么是 RAG? RAG(Retrieval-Augmented Generation,检索增强生成)是一种将外部知识检索与大语言模型生成相结合的技术范式。其核心流程为: 索引(Indexing):将文档切分、向量化,存入向量数据库 检索(Retrieval):用户提问时,将问题向量化,在数据库中搜索最相关的文档片段 生成(Generation):将检索到的相关文档作为上下文,连同用户问题一起送入 LLM 生成回答 RAG 解决了 LLM 的几个核心痛点: 知识时效性:无需重新训练模型,通过更新知识库即可获取最新信息 幻觉问题:基于真实文档生成回答,大幅降低虚构内容的概率 可溯源性:回答可追溯到具体来源文档,增强可信度 为什么选择 Zvec? 在 RAG 系统中,向量数据库是核心组件。Zvec 相比其他方案有以下优势: 特性 Zvec 传统方案(Milvus/Qdrant/Weaviate) 部署模式 进程内嵌入,无需独立服务 需要单独部署服务 延迟 毫秒级,零网络开销 需要网络往返 依赖 零外部服务依赖(仍需链接 Zvec C 库) 需要 Docker/K8s 等 运维 零运维 需要运维团队 运行形态 随应用进程部署,数据本地持久化 依赖服务端实现 检索能力 向量 + 全文 + 混合检索 各有差异 对于中小型或单机优先的 RAG 系统,Zvec 的嵌入式架构意味着: ...