Posts for: #Tools

Hyprland 是什么

Linux 上的一个窗口管理器,官网 hypr.land。它决定窗口怎么摆、怎么切换、动画长什么样。

平铺

一般桌面上窗口是叠在一起的,像桌上摊开的一堆纸,你拖来拖去调整位置和大小。平铺是另一种摆法:窗口不重叠,自动铺满整个屏幕。开第一个窗口占满屏,开第二个屏幕自动一分为二,开第三个再分。

好处是不用手动拖窗口,也不会有窗口被压在下面找不到。切换、移动、调整大小全走键盘快捷键。

Linux 上平铺窗口管理器有很多,i3、dwm、sway 都是。Hyprland 的区别在于它有圆角、模糊、阴影和动画,窗口开关和切换都有过渡效果。

Wayland

Hyprland 只能在 Wayland 上跑。

Wayland 是 Linux 上画图形界面的一套协议,用来取代 1987 年的 X11。在 X11 时代,窗口管理器和显示服务器是两个程序;到了 Wayland,两者合并成一个,叫合成器(compositor)。所以 Hyprland 既管窗口布局,也管画面合成。

老程序只认 X11 的,通过 XWayland 这个兼容层照样能跑。

它不是完整桌面

GNOME、KDE 装完就能用:状态栏、文件管理器、设置面板、通知、锁屏,全都有。Hyprland 只管窗口,其余要自己拼:

装完第一次启动是一块黑屏加一个鼠标指针,什么都没有。所有东西都得自己配出来。

配置

一个文本文件,~/.config/hypr/hyprland.conf。按键绑定、动画、窗口规则都写在里面,存盘立刻生效,不用重启。所有配置项在 Wiki 上。

bind = SUPER, Return, exec, ghostty
bind = SUPER, Q, killactive
bind = SUPER, 1, workspace, 1

animations {
    enabled = true
    bezier = smooth, 0.05, 0.9, 0.1, 1.05
}

现状

滚动发布,两三个月一个版本,最新是 0.56.2(2026 年 8 月)。主力开发者是 Vaxry。版本号还在 0.x。源码和发布记录在 GitHub。

[阅读全文]

备份公司邮箱的三种办法

企业微信邮箱、腾讯企业邮箱,网页端和客户端都只能一封一封另存,没有批量导出。想把几年的邮件整个拿到手,得走 IMAP。

三条路:Mac 自带的邮件 App 导出、imapsync 搬到 Gmail、自己写脚本存本地。共同前提是先开 IMAP。

先开 IMAP

网页登录企业邮箱:

  1. 设置 → 收发信设置 → 开启 IMAP/SMTP 服务
  2. 设置 → 邮箱绑定 → 看"安全登录"开没开。开了就生成一个客户端专用密码,下面三种办法都用它,不用邮箱密码
  3. 服务器 imap.exmail.qq.com,端口 993,SSL

账号被公司回收之后什么都拿不了,要备份趁还能登录。

一、Mac 邮件 App 导出

邮件 → 添加账户 → 其他邮件账户,填地址和客户端专用密码,服务器手填上面那个。等它把邮件同步完,几万封要一两个小时。

然后选中左边的邮箱,菜单 邮箱 → 导出邮箱,选一个文件夹。每个邮箱导出成一个 .mbox。

  • 好处:不用装东西,附件都在里面
  • 坏处:.mbox 是一个大文件,几年邮件轻松上 GB,搜索只能靠再导回某个邮件客户端。Apple 的导入功能对超过 2 GB 的 mbox 会出问题,导出时按邮箱分开导,别一次全选

适合:一次性存档,存完基本不再翻。

二、imapsync 搬到另一个邮箱

不落地本地文件,直接把邮件复制到 Gmail 或 Fastmail。

brew install imapsync

imapsync --host1 imap.exmail.qq.com --user1 [email protected] --password1 '客户端专用密码' \
         --host2 imap.gmail.com   --user2 [email protected]   --password2 '应用专用密码' \
         --gmail2

默认全量:所有文件夹所有邮件,保留时间和已读状态。再跑一遍是增量的,按 Message-ID 跳过搬过的。不加 --delete1 / --delete2 它不删任何东西,源邮箱后来删掉的邮件目标那边还留着。

[阅读全文]

nixos-anywhere:一条命令把远程 Linux 装成 NixOS

装 NixOS 通常要做安装 U 盘,进安装环境,手动分区,手动装。云主机更麻烦,很多厂商没有 NixOS 镜像,只给 Debian、Ubuntu。

nixos-anywhere 解决的就是这件事。只要一台机器能 SSH 登录,它就能远程把机器上的 Linux 换成 NixOS。不用 U 盘,不用控制台,不用厂商支持。

