个人工作小结(全天版)
把「AI 做了什么开发」翻面,提炼出**「你这个人」做了什么**——拆解需求、拍板决策、纠正 AI、把控节奏、实测把关——给领导看到人的贡献和工作逻辑。
核心原则(必须遵守)
- 只写人做的事,不写 AI 的开发细节。 主语是「人」,动词是 决策 / 否决 / 拍板 / 叫停 / 推动 / 实测 / 发现 / 指挥,不是 编写 / 实现 / 开发。
- 不许拔高、不许编。 每一条都要能在对话记录里找到出处。挑不出证据的点就不写。
- 具体优先。 「积极推进项目」这种空话没用;「否决了 X 建议、改成 Y」才可信。带上数字、原话、具体名词。
- 核心决策点优先,不设条数硬上限。 「这条拿掉工作逻辑链就断」就保留;可有可无的合并或砍掉。
- 每一次否决 / 纠正 AI 单独成一条,绝不合并。 这是「指挥 AI」最硬的证据。
- 产物是草稿。 收尾提醒用户:内容是 AI 起草的草稿,建议逐句改写成自己的话再正式提交。
工作流程(一条主线)
1. 扫今天所有 jsonl(双重过滤)
2. 自动聚类成 N 个大项目(路径关键词 + 共享专有名词)
3. ★ 归类预览 → 用户一句话确认 / 调整(唯一的确认环节)
4. per-window 并行提炼(subagent,按六维度抽取结构化要点)
5. 主 agent 合并:同大项目内合并去重;否决项不合并
6. 组装 docx 内容(结构见下文)
7. 写入飞书 wiki『每日个人总结』节点下的 `Worklog YYYY-MM-DD` 子 docx(已存在则覆盖)
8. 推送链接到「每日日报组」飞书群(与日报合并成一条发)
9. 输出文档链接 + 提醒「AI 草稿,请逐句改写」
步骤 1:扫今天所有 jsonl(双重过滤)
Claude Code 每个对话窗口都在 ~/.claude/projects/*/*.jsonl 存了完整记录。
双重过滤规则:
- 过滤 1(mtime):文件最后修改时间在本地今天 00:00 之后。
- 过滤 2(内容):文件至少含一条
timestamp在今天的type=="user"且isSidechain!=true的消息。
只取项目目录下一层的 .jsonl;忽略 <uuid>/ 子目录里的 subagent 记录。
每个 jsonl 当作一个窗口,提取:
cwd(判属于哪个项目)- 全部 user 真文本消息(
message.content里type=="text") - 时间戳范围
跳过纯 <command-...>、Caveat、<system-reminder>、<task-notification>、tool_result 项。
对于 Base directory for this skill: ... 这种 skill 加载提示,只保留末尾的 ARGUMENTS: 用户实际命令。
步骤 2:自动聚类成 N 个大项目
为每个窗口生成「指纹」:
- 路径关键词:
cwd最后两段(如Desktop/知识库) - 专有名词:前 5 条用户消息里出现的飞书 token、URL host、独有名词(项目名、人名、文档名等)
聚类规则(并查集):两个窗口满足任一条件即合并到同一大项目——
- 共享 ≥1 个专有名词(飞书 token、独有项目名等)
- 路径关键词完全相同 且 时间窗口接近(≤4 小时间隔)
注意:仅"路径相同"不足以聚到一起——同一目录下的两个不同子任务应拆分。
每个大项目起一个简短名称(≤10 字),从共享专有名词或共同主题里挑。
步骤 3:归类预览(★ 唯一的确认环节)
向用户展示:
检测到今天有 N 个窗口,自动归为 M 个大项目:
📦 大项目 A:<名称>(X 个窗口)
- <cwd 末段>(窗口标识 / 主要话题一句话)
- ...
📦 大项目 B:<名称>(Y 个窗口)
- ...
归类对吗?回复 ok 继续;或者告诉我怎么调整("把 X 挪到 A"、"A 和 B 合并"等)。
用户 ok / 用户调整后再次 ok → 进入步骤 4。
步骤 4:per-window 并行提炼(subagent)
对每个窗口并行启动一个 subagent(Agent 工具,subagent_type: general-purpose),单条消息内多次 tool use 并行发起。
每个 subagent 任务:
读
<jsonl 路径>,按以下六个维度提炼「人做了什么」的结构化要点,返回 JSON:{ "window_id": "<jsonl 文件 8 位前缀>", "time_range": "<HH:MM-HH:MM>", "points": [ {"dim": "需求定义|方案决策|节奏把控|实测把关|工具链升级|能力选型|任务指挥|历史资产复用", "text": "<一句话>", "evidence": "<用户原话片段 + 时间>"}, {"dim": "独立否决 AI 推荐", "text": "否决「...」,改为「...」,因为...", "evidence": "<原话 + 时间>"}, ... ] }要求:
- 只看
type=="user"且isSidechain!=true的消息。- 每一次否决 / 纠正 AI 单独成一条,不合并;标签固定为「独立否决 AI 推荐」。
- 其他维度可有可无,能写则写;写不出证据的不写。
- 不要堆报告腔,不要"我",客观陈述。
- 不要写 AI 干了什么;只写人的决策、否决、判断、推动、实测。
主 agent 收 N 份 JSON。
步骤 5:合并
按步骤 3 确认的聚类,把同一大项目的多个窗口的 points 合并:
- 同维度的可合并条目:同维度且语义相近的多条要点 → 合并成一条,证据并列。
- 否决项绝不合并:每条「独立否决 AI 推荐」原样保留,依次编号(一)、(二)、(三)……
- 核心决策点筛选:拿掉一条不影响工作逻辑链 → 砍;保留下来的必须是骨架性的决策/动作。
- 窗口痕迹不要带出来:合并后的产出里不出现 "窗口 A / B"、jsonl ID 等技术痕迹。
- 提取相关飞书文档链接:扫该大项目内所有窗口的 user 消息,用正则
https?://[^\s)]*feishu\.cn/(base|docx|wiki|sheets|file)/[A-Za-z0-9]+(\?[^\s)]*)?抓所有飞书云文档 URL;去重后按出现顺序保留前 5 条,组装到<h3>相关飞书文档</h3>节。对每个 URL,如果能从对话上下文推断出文档名/用途(如"书目录入 Base 表"),就作为<a>的链接文本;推断不出就用裸 URL。本文档自身的链接也要列出(标注"(本文档)")。
步骤 6:组装 docx 内容(DocxXML 格式)
完整文档结构(使用 HTML 风格标签:要点用 <ol><li> 有序列表体现先后逻辑、<b> 加粗维度标签;不要用 <bullet> / <text_run>):
<title>Worklog YYYY-MM-DD</title>
<p><i>一句导语:今天跨 N 个方向(项目列表),本人主导了 X 项决策拍板、Y 次否决 AI 建议、Z 项实测把关。</i></p>
<h2>一、大项目 A 名称</h2>
<ol>
<li><b>需求定义</b>:……</li>
<li><b>方案决策</b>:对 N 个问题逐一拍板——……</li>
<li><b>独立否决 AI 推荐(一)</b>:否决「……」,改为「……」,因为……</li>
<li><b>独立否决 AI 推荐(二)</b>:……</li>
<li><b>实测把关</b>:亲自……,发现……</li>
</ol>
<h3>相关飞书文档</h3>
<ul>
<li><a href="https://...">文档名(base / docx / wiki / sheets)</a></li>
</ul>
<h3>本项工作逻辑</h3>
<p>① 拿到任务(含糊指令 / 链接 / 截图)</p>
<p>↓</p>
<p>② 读懂并定义成明确目标</p>
<p>↓</p>
<p>③ 逐项决策、选型、拍板(其中否决 / 修正 AI 建议)</p>
<p>↓</p>
<p>④ 亲自实测把关(发现并上报问题)</p>
<p>↓</p>
<p>⑤ 交付落地</p>
<h2>二、大项目 B 名称</h2>
<ol>
<li>……</li>
</ol>
<h3>本项工作逻辑</h3>
<p>① ……</p>
<p>↓</p>
<p>② ……</p>
<h2>原话证据</h2>
<ul>
<li>「……」——大项目 A,HH:MM</li>
<li>「……」——大项目 B,HH:MM</li>
</ul>
关键约束:
- 大项目标题用 中文序号前缀(一、二、三……),便于飞书目录侧栏一眼看到顺序
- 每个大项目必须含
<h3>相关飞书文档</h3>小节,列出该项工作触及的飞书 base / docx / wiki / sheets 链接(提取方法见步骤 5 末尾) - 要点必须用
<ol><li>(有序列表),不要<ul>—— 编号体现先后逻辑 - 每个大项目独立的
<h3>本项工作逻辑</h3>流程图,不要全文档共用一个 - 原话证据保持
<ul><li>(无序),仅作为可追溯附录 - 流程图保持竖排文字+
↓箭头格式;如果未来要框线图,走lark-whiteboardskill 嵌入画板(当前不做)
参考既有日报模板 daily-report/references/template-example.md 的 DocxXML 写法。
流程图规则:竖排带序号的箭头流,每步独立 <p>;禁止 ASCII 框线方块图(飞书等非等宽字体会错位)。
导语规则:一句话,提到今天跨几个方向 + 关键数字(决策数、否决次数、实测次数)。
步骤 7:写入飞书
硬编码 wiki 根节点:
URL: https://t2rvx54o5x.feishu.cn/wiki/XAMewJpVniOSXSkEKaGcASM4nkg
title: 每日个人总结
node_token: XAMewJpVniOSXSkEKaGcASM4nkg
space_id: 7631109155675196628
7.1 检查今天的 docx 是否已存在
lark-cli wiki +node-list --as user \
--space-id 7631109155675196628 \
--parent-node-token XAMewJpVniOSXSkEKaGcASM4nkg
在返回的 nodes 里找 title == "Worklog YYYY-MM-DD"。
7.2a 不存在 → 创建
lark-cli wiki +node-create --as user \
--space-id 7631109155675196628 \
--parent-node-token XAMewJpVniOSXSkEKaGcASM4nkg \
--obj-type docx \
--title "Worklog YYYY-MM-DD"
返回里取 data.obj_token 备用。
7.2b 已存在 → 覆盖
终端打印 ⚠️ 覆盖已有 Worklog YYYY-MM-DD(旧版可从飞书版本历史找回),取已有节点的 obj_token。
7.3 写入正文(覆盖模式)
把步骤 6 组装的 DocxXML 写到临时文件 worklog_<date>.xml,然后:
lark-cli docs +update --api-version v2 \
--doc <obj_token> \
--command overwrite \
--content @./worklog_<date>.xml \
--as user
7.4 推送到「每日日报组」飞书群(固定,每次写完后必做)
写入成功后,自动把 Worklog 链接发到飞书群「每日日报组」(不需要再问用户)。
群名:每日日报组
chat_id:oc_03cc17c6ca043704f9fc252e6fe86623
合并发送规则(重要):如果本次会话也跑了 daily-report(日报),就把日报 + Worklog 两条链接合并成一条消息发,别发两条刷屏;用同一 --idempotency-key "report-<date>"。只跑了 Worklog 时只发 Worklog 一条。
# 情况 A:日报 + Worklog 一起发(合并一条)
$md = @'
📋 **日报 · <date>**
[日报 · <date>](<日报url>)
📝 **Worklog <date>**
[Worklog <date>](<worklog url>)
'@
lark-cli im +messages-send --as user `
--chat-id oc_03cc17c6ca043704f9fc252e6fe86623 `
--markdown $md --idempotency-key "report-<date>"
# 情况 B:只发 Worklog
$md = @'
📝 **Worklog <date>**
[Worklog <date>](<worklog url>)
'@
lark-cli im +messages-send --as user `
--chat-id oc_03cc17c6ca043704f9fc252e6fe86623 `
--markdown $md --idempotency-key "worklog-<date>"
--idempotency-key防止重跑当天重复刷屏。- chat_id 失效 / 群改名时,用
lark-cli im +chat-search --query "每日日报" --as user重新查回。
7.5 输出
打印文档链接(https://<host>/wiki/<node_token> 或 https://<host>/docx/<obj_token>),加上小结:
✅ 已写入:<URL>
- 大项目数:M
- 总要点:N 条(其中独立否决 AI:K 次)
- 工作逻辑:6 步
⚠️ 内容是 AI 起草草稿,建议在飞书里逐句改写成你自己的话。
边界情况
- 今天 0 个 user 消息:报告"今天还没有实质用户输入,无须 worklog",不写文档。
- 所有窗口加起来 0 条核心决策:报告"今天对话以单向问答为主,未捕获到决策/否决/实测",不写文档。
- lark-cli 未登录 / scope 不足:按
lark-sharedskill 提示用户走auth login流程。 - 跨天边界:以本地日期判定"今天"——
Worklog 2026-05-26严格对应本地 2026-05-26 00:00 起的对话。
附:纯 prompt 版本(不想用 skill 时)
复制下面这段进对话即可:
扫描
~/.claude/projects/*/*.jsonl中今天修改的文件(双重过滤:mtime + 内容含今日 user 消息),按大项目自动聚类(路径关键词 + 共享专有名词),提炼出「我这个人」做了什么,写一份个人工作小结草稿。要求:
- 按大项目分组,每个项目一个小标题 + 一组要点;不设条数硬上限,但只写核心决策点。
- 每条以加粗维度标签开头:需求定义 / 方案决策 / 节奏把控 / 实测把关 / 工具链升级 / 能力选型 / 任务指挥 / 历史资产复用。
- 我每一次否决或纠正 AI 的建议都单独成一条,标签写「独立否决 AI 推荐(一)(二)…」,写明否决了什么、改成什么、为什么。
- 只写我做的事(决策、否决、拍板、叫停、推动、实测、发现),不写 AI 的开发实现细节;无人称、不出现「我」。
- 不许拔高、不许编,每条都要在对话里有出处;挑不出证据的不写。
- 末尾配一个竖排带序号的箭头流程图(不要 ASCII 框线方块)。
- 收尾附一段原话证据(带大项目 / 时间)。
- 这是给我手写定稿用的草稿。