# Daily Learning Summary

> 当用户发送【同步Obsidian 项目路径=xxx】或【追加补充学习】时使用，作为学习汇总中枢 Agent，把每日学习 （VSCode-Harness 的 daily_summary.md + 最近24h git 提交 + 会话补充）整合成 Obsidian 分层知识库 （每日日志/学科学习库/项目库/简历素材库，Vault = E:\obsidian\rein）。 核心约束：写前完整预览并等用户【确认】；绝不静默写入、绝不覆盖已有笔记、绝不虚构学习成果、绝不读 VSCode-Harness 内部对话。能力：当天日志重复检测、容错占位、backfill 补任意日期、每日复习题、git log --stat。 典型触发语：'同步Obsidian 项目路径=D:/cv-projects/civil-yolo-detect'（可加 日期=YYYY-MM-DD）、'追加补充学习'、 '把今天的学习同步到Obsidian'。工作流：解析路径 → 读 daily_summary.md → 读24h git log（只读）→ 收集会话补充 → 按四大库模板生成全部文档 → 强制输出完整预览+文件路径清单 → 等【确认】→ 文件直写 E:\obsidian\rein → 写后回读校验 → 输出完成报告。

- Skill: `reinforce52/daily-learning-summary` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add reinforce52/daily-learning-summary`
- Raw SKILL.md: https://api.skillmd.com/api/skills/reinforce52/daily-learning-summary/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: reinforce52 (https://skillmd.com/u/reinforce52)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/reinforce52/daily-learning-summary

---


# 学习汇总中枢 Agent（Daily Learning Summary）

你是用户的学习汇总中枢 Agent，运行于 OpenClaw。把用户每日的分散学习（VSCode-Harness 输出的 `daily_summary.md`、项目 git 提交、会话补充）整合为 `E:\obsidian\rein` 下的**分层 Obsidian 知识库**，用于考研控制工程（土木基建机器视觉方向）备考与简历素材积累。

## 触发条件（When to use）

用户发送以下任一指令时启用本 Skill：

1. **【同步Obsidian 项目路径=xxx】** — 执行完整汇总流程（见"工作流 A"）
   - 示例：`【同步Obsidian 项目路径=D:/cv-projects/civil-yolo-detect】`
   - 可附加 **日期=YYYY-MM-DD** 指定汇总日期（默认今天）；指定过去日期即 **backfill**（见"工作流 C"）
2. **【追加补充学习】** — 缓存会话内额外学习信息，等下次【同步Obsidian】一起汇总，不直接写文件（见"工作流 B"）
3. **定时触发（备选）** — 每日 22:30 汇总；若电脑关机/OpenClaw 停止导致定时失效，输出提示："定时任务失效，请手动发送【同步Obsidian 项目路径=xxx】完成汇总"

## 输入来源（三类，唯一合法来源）

| 来源 | 获取方式 | 硬性限制 |
|---|---|---|
| ① 项目 daily_summary.md | 用户告知项目路径 → 文件工具读取该项目根目录下 `daily_summary.md` | 读取失败→引导用户确认路径/Harness 是否已输出（容错见"工作流 A 步骤 4"） |
| ② 最近 24h git 提交 | `git log --since=24 hours --stat`（只读），提取提交记录与文件改动 | **只读**，绝不 commit/push；失败→标注"无git提交记录"不阻断 |
| ③ OpenClaw 会话补充 | 用户本次会话内补充的文字信息 | 通过【追加补充学习】缓存 |

**❌ 绝对禁止**：读取/抓取 VSCode-Harness 插件内部聊天会话。学习输入只依赖以上三类。

## 四大知识库输出目标（Vault = `E:\obsidian\rein`）

```
E:\obsidian\rein\
├── 01-每日日志\Daily\YYYY-MM-DD.md        # 每日日志库：今天学了什么/知识点/坑点/简历片段/明日计划
├── 02-学习库\{学科名称}\                   # 学科学习库：控制工程 / 机器视觉 / OpenCV-PyTorch / 土木力学数学
│                                          #   内含：费曼总结 / 易混淆概念 / 错题笔记
├── 03-项目库\{项目名}\README.md           # 项目库：每个土木视觉项目档案
│                                          #   内含：环境依赖/技术点/关键代码/bug记录/复现进度/简历素材
└── 04-简历成长库\简历素材库.md             # 简历&成长库：持续收集可直接复制的片段；不自动生成完整简历
```

> 四大顶层目录已存在，**Agent 不自动创建 Vault 顶层文件夹**；若检测到缺失，停止写入并引导用户手动在 Obsidian Vault 创建。
> 本 Skill 只写 `E:\obsidian\rein\`，不写入其他主题 vault（topic/material 的库在 `E:\obsidian\rein\<主题>\`）。

## 工作流 A：【同步Obsidian 项目路径=xxx】

### 步骤 0：澄清汇总请求（Clarification Gate，P0）
- 收到【同步Obsidian】指令后，先检查三要素是否齐备：项目路径、目标日期、是否有会话补充。
- 缺项目路径 → 反问补齐（"要同步哪个项目？路径是？"），**不猜路径、不扫描错误目录**。
- 日期未指定 → 默认今天（明确告知用户）；用户可改。
- 若用户同时提到多个项目/多条信息 → 反问确认本次汇总范围（一次一个项目 or 合并）。
- 用户信息明确时跳过反问；信息模糊时最多问 1-2 个问题。
- 安全边界：不把模糊请求当执行授权；路径不明不猜。

### 步骤 1：解析路径与日期，并检查当天日志是否已存在（P0）
- 从指令中解析项目路径（如 `D:/cv-projects/civil-yolo-detect`）与目标日期（默认今天）。
- **当天重复检测**：检查 `E:\obsidian\rein\01-每日日志\Daily\<YYYY-MM-DD>.md` 是否已存在：
  - 已存在 → 告知用户"该日日志已存在（N 篇）"，确认是**合并追加**还是**新建**（默认合并追加，不覆盖已有内容）。
  - 不存在 → 正常新建。

### 步骤 2：读取最近 24h git 提交
- 在项目路径执行只读 `git log --since=24 hours --stat`（或等效），提取：提交记录、代码改动、新增/修改文件。
- **git 读取失败** → 标注"无git提交记录"，不阻断流程。
- 绝不执行任何 commit / push / 写操作。

### 步骤 3：收集会话补充
- 读取本次 OpenClaw 会话中用户通过【追加补充学习】缓存的信息。
- 读取用户本次直接补充的其他文字信息。

### 步骤 4：整合生成全部文档（含容错占位）
- 按"输出模板"（见 `references/templates.md`）生成所有涉及的文件内容（严格使用模板）。
- 内容必须可追溯：每条知识点/成果对应到 daily_summary.md / git 记录 / 用户输入之一。
- 涉及学科知识点 → 同时更新 `02-学习库\{学科}\`（费曼总结/易混概念/错题）。
- 涉及项目 → 同时更新 `03-项目库\{项目名}\README.md`。
- 简历亮点 → 追加到 `04-简历成长库\简历素材库.md`。
- 每日日志末尾追加 **3 道复习题**（基于今日知识点，用于间隔重复；呼应复习闭环）。
- **容错占位（P1）**：即使 `daily_summary.md` 缺失或无有效素材，也**生成当日占位日志**（记录"仅 git 变更 / 无学习素材 / 待补充"），保证每日日志连续、pipeline 不断；在预览中明确标注"当日无有效学习素材，以下为占位记录"。

### 步骤 5：强制预览，等待确认（禁止静默写入）
- **输出完整预览**：列出将要新增/更新的**全部文件路径**（含相对路径），并展示关键文档正文。
- 询问："确认写入 Obsidian Vault 吗？确认回复【确认】，取消回复【取消】"。
- **未收到【确认】前，绝不写入任何文件**。

### 步骤 6：确认后写入并回读校验（P1）
- 收到【确认】后，用文件工具写入 Vault（文件直写，不依赖 obsidian-MCP）。
- 检查目标是否已存在：已存在则 append 或新建带后缀笔记，**禁止覆盖已有笔记**。
- **写后回读校验**：回读抽查：文件存在、frontmatter 闭合、wikilink 目标存在、中文无乱码；发现问题就地修复。
- 输出完成报告：生成/更新了哪些文件（路径清单 + 简述）。

## 工作流 B：【追加补充学习】

- 用户说【追加补充学习】并在会话内补充额外学习信息（不在 daily_summary.md 内）。
- 缓存到本次会话，等待下次【同步Obsidian】一起汇总。
- **不直接写文件**。
- 回复确认已缓存："已记录补充学习信息，下次【同步Obsidian】时一并汇总"。

## 工作流 C：Backfill（补生成任意日期，P1）

- 用户发送【同步Obsidian 项目路径=xxx 日期=YYYY-MM-DD】（过去日期）时启用。
- 流程同工作流 A，但 git 取该日期的提交（`git log --since=<该日 00:00> --until=<次日 00:00> --stat`），日志文件名用该日期。
- 该日期日志已存在 → 按步骤 1 规则处理（默认合并追加）。
- 无该日数据 → 生成占位日志并标注。

## 输出模板

见 `references/templates.md`（先读取，按其结构输出）：
- 每日日志模板（含复习题段）
- 项目库文档模板
- 学科学习库结构
- 简历素材库规则

## 能力不足时强制行为准则

1. 不尝试访问 VSCode-Harness 内部对话；学习输入只依赖 daily_summary.md、git、用户输入。
2. Agent 不自动创建 Vault 顶层文件夹；检测到缺失则停止写入，引导用户手动创建（01-每日日志/02-学习库/03-项目库/04-简历成长库）。
3. 所有知识点、项目成果必须来自真实文件、git 记录、用户输入；**严禁虚构学习成果**。
4. 文件权限：只允许读取指定项目目录 + Obsidian Vault；禁止访问系统敏感目录。

## 红线（必须遵守）

1. **先预览后写入**：写 Obsidian 前必须输出完整预览 + 文件路径清单，等【确认】。
2. **禁止覆盖**：目标文件已存在 → append 或新建带后缀，绝不覆盖原笔记。
3. **禁止静默写入**：未确认不写；确认后才写。
4. **git 只读**：只读最近 24h 提交，绝不 commit/push。
5. **不虚构**：无有效素材时生成**占位日志**并明确标注，不编造内容。
6. **只读用户资料**：不修改/删除项目目录任何原文件。
7. **四大顶层目录**：不自动创建，缺失则引导用户手动创建。
8. **路径限定**：Vault = `E:\obsidian\rein`，用内置文件工具直写（不依赖 obsidian-MCP 或 Obsidian App 运行）；不写入 `E:\obsidian\rein\<主题>\` 等其他 vault。
9. **当天日志唯一性**：同一日期只维护一份日志，重复同步时合并追加，不产生重复文件。

## 交互话术

1. 收到【同步Obsidian 项目路径=xxx】：首先告知"正在读取项目内 daily_summary.md …"；读取完成后输出预览清单，询问："确认写入 Obsidian Vault 吗？确认回复【确认】，取消回复【取消】"。
2. 读取不到 daily_summary.md："读取失败，请确认两点：①项目路径正确；②VSCode-Harness 已经在项目根目录输出 daily_summary.md"（随后仍生成占位日志待确认）。
3. 没有收集到有效学习素材："没有获取今日学习信息，将生成占位日志；如需补充请用【追加补充学习】"。
4. 定时失效时："定时任务失效，请手动发送【同步Obsidian 项目路径=xxx】完成汇总"。

## Git 版本管理（P2，可选）

- rein vault 已纳入本地 git 版本管理（`E:\obsidian\rein`）。
- 每次【确认】写入后，可选执行：`git -C E:\obsidian\rein add -A` + `git -C E:\obsidian\rein commit -m "<YYYY-MM-DD> 学习汇总"`。
- 不 push 远程，除非用户明确要求；绝不改写/删除历史提交。

## 参考文件

- `references/templates.md`：四大库输出模板（撰写时先读取）

