<!-- title: 在浏览器里把代码敲成一首歌 -->

# 在浏览器里，把代码敲成一首歌

**概述**：本期换个挖法。比起追热榜上三分钟换个壳的 AI 项目，这一轮专挑「上线多年、仍在活跃维护、解决单一痛点」的长销型仓库——音乐、键盘、记账、数据、备份、订阅、时间统计、服务器监控，八个方向互不重复。共同点是小、稳、装上就能用，二开空间清晰。文中星标数为量级参考，精确数字与最新动态请以各仓库页面为准。

---

## 1. tidalcycles/strudel | 数千星 | 持续维护中

**一句话定位**：把 TidalCycles 那套「现场敲代码即演奏」的函数式音乐环境，从 Haskell 搬进了浏览器——不装任何东西，打开 strudel.cc 就是一场个人 algorave。

它解决的痛点很具体：想玩实时编码音乐的人，过去要装 Haskell、装 SuperDirt、配 MIDI，环境劝退率极高；而观众侧也一样，看到现场表演想复现，门槛全在「配环境」三个字上。strudel 把整条链路压缩成一个 URL。

**核心拆解**：它的灵魂是 mini-notation——一串字符串就是一段节奏，`s("bd sd hh cp")` 是底鼓、军鼓、踩镲、拍手四件套；在字符串外套函数，`fast(2)` 加倍速、`rev()` 倒放、`lpf(400)` 滤波，模式（pattern）本身是一等公民，所有变换都是对「时间上的事件序列」做代数运算。采样器直接加载 Classic dirt-samples 音色包，WebAudio 合成器兜底，也能接 MIDI 硬件。仓库是 monorepo，`core` 管模式代数，`webaudio` 管发声，文档站就是一套可交互 REPL 教程，每行示例代码点了就响。

- 上手难度：⭐⭐⭐（需要一点乐感和 JavaScript 基础，教程即兴修补）
- 适用人群：音乐人、创意编程教学、直播间/现场演出；做音乐教育产品的团队可以直接拿它当内核，包一层课程系统就是「浏览器版编曲课」，商业模式现成。

## 2. jtroo/kanata | 数千星 | 持续维护中

**一句话定位**：给任何一块普通键盘装上 QMK 固件才有的「分层」能力——纯软件、跨平台、常驻后台，笔记本剪刀脚键盘也能拥有客制化键盘的深度。

痛点：多数人的重度效率键（Hyper、一键截图、窗口调度）挤在别扭的组合键里；买可编程键盘又要几百上千元。kanata 用一个 Rust 写的守护进程把这件事变成一份文本配置。

**核心拆解**：配置语法承自 kmonad 的 `defsrc`/`deflayer` 血统——声明物理键位，再写若干逻辑层，用 `layer()` 在层间切换。经典玩法：Caps Lock 短按是 Esc、长按按住是 Hyper 层（tap-hold），左手小指从此不离职；还支持 multi（一键多动作）、宏、oneshot 修饰键。Windows、Linux（走 uinput，连 TTY 里都生效）、macOS 都能跑，比依赖 X11 的老一代重映射工具覆盖面宽得多，可配 TCP 服务接 GUI 托盘做热切换。

- 上手难度：⭐⭐⭐（要坐下来写半小时配置，之后一劳永逸）
- 适用人群：程序员、写作者、键圈玩家；变现思路是「键盘效率预设商店/订阅配置集」——不同职业（律师、剪辑师、翻译）的现成分层方案，卖配置文件本身就是生意。

## 3. actualbudget/actual | 万星级上下 | 持续维护中

**一句话定位**：本地优先的信封记账（envelope budgeting）全家桶——界面体验对标年费百美元级的商业记账软件，但账本文件存在你自己机器上，同步可选、端到端加密。

它的存在动机写在项目史上：作者 James Long 十年前用爱发电，后来把桌面端、同步服务器全部开源。它解决的是一组矛盾——想用 YNAB 式「给每一块钱派活」的方法论，又不想把全部财务数据交给订阅制云服务。

**核心拆解**：Electron 桌面客户端 + Node 写的轻量 sync-server，账本是本地文件，多设备同步时以加密块推送；支持 OFX/QIF/CSV 导入，规则引擎处理重复交易分类。monorepo 里 `loot-core` 是独立的核心账本引擎，前端只是它的一个壳——这意味着你可以只拿核心引擎，接自己的界面（比如微信小程序或语音记账入口），这是最实在的二开缝隙。

- 上手难度：⭐⭐（图形界面，即装即用；自托管服务器略需 Docker 基础）
- 适用人群：家庭记账、自由职业者；商业路径清晰：帮不愿碰命令行的小工作室/代账团队做托管部署，按月收服务费，对标品年费摆在那里，价格锚点现成。

## 4. saulpw/visidata | 数千星级 | 持续维护中

