同时开着 Claude Code、桌面里的其他代理,还有几个后台任务时,最烦人的往往不是「会不会写代码」,而是上次为什么这么改,记录散落在三四个地方。Claude Code 有自己的会话历史,别的工具又各存一份;隔了一晚再回来,你只记得「好像讨论过某个方案」,却找不到当时的结论。
这篇给一套在新加坡常开 Mac mini 上能落地的做法:给每台机器定一个统一的会话归档目录、用约定文件名把「决策」和「闲聊」拆开、用脚本把当天的会话摘要收成一份可读日志,再用一个干净的 Claude Code 会话做「只读回顾」。账号由你自己开通和登录,本文只讨论稳定合规的使用环境和机器侧习惯。
为什么会散
多代理并行时,每条工具链默认只对自己负责:
- Claude Code 的会话在它自己的本地存储里,按项目或会话 ID 分开。
- 桌面或其他 CLI 代理可能把日志写到
~/Library、项目.logs/,或干脆不落盘。 - 你在 SSH 与 UU 远程连接之间切换时,终端滚动缓冲也不是可靠存档。
结果是:真正能指导后续工作的「决定」——选了哪个库、否决了哪条方案、留下了什么待办——没有一个统一入口。机器一重启或换了一个客户端窗口,你就得靠记忆拼。
准备清单
- 一台常开的 Mac mini,已装 Claude Code CLI、Git、
jq(可选)。 - 约定一个只给「人读归档」用的目录,例如
~/agent-journal(不要和仓库源码混在一起)。 - 长任务放在 tmux 里,远程断开不影响会话。
mkdir -p ~/agent-journal/{decisions,raw,daily}
tmux new -s work || tmux attach -t work
claude --version
步骤一:定一条「写进 journal 才算决定」的规则
在常用仓库的 CLAUDE.md 里加一段,让 Claude Code 把可复用的结论写成文件,而不是只留在聊天里:
## 会话归档
- 凡是会影响后续实现的决定(选型、接口约定、否决项、验收标准),写到 ~/agent-journal/decisions/YYYY-MM-DD-<短标题>.md。
- 文件开头用三行:日期、相关仓库路径、一句话结论。
- 原始对话细节不必全文粘贴;需要时只引用关键文件路径或 commit。
- 同一件事纠正两次仍错时,先 /clear 再开新会话,并在决定文件里注明「旧会话上下文已弃用」。
这是软约束:代理多数时候会遵守。真正让它变成习惯的,是下面「固定路径 + 日终汇总」。
步骤二:统一文件名,避免各工具各写各的
不管今天主要用 Claude Code 还是别的代理,人读结论只进 decisions/,原始导出进 raw/:
~/agent-journal/
decisions/2026-10-31-auth-cookie-scope.md
raw/2026-10-31-claude-code-session-ab12.txt
daily/2026-10-31.md
raw/ 可以放各工具自己的导出(若工具支持「导出会话」或你手动复制关键段落)。不要指望每个工具格式一致;日终脚本只负责把 decisions/ 合成一份 daily/,raw/ 仅作备份。
示例决定文件:
# 2026-10-31 auth cookie 作用域
- 仓库: ~/work/your-repo
- 结论: 会话 cookie 仅限父域,不写入子路径特例
## 背景
需要区分「登录态」与「一次性动作令牌」。
## 否决
不在前端用 localStorage 存长期令牌。
## 待办
- [ ] 补集成测试覆盖登出后旧 cookie 失效
步骤三:给 Claude Code 一个「收尾检查清单」
在 .claude/settings.json 或项目习惯里,要求任务结束前跑一段固定提示(也可写成 slash 命令备忘):
收尾前请确认:
1. 若本轮有架构/接口/验收相关决定,已写入 ~/agent-journal/decisions/ 下的新文件;
2. 文件名含今天日期与短标题;
3. 用三句话总结「做了什么 / 没做什么 / 下一步」,追加到 ~/agent-journal/daily/YYYY-MM-DD.md;
4. 不要把密钥、cookie 原文、完整账号写进 journal。
你可以在 tmux 里固定一个窗格专门做收尾,避免主会话一忙就忘了写。
步骤四:日终用脚本合成「今天发生了什么」
新建 ~/agent-journal/bin/daily-rollup.sh:
#!/bin/bash
set -euo pipefail
DAY="${1:-$(date +%F)}"
ROOT="$HOME/agent-journal"
OUT="$ROOT/daily/$DAY.md"
mkdir -p "$ROOT/daily"
{
echo "# $DAY 代理工作摘要"
echo
echo "## 决定"
shopt -s nullglob
files=("$ROOT/decisions/$DAY"-*.md)
if ((${#files[@]})); then
for f in "${files[@]}"; do
echo
echo "### $(basename "$f" .md)"
# 只取结论行,避免把全文再贴一遍
grep -E '^- 结论:|^# ' "$f" | head -5
done
else
echo "(今日无 decisions 文件)"
fi
echo
echo "## raw 备份"
ls -1 "$ROOT/raw/$DAY"* 2>/dev/null || echo "(无)"
} > "$OUT"
echo "wrote $OUT"
chmod +x ~/agent-journal/bin/daily-rollup.sh
# 每天收工或 crontab 里跑一次
~/agent-journal/bin/daily-rollup.sh
这样你打开一个文件就能回答「今天定了什么」,而不必翻多个客户端的历史列表。
步骤五:用干净会话做只读回顾
隔天开工时,先开一个不带旧上下文的 Claude Code 会话,只让它读 journal,不让它改业务代码:
tmux new-window -n journal-review
claude -p "只读:阅读 ~/agent-journal/daily/$(date +%F).md 与昨天的 daily 文件,列出未完成待办与互相冲突的决定;不要修改任何仓库文件。"
若你发现同一话题在旧会话里已被纠正两次仍错,按社区里常见做法:对该话题 /clear 后开新会话,并在对应 decisions/ 文件注明旧上下文弃用——避免失败尝试继续污染提示。
建议验收清单
- 故意完成一个带「选型」的小任务,确认
decisions/下出现带日期的新文件。 - 跑
daily-rollup.sh,daily/里能看到结论行,且没有密钥原文。 - 换一个干净会话只读回顾,能复述待办,且未改动仓库。
- SSH 断开再连回 tmux,journal 目录与脚本路径不变。
为什么放在新加坡常开的 Mac mini 上
分散的根因是「会话跟着客户端走」。固定到一台常开整机之后:
- 同一现场:Claude Code、其他代理、tmux、journal 目录都在一台机器上,路径约定不会因换电脑而漂移。
- 夜间不断档:长任务与日终汇总可以在无人值守时跑完,第二天早上看
daily/即可。 - 稳定合规的使用环境:账号仍由你本人登录;机器侧提供稳定网络与常开算力,方便 SSH 或 UU 远程连接后继续。
- 真 macOS 工具链:iOS / macOS 相关代理与构建也在同一台机器,决定文件可以写清「在哪条命令、哪个 scheme 上验收」。
Zumac.Ai 提供位于新加坡的实体 Mac mini M6,整机独享,支持 SSH 与 UU 远程连接,FileVault 全盘加密,退租时抹机重装。新客户整机租用 ¥999/月起,季付 ¥2,697.30,半年付 6 送 1 为 ¥5,994,年付 12 送 2 为 ¥11,988;已购买客户续费保持原价。新客户首单自审核开通当天起租,续费及老客户新订单自付款当天起租。实际延迟取决于你本地的网络线路,建议先租一个月,把 journal 目录和日终脚本在真实项目上跑通。
小结
- 多代理并行时,会话历史默认分散;要把「决定」从聊天里抽到统一目录。
decisions/只收人读结论,raw/放导出备份,daily/用脚本合成摘要。- CLAUDE.md 写清收尾义务;密钥不要进 journal。
- 隔天用干净会话只读回顾;同一话题纠正两次仍错就 /clear 并标注弃用。
- 固定在一台新加坡常开整机上,路径与习惯才撑得住长期使用。