它怎么做到的

靠的是 Linux 的 kexec。kexec 能跳过硬件重启,直接把内存里正在跑的内核换成另一个。nixos-anywhere 用它做四步:

  1. SSH 登进目标机器,下载一个很小的 NixOS 安装环境,用 kexec 切换过去。原来的系统被踢出内存,机器现在跑在一个纯内存的 NixOS 安装盘里。
  2. 按你写的分区文件给硬盘分区、格式化、挂载。这一步交给 disko 做,disko 是一个用配置文件描述磁盘布局的工具。
  3. 把你定义好的 NixOS 系统传到机器上,装进硬盘。
  4. 重启。机器起来就是 NixOS。

要准备什么

本机:

  • 装了 Nix,开了 flakes
  • 一个 flake,里面定义了目标机器的 NixOS 配置
  • 一个 disko 分区文件

目标机器:

  • 跑着任意 Linux,x86_64 或 aarch64
  • 能用 root 或免密 sudo 的用户 SSH 登录
  • 内存 1GB 以上,安装环境要在内存里跑
  • 支持 kexec。多数虚拟机和物理机都支持,OpenVZ、LXC 这类容器不支持

一个完整的例子

flake.nix:

[阅读全文]

Google Tag Manager 是什么,有哪些替代品

Google Tag Manager(GTM)是个标签管理工具。

以前网站要接 Google Analytics、广告转化统计、在线客服挂件、A/B 测试脚本,每接一个就得改一次代码、发一次版。GTM 的做法是网站里只埋一段代码,之后要加什么第三方脚本,都在网页后台里配好再发布。

四个概念:

  • 容器:埋在网站里的那段代码,全站只有一段
  • 标签:要发的第三方代码,常见厂商都有现成模板
  • 触发器:什么时候发,比如打开页面、点了某个按钮、提交表单、滚到页面某个位置
  • 变量:发的时候带上的值,比如订单金额、商品 ID,一般由前端推给 GTM

好处是改一个广告转化统计不用再排研发的版本,从等一个迭代变成一小时。官方还提供预览调试、多人协作、测试环境和权限控制。基础版免费,企业版叫 Tag Manager 360,属于 Google Marketing Platform。

这几年的重点是服务端标签:把脚本执行从浏览器搬到自己的服务器上,绕开广告拦截和浏览器的隐私限制,同时能过滤往外发的数据。纯在浏览器里跑的标签,容易被拦截插件和浏览器隐私设置挡掉。

主要竞品

企业级:

  • Tealium iQ,最常被拿来和 GTM 比,通常和它的客户数据平台 AudienceStream 一起卖,数据管理能力强
  • Adobe Experience Platform Tags(原名 Launch / DTM),用 Adobe 全家桶的客户基本默认用它
  • Ensighten、Commanders Act,偏欧洲市场和合规

隐私和自己部署:

  • Matomo Tag Manager,开源免费,可以自己搭,对标 GTM
  • Piwik PRO Tag Manager,面向 GDPR、金融医疗这类合规要求高的场景,可以私有部署

数据管道类,严格说不是同一品类,但常在同一次采购里被拿来比较:

  • Segment(Twilio)、RudderStack、Snowplow、MetaRouter,采集一次,在服务端分发给各个下游,架构上能替掉大量标签

轻量和垂直方案:

  • Stape、Addingwell,不替代 GTM,而是帮你托管 GTM 的服务端容器
  • Shopify、WordPress 里的各种像素插件,给不想碰 GTM 的小商家用

国内 GTM 加载可能不稳定,常见替代是神策、GrowingIO、火山引擎 DataFinder 这类埋点加分析一体的产品。它们把埋点和分析绑在一起,GTM 只管分发、不碰数据本身。

怎么选

只想少烦研发、免费用起来,GTM 基本没有对手。在意隐私合规、数据不想过 Google,看 Matomo 或 Piwik PRO。标签已经多到需要专门管理,或者要多渠道统一发数据,该看的是 Tealium 或者数据平台那一层,换一个标签管理工具解决不了。

[阅读全文]

让 AI Agent 帮你运营知识星球:官方 CLI 新版发布

经营一个知识星球,每天都有一串小事。

新主题要看,评论要回复,提问不能漏掉。内容积累多了,还要整理精华、标签和专栏。到了周末,可能还要做周报、挑选好内容、制作海报,提醒即将到期的成员续费。

每件事都不复杂,加在一起很占时间。

知识星球开放平台最近发布了新版本:

  • zsxq-cli:0.5.0
  • zsxq-skill:2.1.0
  • MCP Service:近期功能更新

