一个自底向上生长的 Zettelkasten 卡片笔记系统:素材进来就长卡,价值观重述、自动连边、周期性巡检文章就绪簇,缺口处可触发深度调研补卡。
状态:面向 AI agent harness(Claude Code / OpenClaw / Codex / Hermes)的 Skill。已脱敏发布——原版围绕个人写作风格构建,这里把写作风格那部分替换成了可填写的模板。
写作素材越积越多,但真要写时却找不到该用哪些。常见做法是攒一堆"碎念笔记",可是这些笔记彼此孤立,不会自己长成文章。
zettel-builder 把"素材消化"这一步流程化:
- 每段素材切成多张原子卡(一卡一判断,半年后脱离上下文也能读懂)
- 每张卡末段必须做价值观重述(我同意/不同意/部分同意 + 边界),不是改写文风,是产生新判断
- 嵌入只做语义召回,agent 必须读全文判定是否真连/真同(不基于相似度阈值自动跳过)
- 周期巡检卡池,发现"文章就绪簇"(密度够 + 视角配齐 + 没被过去文章覆盖)就发 Telegram 提醒
- 簇拼成大纲后移交给你自己的写作 Skill 出稿
文章不会"自己长出来"——它是从已有方向上的稠密簇中浮现的。这个 skill 帮你更高效地组织既定方向的材料,但不替你决定写什么。
| 模式 | 触发 | 做什么 |
|---|---|---|
| ingest | /zettel ingest <来源> |
把素材切原子卡 → 价值观重述 → 候选链接 |
| scan | /zettel scan |
消化 _queue/ 里积累的待办素材 |
| inspect | /zettel inspect |
巡检卡池找就绪簇 / 孤儿卡 / 缺口 |
| write | /zettel write <cluster-id> |
把指定簇拼成大纲移交写作 Skill 出稿 |
请安装这个 Skill。先判断我当前使用的是 OpenClaw、Claude Code、Codex 还是 Hermes(优先按这个匹配顺序)。根据本机已有 Skill 目录、同步链或 agent 配置完成安装,并在安装后验证
zettel-builder能被当前环境发现和调用。不要改写 Skill 内容;只有在适配本机外部服务路径或账号能力时,才做必要的本机配置说明。
git clone https://github.com/wshuyi/zettel-builder.git ~/.claude/skills/zettel-builderOpenClaw / Hermes / Codex 则放到对应 harness 的 skill 搜索根目录下后 reload。
zettel-builder 是"调度型"Skill,本身不写文章,依赖几个外部能力。请按需准备:
-
你的写作风格快照(必填) 首次启用前,请打开
references/voice-snapshot.md(包内有模板),填入你自己的核心价值观(3-7 条)和文风硬规则。Mode 1 价值观重述会读它,没填则重述会滑回 "客观介绍"。 -
你的写作 Skill(可选) Mode 4 / Mode 5 把就绪簇或命题草稿移交给你自己的写作 Skill 出稿。没有的话也能用——卡片照样长,只是出稿那步要手动接管。
-
素材源(可选) 默认在
~/wiki/published-articles/raw/{articles,getnote}/找上游素材。可以是已发表文章、笔记导出、Readwise 高亮、知识库快照等任何 Markdown。没有上游也能用 Mode 1 单次喂料。 -
深度调研 Skill(可选) Mode 4 检测到簇有 evidence_gap 时可调
/deep-research。没有就跳过 gap 提示。 -
OpenClaw 调度(可选) 包内
references/openclaw-cron.md说明了 daily-scan + weekly-inspect 的 cron 配置。也可以纯手动/zettel scan、/zettel inspect。 -
嵌入模型(自动) 默认走
fastembed+ BGE-small-zh-v1.5(~90MB 缓存到~/.cache/fastembed/),TF-IDF 作为降级路径。
- 自底向上:素材进来就长卡,不等"要写时再找"。和"自顶向下选题"型 Skill 互补、不重叠。
- agent 判读,嵌入只做召回:去重和链接的最终判断必须 agent 读全文,不基于相似度自动跳过。这是有意识的"贵"。
- 价值观重述是硬规则:不是同义词替换,是产生新判断。没有"我同意/不同意 + 边界"那一段,卡视为未完成。
- 本 skill 不写文章:拼大纲、组材料、找证据缺口;出稿是你写作 Skill 的事。
- 手动决策点保留:自动 = 切卡、连边、找簇;人工 = 决定写哪个簇、最终是否要写。
- 包内
references/voice-snapshot.md是模板,需要你自己填入价值观/文风条款再启用。 - 长文切卡会消耗较多 token(GPT-5.5 类模型在 ingest 时每篇 1500+ 字的文章可能切 6-10 张卡)。建议先做小批量试切再上 cron。
- OpenClaw cron 集成里的 chat_id / bot 名称是占位符,请替换为你自己的 Telegram 配置。
zettel-builder/
├── SKILL.md # 主 Skill 定义(模式路由 + 协议)
├── references/ # 详细协议(价值观重述、链接、聚类等)
│ └── voice-snapshot.md # 价值观/文风模板——首次启用前必须填写
├── scripts/ # Python 辅助脚本(嵌入、链接候选、聚类等)
└── agents/ # (为未来子 agent 预留的占位)
MIT — 见 LICENSE。可自由使用、修改、再分发,欢迎注明出处但不强制。
由 王树义 在长期写作实践中迭代设计,已对外脱敏;适合需要"卡片网络"工作流但不想从零搭框架的同行使用。