简体中文 · English
你的 AI 工作日,一键复盘。 Debrief 把你本机的 AI 编程活动(Claude Code、Codex、Gemini CLI…)整理成一份每日工作日报——同时产出文字版和一个自包含的 HTML 页面(适合截图成图片),按项目分组,并自动脱敏。
示例为演示数据 · 真实运行会读取你本机的 Claude Code / Codex / Gemini / Git 等记录并自动脱敏
npm 包名是
debriefly,命令是debrief。
隐私优先: 只读取本机会话日志(
~/.claude、~/.codex、~/.gemini,以及按需开启的~/.hermes、~/.workbuddy、~/.openclaw)和git log。绝不向任何地方上传,绝不写到--out之外的位置,并在任何输出之前脱敏(API key、token、JWT、邮箱…)。零 npm 依赖。
你的 AI 工具其实已经记录了你一整天干了什么。Debrief 把这些散落的历史汇成一份干净的每日 standup / 工作日报——你推进了什么、改了哪些文件、提交了什么——并按项目分组。
你本来就在用 Claude Code / Codex / Gemini CLI / Hermes——那就让它来装 Debrief。把下面这段话发给你的 agent:
把 https://github.com/MasonSRE/debrief 克隆到 ~/debrief,然后运行
`node ~/debrief/bin/debrief.mjs --lang zh` 显示今天的工作日报。
如果我用的是 Claude Code,再把 ~/debrief/skill/ 复制到
~/.claude/skills/daily-work-log/,这样以后我直接说「整理今日工作」就行。
这就是全部安装步骤:仓库是一个零依赖的 Node 脚本,agent 克隆完直接就能跑——无需任何配置。(对 Claude Code,复制好 skill 后,以后用 /daily-work-log 或说「整理今日工作」即可触发。)
没有任何依赖需要装——它就是一个普通的 Node 脚本(Node >= 18)。克隆即用:
git clone https://github.com/MasonSRE/debrief && cd debrief
node bin/debrief.mjs可选的便捷方式(仅当你想要全局 debrief 命令或用 npx 时):
npm i -g debriefly # → 全局可用 `debrief`
npx debriefly # 不安装直接跑# 今天的日报,文字版 → stdout
debrief
# 中文,显式指定时区
debrief --lang zh --tz Asia/Shanghai
# 指定某一天
debrief --date 2026-06-22
# 把 文字 + HTML + JSON 写到一个文件夹
debrief --out ~/work-logs # → debrief-<日期>.{md,html,json}
# 只要 HTML(可管道/截图),或原始 JSON
debrief --html > today.html
debrief --json| 参数 | 含义 |
|---|---|
--date <YYYY-MM-DD> |
报告哪一天(默认:所选时区的今天) |
--tz <IANA> |
时区(默认 $WORKLOG_TZ 或系统时区) |
--lang <en|zh> |
报告语言(默认 $WORKLOG_LANG 或 en) |
--sources <list> |
默认 claude,codex,gemini,git;可选开启 hermes、workbuddy、openclaw |
--out, -o <dir> |
写出 .md + .html + .json |
--html / --json |
把对应格式打到 stdout |
- Claude Code(
~/.claude/projects):你的 prompt(任务)+ 编辑过的文件(Edit/Write/MultiEdit)。 - Codex(
~/.codex/sessions):你的 prompt。 - Gemini CLI(
~/.gemini/tmp/<proj>/chats):你的 prompt。项目路径从~/.gemini/projects.json解析;无法对应路径的会话回退为~gemini/<id>标签。 - Git:每个活跃项目仓库当天的提交。
- Hermes Agent(按需开启:
--sources …,hermes):来自~/.hermes/state.db与~/.hermes/profiles/*/state.db的 prompt。对话存在 SQLite 里,通过系统sqlite3CLI 只读读取(仍是零 npm 依赖;和git一样,没装sqlite3就跳过)。会话按cwd分组,回退标签~hermes/<profile>。 - WorkBuddy(按需开启:
--sources …,workbuddy):来自~/.workbuddy/workbuddy.db/~/.workbuddy-ai/workbuddy.db的会话自动标题(同样走sqlite3CLI)。WorkBuddy 把对话正文存在内存/云端,本地只有会话标题 +cwd——因此作为任务行呈现,按真实项目cwd分组,或回退到~workbuddy。 - OpenClaw(按需开启:
--sources …,openclaw):来自~/.openclaw/state/openclaw.sqlite的task_runs表(走sqlite3CLI)。task文本即 prompt;按agent_id分组为~openclaw/<agent>。
全部按项目分组,然后去重并压缩到意图:每条 prompt 收敛成它的首句,近似重复(反复追问、细微改动)按 trigram 相似度合并——这样再长的一天也读起来像一份干净的任务清单,而不是一份聊天记录。全程脱敏。输出还包含一份 JSON 模型,方便下游工具消费。
Cursor 的聊天也存在 SQLite
state.vscdb里,完全可以用和 Hermes 一样的sqlite3-CLI 方式接入——目前还没接,欢迎 PR。
HTML 页面是自包含的——用浏览器打开截图即可得到图片,或让 agent 渲染成 PNG。CLI 本身保持零依赖;投递(飞书 / Slack / 邮件)交给一个很薄的封装脚本或随附的 Claude skill。
把 skill/ 复制到 ~/.claude/skills/daily-work-log/,然后说「整理今日工作 / generate my daily work log」或运行 /daily-work-log。该 skill 会调用本 CLI,并可选地做总结、渲染 PNG、发到你的聊天工具。
src/redact.mjs 密钥/隐私脱敏(+ 计数报告)
src/text.mjs conciseIntent() 意图截断 + dedupePrompts() 模糊去重
src/sources.mjs 每个工具一个函数:collectClaude / Codex / Gemini / Hermes / Workbuddy / OpenClaw / Git
src/collect.mjs 合并各数据源 → 去重 → 报告模型
src/report.mjs renderText() / renderHtml()
bin/debrief.mjs CLI
新增一个工具(Aider、Continue…):在 sources.mjs 里写一个 collectX(ctx),返回 Map<项目路径, { prompts, files, sessions }>,然后在 collect.mjs 接入(默认 sources + 一个合并块),并在 report.mjs 给它配一个 badge/圆点颜色。欢迎 PR。
MIT
