Systems, code, and things worth understanding.

自由 和谐

很惭愧,就做了一点微小的工作。


Contributed to some open source projects, including:
go-mysql-driver/mysql gogf/gf fastclaw-ai/weclaw tw93/Kaku

Worked on some company projects, including:
incident.woa.com mdb.woa.com dbmanager.woa.com/api dba.baidu.com/mis


Agent Development Kit (ADK) · 07 - Flow


对照 ADK-Go v2.4.0 源码,以一次天气工具调用和可运行示例,逐层拆解 Flow 的双层循环、请求拼装、事件持久化、回调、流式响应、人工确认与 Agent 转移。
Read more ⟶

neat-annotations 上手指南


Hugo shortcode、样式加载、暗色和中文排版怎么接到 neat-annotations
Read more ⟶

ADK-Go 源码阅读系列


沿一次用户请求读懂 ADK-Go:从 Model、Agent、Runner、Flow 到 Tool、Context、Session、Plugin 与 Workflow,追踪对象变化、事件流和运行边界。
Read more ⟶

Attention 背后的数学:Q、K、V 白话详解


基于 Outcome School 文章《Math behind Attention - Q, K, and V》的中文整理与扩展讲解。

原文链接:https://outcomeschool.com/blog/math-behind-attention-qkv

原文作者:Amit Shekhar

原文页面标注日期:2026 年 4 月 3 日

一句话理解 Attention

Attention 可以理解成:

每个词都先问一句:“当前情况下,我应该重点参考哪些词?”然后根据相关程度,从其他词那里提取信息,形成一个包含上下文的新表示。

例如句子:

I love AI

处理 I 时,模型可能会发现 love 和它关系比较大,于是给 love 更高权重;处理 AI 时,也可能重点参考 love。

完整公式是:

Attention(Q, K, V)
= softmax(Q × Kᵀ / √dₖ) × V

这条公式可以拆成 6 步:

文字
  ↓ embedding
数字向量 X
  ↓
生成 Q、K、V
  ↓
Q 和 K 做匹配
  ↓
Softmax 转成权重
  ↓
用权重加权混合 V
  ↓
得到包含上下文的新向量

…
Read more ⟶

从 Jekyll 到 Hugo:重构我的终端风格博客


记录一次从 Jekyll 迁移到 Hugo 的博客重构,包括目录设计、终端 TUI、E-Ink 模式、自定义域名和 GitHub Pages 部署。
Read more ⟶

Redis 持久化 - AOF & RDB


Redis 基于内存运行,因此如果 Redis 服务器崩溃,数据将会丢失。为了防止数据丢失,Redis 提供了两种持久化机制:RDB 和 AOF。

先给结论

  • RDB 是定期快照:文件小、加载快、适合备份和快速恢复,但两次快照之间的写入可能全部丢失。
  • AOF 是写命令日志:通常能把故障时的丢失窗口压到约 1 秒,但文件会增长,需要 rewrite;磁盘写入、fsync 和恢复回放都要付出成本。
  • 线上有状态数据通常同时开 RDB 和 AOF:AOF 用于较小的 RPO,RDB 用于备份、迁移和快速装载。两者同时打开时,Redis 启动优先加载 AOF。
  • Redis 7 是文件布局分水岭:AOF 从单文件变为 Multi-Part AOF(MP-AOF),由 base 文件、incremental 文件和 manifest 共同组成。备份时不能只拷贝一个 appendonly.aof。
  • 持久化不是高可用:副本、Sentinel、Cluster 能缩短故障切换时间,但不能替代跨故障域的持久化备份。

可以把目标拆成两个指标:

  • RPO(Recovery Point Objective):最多能接受丢多少数据。
  • RTO(Recovery Time Objective):希望多快恢复服务。

RDB 通常更偏向较短的 RTO,AOF 通常更偏向较小的 RPO。最终结果还受文件系统、磁盘控制器、云盘写入保障和备份流程影响,不能只看 Redis 配置名义上的策略。

1. Redis 为什么需要持久化

Redis 的工作集在内存中。进程重启、主机掉电或容器被销毁时,内存状态本身不会保留。持久化把内存状态转换为可在启动时重新装载的文件:

客户端命令
    |
    v
内存中的数据集 ---------------> RDB 快照(某一时刻的完整状态)
    |
    +--------------------------> AOF(按顺序记录的写命令)

这里有三个容易混淆的边界:

…
Read more ⟶

Herdr 面向 AI Agent 的终端工作区管理器


Herdr 是一个终端多路复用器(terminal workspace manager),定位和 tmux 类似,但它是为「同时跑多个 AI coding agent」这个场景设计的。

核心差别在于:tmux 只知道某个 pane 里有个进程在跑;Herdr 能识别出 pane 里跑的是 claude / codex / pi / cursor 这类 agent,并把它的生命周期状态(idle / working / blocked / done / unknown)暴露出来。这样 agent 之间就能互相编排——一个 agent 可以开一个新 pane,在里面拉起另一个 agent,发 prompt,等它跑完,再读结果。

安装

macOS 上用 Homebrew:

brew install herdr
herdr status

herdr status 会分别打印客户端和服务端信息:

client:
  version: 0.8.0
  channel: stable
  protocol: 19

server:
  status: running
  version: 0.8.0
  compatible: yes
  socket: /Users/elon/.config/herdr/herdr.sock

protocol 要求客户端和服务端一致,升级后如果 restart_needed: yes 就得重连会话。

…
Read more ⟶

ChatGPT 如何优化智能体循环:Harness、API 与推理


Read more ⟶

The new rules of context engineering for Claude 5 models


I’ve written previously about how to best prompt the newest generation of Claude 5 models and work with them iteratively to discover what yo...
Read more ⟶

VS Code Custom UI CSS 配置


使用插件自定义 VSCode 的样式,隐藏元素。
Read more ⟶