zsxq-cli 负责读取和操作知识星球,zsxq-skill 告诉 AI Agent 什么时候使用哪些能力。安装以后,星主可以直接用自然语言安排工作。

比如:

找出最近一周还没有回答的高质量提问,参考我过去写过的相关内容起草回答,先给我确认,明天上午十点发布。

Agent 会读取最近的提问,搜索星主过去发布的内容,整理回复草稿。星主确认以后,它再创建定时回答任务。

还可以这样说:

  • 看看今天有哪些新内容、提问和评论需要处理。
  • 整理最近的评论,找出还没有回复的问题。
  • 从本周内容里挑选值得加精的主题,并建议标签。
  • 把最近发布的主题收录到对应专栏。
  • 做一份本周运营报告。
  • 把今天的精选内容做成海报。
  • 把一篇帖子做成竖版视频。
  • 找出即将到期的成员,起草续费关怀内容。

这次更新还增加了普通主题、问答和投票主题,支持 Markdown 正文和 AI 创作声明。Agent 可以定时发帖、定时回答,查看、修改和取消定时任务,也可以设置主题精华和置顶,修改星球名称、简介、背景图和亮点图片。

在你的 Agent 里安装

知识星球 Skill 可以配合国内常见的 AI Agent 使用,包括 WorkBuddy、QoderWork、CodeBuddy、Qwen Code、Kimi Code CLI、MiniMax Code、TRAE、通义灵码等。Codex、Claude Code、Cursor 等工具也可以使用。

我们还做了一个知识星球花园,用来放知识星球和 AI 结合的新项目。这里可以查看 Skill 的能力、安装方法、离线安装包和开源代码。

让一千朵花先开。

安装不用自己研究命令。打开正在使用的 Agent,把下面这句话发给它:

帮我安装知识星球 Skill:https://garden.zsxq.com/skill/INSTALL.md

Agent 会读取安装说明,检查环境,安装 zsxq-cli 和 zsxq Skill。

登录时,Agent 会给出一个授权链接和验证码。用户在浏览器或手机里确认授权,Agent 随后检查安装和登录状态。

[阅读全文]

新加坡的 OneService 是什么?

OneService 是新加坡国家发展部旗下 Municipal Services Office(MSO)提供的市政服务平台。

居民在社区里看到公共区域不清洁、道路或人行道损坏、路灯故障、树木、虫害等问题,不需要先判断该找 NEA、LTA、NParks、HDB 还是 Town Council。拍照、选择地点、描述问题后提交,OneService 会把 case 交给负责的政府部门或 Town Council,并在后续显示处理进度。

它目前有三个主要入口:

  • OneService App:iOS 和 Android 都有,是最完整的入口。除了提交和追踪市政问题,还能报告违停、预订部分社区设施,以及查看附近的公共信息。
  • OneService Chatbot:通过 WhatsApp 或 Telegram 对话提交市政问题,不需要注册账号。违停目前仍要用 App 报告。
  • OneService 网站:提供说明、下载和服务入口,不是网页版 App。

OneService 可以理解为新加坡政府的统一市政工单入口:居民按问题提交,系统负责找到对应部门。

它不处理紧急事件。遇到人身、财产或公共安全的即时危险,仍要直接联系相应的紧急服务或政府部门。

以上信息核对至 2026 年 8 月 18 日。

在手机上用自己电脑里的 AI Agent

DeepSeek 开源了自己的 agent harness,叫 dsh。装上跑一条命令就能用:

npx @deepseek-ai/dsh web

它没有终端界面,只有浏览器 UI,默认起在 http://127.0.0.1:3080。我想在手机上也能用——躺着的时候给它派个活,回到电脑前看结果。

不要直接开放到局域网

第一反应是把它绑到 0.0.0.0,手机连同一个 wifi 就能访问。dsh 直接拒绝了这个参数,报错写得很直白:

--host 0.0.0.0 is intentionally not supported yet for safety: it would expose remote code execution to the network

这不是没做完,是故意堵死的。这类 agent 能跑 shell、能读写你整个文件系统,而它目前没有任何用户认证。裸奔在局域网上,等于把电脑的 shell 交给任何连了你 wifi 的人。

用 Tailscale 反代

正确的做法是:程序继续只绑本地回环,前面放一层带认证的代理。Tailscale 正好干这个。

# 1. 启动,同时声明信任的域名
dsh web --trusted-host 你的机器名.你的tailnet.ts.net

# 2. Tailscale 在前面反代
tailscale serve --bg 3080

完事。手机连上 Tailscale,打开 https://你的机器名.你的tailnet.ts.net/ 就能用,自带 HTTPS 和设备级认证,家里 wifi 上什么都没暴露。