**一句话定位**：终端里的表格瑞士军刀——CSV、Excel、JSON、SQLite、Parquet、HDF5 乃至 zip 压缩包里的任何一个表，`vd 文件名` 一条命令打开，排序、过滤、透视、分组、Join、画图全部键盘完成。

痛点：手头一个 300 万行的 CSV，开 Excel 卡死，写 pandas 又要起一个脚本会话。visidata 的设计目标是「数据探查的速度等于思考的速度」。

**核心拆解**：一切皆 sheet——你做的每次排序、筛选、派生列都会生成新 sheet，操作可叠加、可回溯；列类型（文本/数字/日期/价格）一键切换，`Shift+F` 出频率表，`+` 聚合，透视表是两个按键的事；`g.` 进绘图模式直接在终端画散点。它是纯 Python，单条 `pip install visidata` 完事，插件就是普通 Python 文件，二十行代码就能加一种自定义数据源——这也是它常年被数据工程师私藏的原因：它不是软件，是一套可以长出新手的表格操作系统。

- 上手难度：⭐⭐⭐（按键需要背，肌肉记忆一周养成）
- 适用人群：数据分析师、后端、记者（数据新闻）；变现可以做垂直数据源插件与培训课，「教你用键盘吃透脏数据」在数据圈是硬通货内容。

## 5. restic/restic | 万星级以上 | 持续维护中

**一句话定位**：把「备份」这件事一次做对的命令行工具——去重、加密、增量、快照、多后端，五个词各司其职，十几年没换过设计。

痛点：备份领域的坑全是细节——重复数据存三份、明文躺网盘、增量链断一环全报废。restic 用一套内容寻址存储把这些问题在数据结构层面消灭。

**核心拆解**：文件切成块、按内容哈希寻址，相同内容全局只存一份；客户端用 AES-256 加密后再出本地机器，云服务商拿到的是密文；每次备份是一个自包含快照，`forget --keep-daily 7 --keep-weekly 4` 一条策略做保留轮换，`prune` 回收空间；后端通吃 S3、B2、SFTP，接 rclone 后等于后端无限。最有感的体验是 `restic mount`——把任意快照挂载成只读文件系统，像翻普通目录一样找回三个月前误删的文件。社区配套的 autorestic、resticprofile 把定时与配置也包圆了。

- 上手难度：⭐⭐（命令直观；设计合理的保留策略需半天琢磨）
- 适用人群：所有有数据的人，尤其中小企业运维；变现方向是「托管备份」：客户机装 restic，你的服务端收加密密文，既不接触客户数据明文又收年费，合规叙事漂亮。

## 6. miniflux/miniflux | 数千星级 | 持续维护中

**一句话定位**：极简主义自托管 RSS 阅读器——Go 单二进制 + PostgreSQL，两个依赖跑完一个「阅读中枢」，没有任何社交、推荐、信息流花活。

痛点：主流阅读器要么托管服务涨价、停服（Google Reader 阴影犹在），要么全家桶自托管套件重得像个小机房。miniflux 的答案是把「读」这件事做到零负担。

**核心拆解**：官方口号是「simple、fast、minimal」，实际工程素养体现在细节：系统默认跟随 systemd 与容器哲学，升级就是换二进制；抓取支持抓取规则与改写规则（对付正文被切割的站点）； Fever 与 Google Reader 兼容 API 让 Reeder 等手机客户端即插即用，这是它生态位的胜负手——服务器自己管，阅读体验用最好的客户端。OPML 一键迁移，快捷键布局克制而完整。

- 上手难度：⭐⭐（需要一台服务器和 Postgres，Docker Compose 十分钟）
- 适用人群：信息工作者、有阅读流刚需的人；变现在于「托管 RSS 实例」长尾生意，或作为企业内部情报系统的抓取底座二开。

## 7. ActivityWatch/activitywatch | 数千星级，小众 | 持续维护中

**一句话定位**：本地优先的自动时间统计器——后台安静记录你在每个应用、每个窗口、每个网址上花了多久，数据一行都不出你的电脑。

它是量化自我（Quantified Self）方向里少见的「装完就不用管」型项目：痛点是商业时间追踪工具要么手动打卡（坚持不了三天），要么把行为数据传云端（隐私过不去）。

**核心拆解**：架构清爽得可以进教材——`aw-watcher-window` 抓前台窗口，`aw-watcher-afk` 用键鼠空闲判定你在不在工位，各自把事件写进 aw-server 的「bucket」（桶）里，REST API 统一读写；Web UI 里做时间线、分类规则（哪些域名算「工作」）、报表查询。桶模型意味着第三方 watcher 随便加：编辑器插件、播放器状态，都能进同一套时间账本。安卓端有独立客户端，多机同步有实验性 aw-sync。全部数据本地 JSON，导出即走。

