一个指令,让AI 自动生成你的周复盘

相关代码:5.todo/weeks/tools/update-growth.py(成长档案自动更新脚本,全文见正文「让档案自动生长」一节) 相关视频: 008-项目管理


cover:AI 周复盘全是正确的废话?| 「obsidian+AI 一键完成周复盘」 title: 一个指令,让 AI 自动生成”只对你成立”的周复盘

简介(Description)

你大概率试过用 AI 做周复盘:先回忆、再整理成清单、最后丢给 AI 总结——结果发现”既然都整理好了,自己就能总结,要 AI 干嘛?”

问题在于分工反了:最累的”回忆 + 整理”你自己扛了,最轻松的”总结”才给 AI。

这期把流程整个反过来:给 Obsidian 仓库挂一个每小时自动 commit 的 git,让笔记、todo、git log 三者构成一条证据链;再把”个人长期目标 + 性格特征 + 上周复盘”写进 prompt,让复盘”只对你一个人成立”。最后收口成一条 /周复盘 指令——AI 自动翻完你这一周的所有记录,生成基于真实行为轨迹的复盘。

章节时间戳

00:00 为什么你的 AI 复盘总是没用
00:38 复盘质量 = 资料 × 提示词
00:55 资料+git
02:16 三个数据源 = 一条证据链
02:50 定制自己的prompt
05:07 一键复盘
05:47 流程梳理
07:19 演示
09:26 结尾

关键词 / 标签(Keywords / Tags)

周复盘, AI周复盘, 自动复盘, 复盘系统, Obsidian, Claude Code, Codex,
AI效率, 自动化, git自动commit, 笔记管理, 个人知识管理, PKM,
prompt工程, 时间管理, 自我管理, 个人成长, 数字花园

一个指令,自动生成你的周复盘

这篇教程能帮你得到什么

一套搭一次、用很多年的自动复盘系统:你正常记笔记,系统在后台默默存证,每周一句话 /周复盘,AI 自动翻完你这一周的所有记录,生成一份真正基于你行为轨迹、只对你一个人成立的复盘。

全程你不用列清单、不用回忆、不用喂资料。


一、先想清楚:为什么你的 AI 复盘总是没用

你大概率试过用 AI 做周复盘,但流程往往是这样的:

  1. 先回忆——周一干了啥,周二干了啥……
  2. 再整理成清单
  3. 最后把清单丢给 AI,让它总结

列到一半你就会发现一个尴尬的事实:

假象

既然我都已经整理成这样了,我自己就能总结,还要 AI 干嘛?

问题出在分工反了:你把”回忆”和”整理”这两件最累的事自己扛了,只把最轻松的”总结”丢给 AI。

这篇教程要把流程整个反过来——让 AI 自己去翻你这一周的所有记录,自动生成复盘。你什么都不用列。

记住这条核心公式,后面所有步骤都围绕它展开:

核心公式

复盘质量 = 资料 × 提示词

  • 资料决定 AI”知道你做了什么”
  • 提示词决定 AI”能不能说到你心里去”

下面分两部分各个击破。


二、资料:让 AI 自己去读,而不是你来喂

核心问题只有一个:怎么在你完全不费力的前提下,让 AI 拿到这一周最全的数据?

基础数据源是 Obsidian——用它追踪长期项目和每日任务(参见上一篇008-项目管理)。在此之上,只需多做一步:

记录笔记随时间的变化

给 Obsidian 仓库挂一个 git,让它每小时自动 commit。 说白了,就是把笔记文件夹当成代码仓库来管,让它在后台自动记录”你每次改了什么、改了哪些文件”。

步骤 1:初始化 git

在仓库根目录执行:

git init

步骤 2:挂一个自动 commit 的定时脚本

目标:每小时检测一次有没有文件变动,有变动就自动 commit,commit 信息里自动带上日期和文件数。后台默默跑,你无感。

下面给两套方案,**按你的场景选择:

launchctl start com.jz.auto-git-all-in.plist

iCloud 目录踩坑提醒

如果仓库在 iCloud 目录,launchd 启动的 /bin/bash 进程没有「完全磁盘访问权限」,读不了 iCloud 文件夹,会导致 git 失败。

修复办法:打开 系统设置 → 隐私与安全性 → 完全磁盘访问权限,点 +,按 Cmd+Shift+G 输入 /bin/bash,添加并打开开关。

注意:给 /bin/bash 全盘权限范围偏大,多人共用的电脑最好把权限范围收窄。

这一步做完,你就有了三个数据源,构成一条完整的证据链

数据源它能证明什么
todo 文件你每天计划做什么、完成了什么
git log实际动过哪些文件, 精确到天
git diff —stat哪个方向投入了多少改动,有数据为证

复盘真正该挖的地方

todo 是你”以为”自己做了什么,git 是你”真正”做了什么。两者之间的差距,恰恰是复盘最该深挖的地方。

而这一切 AI 自己去读就行,你一个字都不用喂。

这一部分到此结束

