zettel-distill
Skill0 starsChanged 3 months agoMITView on GitHub
会话收尾时从本次对话里挑出值得记进用户 Obsidian Zettelkasten(她的卡片笔记库)的点,给出 具体的落点提案供她拍板。默认在 neat-freak 收尾链的 session-log 之后触发;用户单独问这次有 什么值得进库、要不要提卡、精选进 vault 时也用。
In this repository19 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- global/CLAUDE.mdCLAUDE.md
- article-ingestSkill
- git-workflowSkill
- grillingSkill
- handoffSkill
- hv-analysisSkill
- leaderSkill
- lqSkill
- mmd-explainSkill
- neat-freakSkill
- pickupSkill
- playgroundSkill
- session-logSkill
- session-searchSkill
- steelmanSkill
- taskboardSkill
- ui-optionsSkill
The file
Files
zettel-distill — 收尾时的 vault 精选
neat-freak 是 agent 侧的持久化(文档、规则、记忆、归档),缺人侧的一层:本次会话里有没有 几条用户真正消化得了、值得长期记住的东西,该进她自己的 Zettelkasten。本 skill 补这一层: 精选、给落点、等拍板、写入、回填。核心原则是精选不是倾倒——一股脑进 vault 的不是她的 东西;每条候选必须带「为什么值得记」,宁少勿多,0 条是合法且常见的结果。
设计缘由与拍板记录见 references/design.md。
何时跑
- neat-freak 本地收尾链的最后一环:事实与文档对齐 → 看板 →
session-log→ 本 skill。 session-log 先把归档写完,本 skill 只在归档文件末尾「Vault 精选」一节留痕。 - 用户单独问「这次有什么值得进库」时也可直接跑,此时没有 session log 就不回填。
- 提案是汇报,不是闸门:写入只在用户明确回复要哪几条之后;用户不回就是不提卡, 收尾照常算完成,不追问、不重发。
1. 筛候选:双门 + 上限
两道门都过才成候选,任一不过就不提:
- 指向门(vault 卡
1-3-2 需要被指向,才需要独立身份):写得出具体哪张已有卡、或 哪个具体的未来情境会指向它。写不出具体的指向者,就还不需要独立身份,不提。 - 层门(vault 卡
2201-2 持久化是分层的):它讲的是用户怎么看世界——概念、判断、跨项目 成立的机制。不是 agent 该怎么干活(那归 COMMON / 项目规则 / agent memory),不是项目事实 (归 docs / 看板),不是一次性诊断或过程记录(归看板评论 / session log)。
上限 3 条。宁可晚提不早提:提升便宜、降级贵(同 1-3-2 的判据)。0 条时写「本次无候选」,
不硬凑,理由同 neat-freak「本次没有新教训」是合法结果。
2. 定作者:每条必标
- 用户的判断 → agent 只建桩卡:标题、frontmatter、
topics:链接、参考出处、要点骨架 (= 用户在会话里的原话 + 支撑它的证据点),正文留白给用户写。判定规则:用户在会话里 说过的话、做过的取舍 = 用户的判断。理由:AI 代笔会把她的判断稀释成正确但没体温的话, 而这类卡的价值恰恰在那个判断本身。 - agent 从证据推出来的机制类结论 → agent 写全卡,按库内 AI 标记规则打 tag(规则在
vault 的
_hermes/claude-code-guide.md,不在这里复述)。 - 拿不准归谁的,按用户的判断处理(建桩卡)。
3. 定落点:必须具体到卡
只说「放 1-Zettelkasten」是零信息——那里 permanent 与 fleeting 混放。每条候选给出:
- 建议的 Luhmann 编号及其父卡;要链接的具体已有卡(文件名),每个链接一句为什么相关。
- 号段字典是 vault 卡
0 号段分配与0-1 号段分配——实际使用分析,但撞号在字典之后 仍在新增:提编号前必须ls该号段,不能凭字典推。 - 被链的是 fleeting(
YYYYMMDDHHMM 标题.md时间戳卡)→ 一并建议提升:新编号 + 补足 「六个月后自足」的正文 + 回填链接。 - 提到时间戳卡一律用标题指代,时间戳只作定位附注(vault-ops 的规则:12 位数字对 用户是零信息)。
- 两种情形标“没找到落点”:①本机没有 vault-ops skill(看 skill 列表即可机械判定);②本轮实际执行了 vault-ops 的 ASCII 探针且失败——此时 提案里必须附探针命令失败原因。
4. 提案格式(打给用户)
每条候选固定五项,写成一段,不加多余修辞:
**命题**:一句话
**为什么值得记**:具体谁会指向它(已有卡名 / 具体情境)
**落点**:编号(父卡);链接:卡名——为什么相关;已 ls 该号段:撞/不撞
**作者**:用户(桩卡,骨架 = …)/agent(全卡)
**连带**:被链 fleeting 的提升建议;没有就写「无」末尾一句话:请回复要记哪几条或改哪里;不回就都不提。只发一次。
5. 记入 session log
在 session-log 本轮写好的归档文件末尾追加或更新 ## Vault 精选 一节,一候选一行:
## Vault 精选
- [候选] 命题 → 落点(作者)
- 本次无候选 ← 0 条时只写这一行- 文件路径沿用本轮
session-log的target_path;上下文丢失时按session_id查~/_sxg/llm_session_log/.session_map.json。 - 只动这一节:不改其他节、不重跑 session-log 脚本、不动
index.md。 - 用户从未回复:行保持
[候选],含义即「未提」,不必回填。
6. 用户拍板后
- 写入只经 vault-ops:先按它读库内规则(
CLAUDE.md、_hermes/claude-code-guide.md)、 走 UTF-8 / Base64 桥接、写完回读验证。vault-ops 不存在的机器只出提案不写,不另设暂存箱。 - 写完把
## Vault 精选对应行改成- [已写入] 卡名(编号),用户否掉的改[未提]。 - 不在这一步追加新候选;用户改了措辞或落点,按她的改。
边界
- 与 neat-freak:它管 agent 侧的持久化面;本 skill 只管 vault,且不改 neat-freak 的完成合同——
vault 提案未拍板不算
pending。 - 与 session-log:session-log 归档过程;本 skill 只写它末尾的一节。
- 与 agent memory:memory 是 agent 的记忆,vault 是用户的;同一条内容不两边都写。
- 与 vault-ops:它是写入接口和库内规则入口;本 skill 不复述 SOP、不复述库内规则。
- 不冒充用户写判断类正文;不写 vault 除非用户明确回复。
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