[阅读全文]

Hedy 不开源,有哪些开源 AI 听课助手?

需求很明确。

工具要在 Mac 上同时听到电脑声音和麦克风,边听边显示逐字稿。讲师提到新概念、数字或者值得怀疑的判断时,AI 能主动补充解释、联网查证、提出反例,也能结合提前提供的个人资料给出提示。课程结束后,再把录音、逐字稿和笔记存下来。

重点放在课程进行中的实时提示:AI 跟着一起听,及时提醒哪里值得多想一步。会后转写和总结工具不在这次比较范围内。

Hedy 已经覆盖实时转写和自动建议等主要功能,但它是商业闭源产品。本文把它作为参照,再检查三个开源项目:Raven、Anarlog 和 Meetily。

以下信息截至 2026 年 8 月 8 日,来自产品官网、文档和公开源码。本文没有一小时中文课程的实测数据,无法比较实时识别准确率和延迟。

Hedy:商业闭源的参照

Hedy 能实时转写谈话,根据不同场景给出自动建议,还提供面向学生的课程模式。用户可以配置 Session Context,让 AI 预先知道个人背景、目标和词汇。

它的免费版每月 5 小时,每次 Session 的实时建议只覆盖前 30 分钟。Pro 版月付 12.99 美元,年付 99.99 美元,还有 299 美元的终身版。

Hedy 没有开放客户端源码。使用条款把软件、算法和设计列为公司专有资产,并明确禁止反编译、反汇编和尝试推导源码。

Hedy 提供 REST API 和 Webhook,但它们主要用于把 Session 结果接到其他工具。官方集成文档列出的实时事件包括 suggestion.created,可以收到 Hedy 已经生成的建议;包含完整逐字稿的 session.ended 在 Session 结束后触发。官方集成文档未列出可供外部程序消费的实时逐字稿流,也没有说明自动建议会在课程中联网查证。

Hedy 可以直接用来验证自动提示是否有用。它没有开放源码,无法在客户端基础上继续改造。

Raven:已有会中 AI 悬浮层

Raven 使用 MIT 许可证,支持 macOS 和 Windows。它同时采集系统音频和麦克风,在本机完成回声消除,再把两路音频分别交给 Deepgram 实时转写。

[阅读全文]

让 Mac 保持清醒:caffeinate

macOS 自带一个命令,caffeinate,给机器灌咖啡,不让它睡。跑长任务、下载大文件的时候用,不用去系统设置里改电源选项。

caffeinate

运行后 Mac 不睡眠。Ctrl+C 退出,恢复正常。

常用参数

屏幕常亮:

caffeinate -d

默认只防系统睡眠,屏幕照样熄。加 -d,屏幕也一起保持。

限时,单位是秒:

caffeinate -t 7200

两小时后自动失效,不用手动关。

跟着任务走:

caffeinate -i ./backup.sh

任务跑多久,机器醒多久。任务结束,自动恢复。

合盖

管不了。caffeinate 挡的是空闲睡眠,合盖触发的是另一套强制睡眠,合上照样睡。

接了外接屏、电源和键鼠,macOS 本身就支持合盖运行,不用任何命令,这是官方的 clamshell 模式。

没有外接屏,还想合盖继续跑:

sudo pmset -a disablesleep 1

设置重启后还在。用完改回 0,否则 Mac 塞进包里也不睡,发热耗电。

怕忘关,套一层自动恢复:

sudo sh -c 'pmset -a disablesleep 1; trap "pmset -a disablesleep 0" INT TERM EXIT; sleep 28800'

合盖不睡 8 小时。到点、Ctrl+C、关终端,都会自动恢复睡眠。把 sleep 28800 换成任务本身,就是合盖版的 caffeinate -i。

查当前状态:

pmset -g | grep SleepDisabled

1 是不睡,0 是正常。

[阅读全文]

ntfy.sh 是什么

ntfy.sh 是一个很轻的通知服务。手机或电脑先订阅一个 topic,你的服务器、脚本、监控工具或任何程序,只要向 https://ntfy.sh/你的-topic 发一个 HTTP 请求,这条消息就会变成推送通知弹出来。

它适合做小而确定的提醒:备份失败、网站挂了、长任务跑完、家里传感器触发。最简单的用法只有一行:

curl -d "Backup failed" https://ntfy.sh/my-secret-topic

ntfy 是开源项目,可以直接用官方服务,也可以自己部署。默认不需要注册,所以 topic 名字本身就像密码,要取一个不容易被猜到的名字。敏感信息不要随手发到公共服务上。

官网:https://ntfy.sh/

GitHub:https://github.com/binwiederhier/ntfy