关掉终端前的五分钟:让每日笔记接住下一次编码
关掉终端前的五分钟:让每日笔记接住下一次编码
我最不想在早上做的事情,是重新调查昨晚的自己。编辑器还开着,分支名字也认识,但为什么修改这里、哪个测试已经失败、下一步准备验证什么,全都需要重新拼。每日笔记应该保存这些断点,而不是把提交记录改写成工作汇报。
下面使用 Bash、已有提交的 Git 仓库,以及通过 npm test 执行测试的项目。其他项目只需替换测试命令。所有命令都在同一个终端会话执行;笔记只留在本机,不修改团队共享的忽略规则。
第一步:在仓库里创建按日期命名的笔记
先回到仓库根目录,建立目录,再把它加入当前仓库的本地排除文件。使用 Git 返回的路径,避免假定 .git 一定是目录。
cd "$(git rev-parse --show-toplevel)"; mkdir -p .devlog; EXCLUDE="$(git rev-parse --git-path info/exclude)"; mkdir -p "$(dirname "$EXCLUDE")"; grep -qxF '/.devlog/' "$EXCLUDE" || printf '%s\n' '/.devlog/' >> "$EXCLUDE"
接着创建今天的文件。存在性检查很重要:晚上再次运行时,不能覆盖下午已经写下的判断。日期来自本机时区;跨过午夜继续工作时,重新执行这条命令即可。
NOTE=".devlog/$(date +%F).md"; if [ ! -f "$NOTE" ]; then printf '%s\n' "日期:$(date +%F)" '本次目标:' '已经确认:' '尚未确认:' '下一条命令:' > "$NOTE"; fi
第二步:保存分支、提交和工作区状态
记忆会把“已经修改”和“已经提交”混在一起,Git 不会。追加一个带时间的快照,记录当前分支、提交位置和文件状态。重复执行会保留多个时间点,而不是抹掉之前的证据。
{ printf '\n记录时间:%s\n' "$(date '+%F %T %z')"; git branch --show-current; git log -1 --oneline; git status --short; git diff HEAD --stat; } >> "$NOTE"
这里的差异统计覆盖相对当前提交的已跟踪修改,但不包含未跟踪文件内容;后者会出现在状态列表中。游离状态下分支名可能为空,提交位置仍然有用。不要顺手把完整差异塞进去:令牌、客户数据和临时配置都可能藏在其中。
第三步:把测试结果变成能核对的证据
“测试有问题”没有恢复价值。记录执行命令、退出码和末尾日志,才能区分断言失败、依赖缺失与环境错误。下面先完整保存输出,再展示日志,不通过管道猜测测试是否成功。
TEST_LOG="$(mktemp)"; if npm test > "$TEST_LOG" 2>&1; then TEST_EXIT=0; else TEST_EXIT=$?; fi; cat "$TEST_LOG"; { printf '\n测试命令:npm test\n退出码:%s\n日志末尾:\n' "$TEST_EXIT"; tail -n 40 "$TEST_LOG"; } >> "$NOTE"; rm -f "$TEST_LOG"
四十行只是控制笔记长度,不代表一定包含根因。关键错误如果出现在前面,就手动补上对应行。耗时很长的项目可以换成目标测试,但必须保留实际执行的完整命令,不能把局部通过写成全量通过。
第四步:写判断,并留下下一条命令
现在打开笔记,补充机器无法替你解释的部分。已确认写观察结果,尚未确认写假设,下一步只写一个可以执行的动作。不要写“继续排查”,而要写准备检查哪个文件、搜索哪个符号,以及什么结果会推翻当前判断。 — nano "$NOTE"
例如,先通过 git diff --name-only 找到变更文件,再决定缩小哪一组测试。不要照抄示例中的业务结论:笔记必须来自刚才的输出。遇到中断时,也写清楚哪些修改只是实验、哪些文件暂时不要提交。
第五步:让 AI 整理断点,而不是编造进度
我会把脱敏后的目标、状态摘要和错误片段交给编辑器里的助手,要求它只整理“事实、假设、下一步”,并明确标注缺失证据。可以分别用 Claude Sonnet 5.5 或 GPT-6.1 Sol 整理同一段材料,但最终记录仍由实际命令输出决定。
如果这些工具通过 Fluxo 调用,一个密钥和基础地址 https://api.fluxorelay.com 就能接入 Claude、GPT、Gemini、DeepSeek、Kimi、GLM、Qwen、Grok 等系列;Claude Code、Codex、Gemini CLI 和任意 OpenAI SDK 都能沿用。切换工具时,我保留同一份本地笔记,不依赖某个聊天窗口保存项目状态。
Fluxo 按实际令牌计费,包括缓存读取和写入,没有月费,所以我只发送必要片段,不把整个仓库当提示词。如果你也想沿用这套接入方式,可以创建一个 Fluxo 账号。给同事分享工作流时,也可以使用邀请机制;受邀用户付费后,邀请人会获得分成。需要帮助时,登录后在联系页面留言即可。
第六步:下次先读最近笔记,再检查现场
隔天不一定有今天的文件,所以按日期文件名寻找最近一份,而不是直接打开当天路径。先回到仓库根目录,再执行:
LATEST=''; for FILE in .devlog/????-??-??.md; do if [ -f "$FILE" ]; then LATEST="$FILE"; fi; done; if [ -n "$LATEST" ]; then cat "$LATEST"; else printf '%s\n' '尚无每日笔记。'; fi; git status --short
读完先比较现场有没有变化,再执行笔记里的下一条命令。不要自动运行笔记内容:旧命令可能依赖已经变化的分支或环境。好的每日笔记不是替你完成判断,而是让你打开终端后,立刻知道该验证什么。