- 上手难度：⭐（安装即用，规则可选配置）
- 适用人群：远程办公者、研究者（注意力研究可拿它当采集器）；二开方向是把分类报表层做成「时间账单」产品，面向自由职业者按项目出工时报表。

## 8. henrygd/beszel | 新一代小工具，热度上升中 | 持续维护中

**一句话定位**：轻量到近乎透明的服务器监控——一个 Hub（带 Web 界面）加每台机器一个几 MB 的 agent，CPU、内存、磁盘、网络、温度、Docker 容器指标尽收一屏。

痛点在自托管圈很普遍：Netdata 功能怪兽、Prometheus+Grafana 是套间豪宅，而「我就是想瞄一眼三台 VPS 活着没」的需求，配出一个监控栈比被监控的机器还重。据项目文档，beszel 的 hub 基于 PocketBase（单文件数据库自带的 Go 后端框架），认证、存储、界面开箱即有；agent 与 hub 之间走 SSH 通道，不给被监控机器多开一个对外端口——这个安全设计在小VPS场景里相当讨巧。告警阈值、OAuth 登录、多用户都有，资源占用低到可以装在树莓派上监控树莓派。

- 上手难度：⭐⭐（Docker 起一个 Hub，被监控机跑一条安装命令）
- 适用人群：自托管玩家、小团队运维；变现可做「监控即服务」的白盒分支：帮传统企业内网几十台旧机器做轻量巡检面板，交付成本极低。

---

## 本期横向对比

| 仓库 | 方向 | 星级量级 | 上手 | 典型场景 |
|---|---|---|---|---|
| strudel | 创意编程音乐 | 数千星 | ⭐⭐⭐ | 现场演出、音乐教学 |
| kanata | 键盘重映射 | 数千星 | ⭐⭐⭐ | 笔记本键盘分层、效率键 |
| actual | 个人记账 | 万星上下 | ⭐⭐ | 家庭/自由职业财务 |
| visidata | 终端数据分析 | 数千星 | ⭐⭐⭐ | 大 CSV 探查、数据新闻 |
| restic | 备份 | 万星以上 | ⭐⭐ | 个人/企业数据保护 |
| miniflux | RSS 自托管 | 数千星 | ⭐⭐ | 个人阅读中枢 |
| ActivityWatch | 时间统计 | 数千星 | ⭐ | 量化自我、远程办公 |
| beszel | 服务器监控 | 上升期 | ⭐⭐ | VPS/家庭实验室巡检 |

## 本期工具地图

```mermaid
flowchart TD
    A["本期八个长销工具"] --> B["创作与输入"]
    A --> C["数据与财务"]
    A --> D["自托管与运维"]
    B --> B1["strudel 代码作曲"]
    B --> B2["kanata 键盘分层"]
    B --> B3["ActivityWatch 时间统计"]
    C --> C1["actual 本地记账"]
    C --> C2["visidata 终端表格"]
    C --> C3["miniflux 极简订阅"]
    D --> D1["restic 去重备份"]
    D --> D2["beszel 轻量监控"]
```

## 本期之最

- **最值得立即尝试：strudel** —— 零安装，打开浏览器第一分钟就能敲出鼓点，是八者中「从知道到上手」距离最短的一个。
- **最有商业潜力：actual** —— 有对标定价的商业产品、有可剥离的核心账本引擎、有明确的托管服务缺口，三要素齐备，二开起点比多数自托管项目高。
- **最被低估：kanata** —— 键盘是所有人每天用八小时的工具，但知道「分层」概念的人不足百分之一；一个下午的配置投资，回报以年计。

## 参考来源

1. [tidalcycles/strudel](https://github.com/tidalcycles/strudel) 与官方在线环境 [strudel.cc](https://strudel.cc) — mini-notation、WebAudio 架构与交互式教程出处
2. [jtroo/kanata](https://github.com/jtroo/kanata) — 跨平台重映射、defsrc/deflayer 层语法说明
3. [actualbudget/actual](https://github.com/actualbudget/actual) 与 [actualbudget.org](https://actualbudget.org) — 本地优先架构与加密同步设计
4. [saulpw/visidata](https://github.com/saulpw/visidata) 与 [visidata.org](https://www.visidata.org) — 多格式 sheet 模型与终端绘图能力
5. [restic/restic](https://github.com/restic/restic) 与 [restic.net](https://restic.net) — 内容寻址、加密与快照保留策略文档
6. [miniflux/miniflux](https://github.com/miniflux/miniflux) 与 [miniflux.app](https://miniflux.app) — 极简架构与 Google Reader 兼容 API 说明
7. [ActivityWatch/activitywatch](https://github.com/ActivityWatch/activitywatch) 与 [activitywatch.net](https://activitywatch.net) — watcher/bucket 架构与本地优先设计
8. [henrygd/beszel](https://github.com/henrygd/beszel) — hub/agent 结构与 SSH 通信方式（据项目文档）

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
