我的周报是 AI 写的。但不是你以为的那种方式。
我一个朋友前两天问我,你周报是不是也用 AI 写的。
我说是,但不是你想的那种——丢一个 prompt 然后坐等收成。那个方式我试过,出来的东西一看就不是我写的,有些话我自己读了都觉得尴尬。
我现在用的这套方法,基础来自 Karpathy 提的一个概念:LLM Wiki。
这篇文章我会先解释 LLM Wiki 到底是什么,然后让你看到它是怎么在我手里跑成「聊天就能出周报」的。看完之后,你不需要学任何新工具。Obsidian 你可能已经在用了。
LLM Wiki 解决的不是「怎么搜答案」,而是「怎么让知识留下来」
你肯定见过这种用法:把一堆文件扔给 AI,问它问题,它临时翻出几个片段拼成答案。
有用吗?有用。但每次都是重新来过。下一次你问一个相近的问题,它还是要重新翻、重新拼。这件事已经做了十次了,它没有变得更懂你。
Karpathy 提出的 LLM Wiki,本质上是在这个流程中间插了一个新步骤。他不满足于「查询时再理解」,而是让 LLM 持续维护一个 markdown 知识库。每加入一份新资料,LLM 不是只回一句总结,而是去读、去提炼、去补链接、去修正旧的说法。
他把整个系统拆成三层:
第一层,Raw Sources(原始资料)。文章、PDF、截图、会议纪要、网页剪藏都放这里。这一层只读,因为它是事实来源。
第二层,Wiki(知识层)。这里放的是被 LLM 消化、重写、维护过的知识。概念页、对比分析、项目进度,都在这一层。它不是原文搬家,是被整理过的东西。
第三层,Schema(规则层)。就是告诉 LLM「这个知识库应该怎么维护」的那份文件。目录分工、Ingest 规则、Query 怎么回写、Lint 检查什么,全在这里。在 Obsidian 里,这个角色就是 AGENTS.md。
这三层看起来很朴素,但它实现的东西很不一样。Karpathy 自己说了三个核心操作:
Ingest。你扔一篇文章进去,LLM 要做的不是只写一篇摘要。它可能要同时更新十几个页面:概念页、对比页、索引、log。一篇 source 影响十几页 wiki 是正常的。
Query。在这套模式里,查询不只是一个动作。你问出一个很好的对比或分析,它不应该消失在聊天窗口里,而应该被回写成一篇新的 wiki 页面,供下次直接复用。
Lint。随着页面越来越多,过期结论、孤儿页面、缺少交叉链接、被说了十次却没有独立页面的概念——这些是迟早会出现的。LLM 要定期检查。
这三个操作跑起来之后,系统才会变成一个真的会生长的知识库,而不只是「帮你搜文件的机器人」。
有意思的是,Karpathy 在原文里还揭示了一个很多人没注意到的核心洞察:维护知识库最枯燥的不是阅读或思考,而是「记账」——保持结构一致、更新索引、补链接、清过期页面。而这些恰好是 LLM 最擅长的事。所以他说了一句很有名的比喻:
Obsidian 是 IDE,LLM 是程序员,Wiki 是代码库。
你的工作不是一行一行写 markdown,而是告诉 LLM 你要它维护什么。
我在上面加了什么:用聊天驱动这套系统
上面说的是 Karpathy 的原意。他对 LLM Wiki 的设想,更多是把文章、论文、网页这些结构化资料扔进去,让 LLM 编译成 Wiki。
我在上面加了一层自己的用法。
我不扔文章。我聊天。
我的 Obsidian 知识库里有一堆已经存在的页面:项目进度、持仓分析、学习笔记、正在读的书。Agent 知道这些页面在哪里、它们之间怎么链接。它的 AGENTS.md 写了完整的目录规则、写作规则、Ingest 规则。
我每天做的事情就是像跟同事聊天一样跟 Agent 说话。比如今天:
今天开了个迭代方案讨论会,框架接入方式差不多定了,我出第一版方案。
PDF 导出的页边距有问题,查了一下是 CSS 里一个 margin 设错了,改完了。
性能测试结果出来了,跟上个月比差得有点多,明天得查。
华电国际那边的煤价还在高位,我算了算,入炉标煤大概 1094,勉强撑着,但陕蒙坑口已经开始降价了,继续观察。
就这些。没有排版。没有分主次。没有想措辞。
但这些话在 Agent 眼里就不是闲聊。它读了 AGENTS.md,知道聊天里出现的工作内容、项目进度、数据判断,都属于应该被 ingest 的「source」。于是它会把这些话写成一篇当日日志,存在 .workbuddy/memory/ 目录下。
同时如果聊天里提到了已有的知识页面——比如华电国际——它会自动更新那个页面的煤价分析、补上今天的这条记录、更新索引。
这是 Karpathy 说的 Ingest 循环,只不过 source 不是 PDF 和网页,是我每天说的话。
Agent 怎么知道该做什么:Skills
到这里你可能想问一件事。你跟 Agent 聊完就走了,它怎么知道煤价那条应该更新到华电国际页面、怎么知道该按什么格式写日志?
答案是 Skills。
一个 Skill 就是一个 markdown 文件,放在你 Obsidian 仓库的 90_System/Skills/ 目录下。它里面写的不是代码,就是用自然语言告诉 Agent:当你看到用户做了什么,你就去做什么。
我给你看我仓库里真实的例子。a-stock-coach 这个 Skill 的 SKILL.md 开头是这么写的:
当用户谈论股票分析、生成周报、制定交易计划、入库新持仓时使用此 Skill。目标是把原始市场数据、交易决策和行为观察转成结构化笔记。
它接下来写了仓库里每一个文件的位置、每一个操作模式要读哪些页面、写到哪里、产出什么格式。比如其中一个模式叫 weekly-report:
读取当前持仓结构画像和所有个股入口页,对比上周快照,生成本周表现报告。输出:市场概览、逐只简评、组合变化、规则执行回顾、下周关注变量。
看到了吗。Agent 知道煤价那条该更新华电国际页面,不是因为 AI 聪明,是因为这个 Skill 里写好了:遇到新数据 → 更新对应个股页面 → 补链接 → 写日志。
如果你想让 Agent 能记日志、能消费周报,只需要写两个简单的 Skill:
daily-log:当用户日常聊天中谈论工作内容、项目进度、遇到的问题、决策理由时,自动整理成一条日度日志,写入 .workbuddy/memory/ 下的当天日期文件。如果对话中提到了已有的知识页面,自动更新对应页面并补链接。
weekly-report:当用户要求生成本周周报时,读取本周所有日度日志,按「本周完成」「进行中」「下周计划」三个板块归类输出。优先保留原文中的具体数据和判断,不添加用户没说过的事。
两个文件,加起来可能不到两页 markdown。但有了它们,Agent 就知道你是想让知识库一直长,还是只想让它帮你搜文件。
这就是 Ingest + Query + Lint 在你的仓库里的实际跑法:Skills 是操作手册,AGENTS.md 是宪法,每天聊天是 source,日志和周报是产出。
到了周末,周报自己来了
一周下来,我跟 Agent 聊过很多次。每天几句话,有时候多,有时候少。Agent 每天都会把当天的对话写成一篇日志文件。
到了周五下午,我只说了一句话:
这是我这周的聊天记录。给我消费成周报。
Agent 读了仓库里五天的日志,不到一分钟。出来的东西是这样的:
本周完成
新框架接入方案讨论确定方向,开始出第一版方案
修复导出 PDF 页边距问题
完成性能测试,发现与上月数据差异明显
华电国际煤价敏感性分析更新,现货价格逼近盈亏平衡线
进行中
性能回退根因排查中,初步定位到接口调用量异常
新框架接入方案完成约 40%
下周计划
输出性能回退的完整分析报告
完成新框架接入方案第一版并组织评审
持续关注煤价走势,更新华电国际持仓判断
到这里你可能会问,这跟用 prompt 生成周报有什么区别。
区别在两个地方。
第一个,这些东西不是我周五下午临时回忆出来的。它们是从 Agent 每天写的日志里自然长出来的。不需要回忆、不需要凑字数、不会漏掉任何一件事。
第二个,出来的不只是周报。五天以来 Agent 一直在更新我的知识库——华电国际的煤价分析是新的、性能测试的记录是新的、我当时的判断也在。这些不是周报,但比周报有用。它们是我整个知识库的一部分,周报只是它自然长出来的一个副产品。
怎么开始
上面说的所有东西,你不需要一次搭完。第一步就够了。
第一步:用 Obsidian 搭一个知识库骨架。
建三个文件夹:
你的仓库/├── 10_Notes/ ← 长期积累的知识页面├── 20_Projects/ ← 正在做的项目├── 60_Sources/ ← 扔进来的原始资料,只读└── 90_System/ ← 规则和 Skills
写一篇 Home.md,里面就一句话:「这是我的知识库,Agent 会帮我维护它。」
第二步:写 AGENTS.md。
在仓库根目录新建,告诉 Agent 四件事:每个目录是干嘛的、更新现有页面优先于新建、用 wikilink 连接内容、定期检查孤儿页面和过期结论。
你可以直接拿我的改。Karpathy 管这个文件叫 Schema。它是整个系统的宪法。
第三步:写你的第一个 Skill。
在 90_System/ 下建 Skills/ 目录,写一个 daily-log 的 SKILL.md。内容就是前面那段:聊天里提了工作内容 → 记成日志 → 更新相关页面。
如果你还想做周报消费,再写一个 weekly-report。
两个 markdown 文件。这就是 Agent 的操作手册。
第四步:开始聊。
打开你的 AI Agent——Codex 可以,Trae 可以,WorkBuddy 可以。只要它能读你的仓库、往里面写文件。
做完一件事之后,随口跟它说一句:
今天搞定了导出 PDF 页边距的问题,改了一行 CSS。
就这一句话。说完你该干嘛干嘛。
明天再说一句。后天再说一句。
一周之后,你说「把这周的日志消费成周报」。出来的东西,可能比你在空白的编辑器前坐一下午想出来的还要完整、还要像你。
不是你写的。是你说过的那些话,Agent 替你记下来、又替你整理回来的。
夜雨聆风