配置一次,之后再也不用管。从今天起,你的每一次记录都在被默默存证。


三、提示词:让复盘”只对你一个人成立”

通用 prompt 做出来的复盘,最大的毛病是:它对谁说的话都一样。

听起来都对,但全是”正确的废话”——因为它根本不认识你。

真正有用的复盘,一定建立在”理解这个人”之上。所以要把三类信息写进 prompt:

① 个人长期目标

给 AI 一条主轴,它才能判断:你这周做的事,到底在靠近目标,还是在原地打转。

示例:自由(金钱 / 时间 / 地点 / 关系)× 成长 × 个人 IP × 系统构建 × 可复利。

② 性格特征

按你的性格写 prompt,复盘才能戳中痛点。不知道怎么描述自己?用 MBTI 或长期稳定的行为习惯当锚点。

这样 AI 不再泛泛而谈,而是能精准指出:你真正卡在哪里。

③ 让 prompt 随时间生长

每次复盘结束,往 prompt 里追加一条:

本次新发现的模式:____

每月检查一次盲区清单:删掉已经真正改变的,加入新识别的。

活文档

到最后,你的 prompt 不再是一段固定文字,而是一份活文档——它记录的不只是你的目标,而是你这个人的演化。用得越久,越懂你。

让档案自动生长:update-growth.py

手动往档案里追加太容易忘,所以这一步交给脚本自动做:复盘生成时,AI 会在周文件末尾留一个 ---UPDATE--- 块(写本周的「模式」和「新增盲区」),脚本读它,把内容自动搬进成长档案——「模式日志」和「盲区清单」都最新在顶部。

它什么时候跑?

不用你手动跑。/周复盘 指令的最后一步(见下「四、收口」第 6 步)会自动调用它,复盘存完档案就更新了。

update-growth.py脚本(路径换成你自己的 vault):

#!/usr/bin/env python3
"""
从最新一份周复盘文件提取 ---UPDATE--- 块,追加到成长档案。
用法:python3 update-growth.py [可选:指定周文件路径]
"""
 
import re
import sys
from pathlib import Path
from datetime import date
 
VAULT = Path("/Users/jz/Library/Mobile Documents/iCloud~md~obsidian/Documents/all-in")
WEEKS_DIR = VAULT / "5.todo/weeks"
GROWTH_FILE = VAULT / "5.todo/prompt/周复盘prompt-成长.md"
 
PATTERN_HEADER = "## 模式日志"
BLIND_HEADER = "## 我的盲区清单"
 
 
def find_latest_week_file():
    files = sorted(f for f in WEEKS_DIR.glob("*.md") if f.name != "tools")
    if not files:
        sys.exit("错误:5.todo/weeks/ 中没有找到 .md 文件")
    return files[-1]
 
 
def extract_update_block(content):
    m = re.search(r"---UPDATE---\n(.*?)\n---END UPDATE---", content, re.DOTALL)
    if not m:
        return None
    data = {}
    for line in m.group(1).strip().splitlines():
        if ": " in line:
            key, val = line.split(": ", 1)
            data[key.strip()] = val.strip()
    return data
 
 
def insert_after_header(content, header, entry):
    """在指定 ## 标题行之后、下一个 ## 标题之前插入 entry。"""
    header_pos = content.find(f"\n{header}")
    if header_pos == -1:
        return content, False
    line_end = content.find("\n", header_pos + 1)
    if line_end == -1:
        return content + entry, True
    return content[: line_end + 1] + entry + content[line_end + 1 :], True
 
 
def main():
    if len(sys.argv) > 1:
        week_file = Path(sys.argv[1])
    else:
        week_file = find_latest_week_file()
 
    print(f"读取:{week_file.name}")
    content = week_file.read_text(encoding="utf-8")
 
    data = extract_update_block(content)
    if not data:
        print("未找到 ---UPDATE--- 块,跳过。确认复盘文件末尾有该块。")
        return
 
    week = data.get("周", "?")
    pattern = data.get("模式", "?")
    new_blind = data.get("盲区新增", "无")
 
    growth = GROWTH_FILE.read_text(encoding="utf-8")
 
    # 追加模式日志(最新在顶部)
    log_entry = f"\n### {week} ({date.today()})\n{pattern}\n"
    growth, ok = insert_after_header(growth, PATTERN_HEADER, log_entry)
    print(f"✓ 模式日志已追加:{week}" if ok else f"✗ 未找到 `{PATTERN_HEADER}` 节")
 
    # 追加新盲区(最新在顶部)
    if new_blind and new_blind != "无":
        blind_entry = f"\n- {new_blind}\n"
        growth, ok = insert_after_header(growth, BLIND_HEADER, blind_entry)
        print(f"✓ 盲区已新增:{new_blind}" if ok else f"✗ 未找到 `{BLIND_HEADER}` 节")
 
    GROWTH_FILE.write_text(growth, encoding="utf-8")
    print("✓ 成长档案已更新")
 
 
if __name__ == "__main__":
    main()

要点

脚本本身不”思考”——它只搬运 AI 在 ---UPDATE--- 块里写好的结论。所以判断写进档案的「模式/盲区」由 AI 在复盘时生成,脚本只负责落地,分工清晰、不会乱改你的档案。

进阶:承接上周复盘

还有一个容易被忽略、但很有用的设定——把每周复盘串联起来。做法是让 AI 在这周复盘时,先去读上周那份,并追问:

  • 上周点出的最重要的问题,是真的解决了,还是被你回避了?
  • 这周,有没有同样的问题又冒出来?

为什么这一步值钱

单看一周,你只能看到事件;连起来看十几周,AI 才能看到模式。而模式,才是复盘真正重要的东西。

提示词示例

这是我目前在用的提示词,抛砖引玉——改成适合你自己的效果会更好


四、收口:把这一切串成一个指令

前面铺垫的所有东西,现在收口成一条命令。根据你用的工具选择。

Claude 用户

在仓库的 .claude/commands/ 目录下创建 周复盘.md

读取以下路径 prompt 中的评估框架、输出结构和风格要求:
/Users/jz/Library/Mobile Documents/iCloud~md~obsidian/Documents/all-in/5.todo/prompt/周复盘prompt.md
 
执行上下文收集(按顺序):
 
**1. 确定本周起始日**
- 列出 `5.todo/weeks/` 下所有 .md 文件,取文件名排序最大的一个
- 读取该文件 frontmatter 中的 `date:` 字段作为起始日(含)
- 找不到则默认:今天往前 7 天
 
**2. 读取每日记录(主叙事来源)**
- 读取 `5.todo/date/` 中从起始日到今天的所有日记文件
- vault 根路径:`/Users/jz/Library/Mobile Documents/iCloud~md~obsidian/Documents/all-in`
 
**3. 获取 git 时间线**
git -C "/Users/jz/Library/Mobile Documents/iCloud~md~obsidian/Documents/all-in" \
  log --name-only --since=" [起始日期] " --format="%ad %s" --date=short
 
**4. 获取行为证据(按目录聚合)**
git -C "/Users/jz/Library/Mobile Documents/iCloud~md~obsidian/Documents/all-in" \
  diff --stat HEAD~30 HEAD -- .
 
**5. 生成并保存**
- 按 prompt 的框架生成完整周复盘
- 在文件末尾追加 ---UPDATE--- 块(格式见稳定框架末尾,供第 6 步脚本读取)
- 保存到:`5.todo/weeks/YYYY-WXX.md`(ISO 周数,如 2026-W21)
- frontmatter 中写入 `date: [起始日期]`
- 不要询问确认,直接执行并保存
 
**6. 更新成长档案**
- 复盘保存后,运行脚本把本次「模式 / 新增盲区」自动追加进成长档案:
- python3 "/Users/jz/Library/Mobile Documents/iCloud~md~obsidian/Documents/all-in/5.todo/weeks/tools/update-growth.py"

之后只要在 Claude 里输入:

/周复盘

它就会自动读 todo、跑 git、生成复盘、存进对应的周文件。全程一句话。

Codex 用户

在仓库根目录创建 AGENTS.md

# Vault Agent Instructions
 
## 周复盘
 
当消息中包含"周复盘"或"周总结"时:
 
1. 先读取 prompt 文件:`5.todo/prompt/周复盘prompt.md`,按其中的评估框架、输出结构和风格要求
2. 确定起始日:列出 `5.todo/weeks/` 下所有 .md,取文件名最大的一个,读其 frontmatter `date:` 字段;找不到则默认今天往前 7 天
3. 读取 `5.todo/date/` 中从起始日到今天的所有日记文件(主叙事来源)
4. 运行:`git log --name-only --since="[起始日期]" --format="%ad %s" --date=short`
5. 运行:`git diff --stat HEAD~30 HEAD -- .`
6. 按 prompt 生成复盘,在文件末尾追加 ---UPDATE--- 块,保存到 `5.todo/weeks/YYYY-WXX.md`,frontmatter 写入 `date: [起始日期]`
7. 运行 `python3 "/Users/jz/Library/Mobile Documents/iCloud~md~obsidian/Documents/all-in/5.todo/weeks/tools/update-growth.py"`,把本次「模式 / 盲区」追加进成长档案

之后只要消息里提到”周复盘”,它就自动跑完整套流程。


五、流程梳理

六、结尾:系统搭一次,复利很多年

Quote

系统只需要搭一次,复盘会自己每周运行

坚持复盘
你会拥有一份横跨十几周、甚至几年的行为轨迹。

到那时,AI 看到的,已经不只是“你做了什么”。
而是:

  • 你总会在哪一步停下
  • 你真正的精力高峰在什么时候
  • 什么事情会反复消耗你
  • 哪些行为,正在长期复利
  • 你口中的目标,和真实行为之间到底差了多远

慢慢地—— AI 会比你自己,更早发现你的模式。

其实很多人缺的不是努力。
而是一个能长期、客观观察自己的系统。