name: session-log
description: Write session work logs to memory/YYYY-MM-DD.md. Use at the end of every session to record completed work, learnings, and outputs. Automatically appends to existing daily log or creates new file. Follows the session log format: ### [HH:MM] agent:name - topic.
Session Log Skill
在 session 结束时自动记录工作内容到 memory/YYYY-MM-DD.md。
触发条件
自动触发:
- Session 即将结束时(用户说"结束 session"、"今天先到这"等)
- 完成一个重要任务后
手动触发:
- "记录一下今天的工作"
- "写入 session 日志"
- "保存这个 session 的内容"
工作流程
1. 获取当前日期 → YYYY-MM-DD
2. 获取当前时间 → HH:MM
3. 获取 agent 名称 → agent:main / agent:nico 等
4. 检查文件是否存在 → memory/YYYY-MM-DD.md
5. 不存在 → 创建新文件(使用模板)
6. 存在 → 读取文件,追加新 session(在 *最后更新:* 之前)
7. Git 提交变更
输出格式
### [HH:MM] agent:名称 - 工作主题
**完成事项:**
- 事项 1
- 事项 2
**学到东西:**
- 知识点 1
**踩坑记录:**
| 问题 | 原因 | 解决方案 |
|------|------|---------|
| xxx | xxx | xxx |
**产出物:**
- 文件/技能路径
**待办同步:**
- [ ] 需要同步给其他 agent 的事项
使用方法
方式 1:自然语言调用
用户说:
记录一下今天的工作
AI 回复:
好的,让我记录这个 session 的工作内容...
[调用 session_log 工具]
✅ Session 日志已写入 memory/2026-03-01.md
方式 2:命令行调用
python scripts/session_log.py "agent:main" "工作主题" "工作内容(Markdown)"
方式 3:Python API
from scripts.session_log import append_session_log
append_session_log(
agent_name="agent:main",
topic="YouTube 学习技能",
content="创建了 youtube-learning 技能包..."
)
标准模板
新建文件模板
# 📅 YYYY-MM-DD - 每日 Session 日志
> **说明:** 本文件记录当天所有 session 的工作内容。每个 session 以 `---` 分隔。
---
## 📝 Session 日志
### [HH:MM] agent:名称 - 工作主题
**完成事项:**
- 事项 1
**产出物:**
- 文件路径
---
## 📊 今日统计
- **Session 数量:** 1
- **Git 提交:** 1
---
*最后更新:YYYY-MM-DD HH:MM GMT+8*
关键规则
追加模式 - ❌ 禁止覆写!✅ 在文件末尾追加
- ⚠️ 多 Agent 协作必读: 写入前必须先
read检查文件是否已有其他 agent 的内容 - 正确做法:
read→edit(追加)或write(仅当文件不存在) - 错误案例:agent:main 直接
write覆盖了 agent:neon 的内容
- ⚠️ 多 Agent 协作必读: 写入前必须先
时间戳 - 使用 24 小时制
HH:MM(GMT+8)Agent 标识 - 必须写
agent:名称分隔符 - 每个 session 用
---分隔Git 提交 - 写完立即 commit
Memory Boundary Contract - 📋 必须遵守的写入边界
- 启动时必读:
MEMORY_BOUNDARY.md(workspace 根目录) - 写入位置矩阵:
文件 用途 示例 memory/YYYY-MM-DD.mdsession facts, progress notes, blockers 今天的工作日志 MEMORY.mddurable preferences/decisions 仅 main session 写长期记忆 .memory/.topics/*.mddistilled cross-day knowledge 归档后的主题知识 TOOLS.mdenvironment/runtime parameters 端口、路径、命令别名 .projects/<id>/*project state, execution logs 项目状态和归档 - 禁止模式:
- ❌ 禁止把项目复盘写入
TOOLS.md - ❌ 禁止在 group/shared context 写 private long-term memory
- ❌ 禁止在多个层级重复写入相同完整内容
- ❌ 禁止把项目复盘写入
- Session 结束最低要求:
- 更新
memory/YYYY-MM-DD.md或.projects/<id>/logs/YYYY-MM-DD.md - 确保 active projects 有
nextAction - 如果 durable preference/decision 变更,更新
MEMORY.md(仅 main session)
- 更新
- 启动时必读:
DashScope Provider 认证 - ⚠️ 常见踩坑点
- 问题: Turix / 其他技能中 DashScope provider 认证失败
- 原因: endpoint 配置错误(国内 key 用国际 endpoint,或反之)
- 解决方案: 根据 API Key 来源选择 endpoint
- 国内 Key →
https://dashscope.aliyuncs.com - 国际 Key →
https://dashscope-intl.aliyuncs.com
- 国内 Key →
- 验证方法: 先用
dashscopeCLI 测试 key 是否有效 - 配置示例:
# 国内 Key provider: dashscope endpoint: https://dashscope.aliyuncs.com apiKey: sk-xxxxx(国内申请) # 国际 Key provider: dashscope endpoint: https://dashscope-intl.aliyuncs.com apiKey: sk-xxxxx(国际申请)
多 Agent 文件写入协议 - 📝 协作文档必读
- 写入
memory/YYYY-MM-DD.md前必须:read检查文件是否存在- 如果文件不存在(报错 ENOENT 或 404)→ 用
write创建新文件(带模板头) - 如果文件存在 → 用
edit追加(在文件末尾*最后更新:*之前) - ❌ 禁止直接
write覆盖(会丢失其他 agent 的内容)
- 适用文件:
memory/*.md、.memory/*.md等共享日志
- 写入
判断流程图
开始
↓
read memory/YYYY-MM-DD.md
↓
文件存在?
├─ 是 → read 内容 → edit 追加 → git commit
└─ 否 → write 创建(带模板)→ git commit
代码示例(Python)
from scripts.session_log import append_session_log
# 自动处理:文件不存在则创建,存在则追加
append_session_log(
agent_name="agent:main",
topic="Discord 客户端更新问题",
content="..."
)
代码示例(PowerShell)
$filePath = "memory/$(Get-Date -Format 'yyyy-MM-dd').md"
if (Test-Path $filePath) {
# 文件存在 → 追加
$content = Get-Content $filePath -Raw
$content += "`n### [HH:MM] agent:name - topic`n..."
Set-Content $filePath $content -Encoding UTF8
} else {
# 文件不存在 → 创建(带模板)
$template = "# 📅 $(Get-Date -Format 'yyyy-MM-dd') - 每日 Session 日志`n..."
Set-Content $filePath $template -Encoding UTF8
}
示例
示例 1:技能创建
### [17:56] agent:main - YouTube 视频学习工作流
**任务背景:**
用户想让 OpenClaw 根据 YouTube 链接自主学习视频内容。
**探索过程:**
1. Bilibili 尝试(失败)- 无字幕 API
2. YouTube 尝试(成功)- youtube-transcript-api
**产出物:**
- `skills/youtube-learning/SKILL.md`
- `scripts/learn_from_youtube.py`
**技术细节:**
- 优先中文字幕,回退英文
- Windows PowerShell 编码问题处理
**后续优化:**
- [ ] 支持 B站
- [ ] 长视频分段总结
示例 2:配置调试
### [16:30] agent:main - 浏览器自动化配置
**完成事项:**
- 安装 Chrome + OpenClaw Browser Relay 扩展
- 配置 Gateway Port: 18789, Relay Port: 18792
- 成功接管用户 Chrome 浏览器
**踩坑记录:**
| 问题 | 原因 | 解决方案 |
|------|------|---------|
| 扩展红色感叹号 | Relay 未启动 | `openclaw browser start` |
| tabs 为空 | 没激活标签页 | 点击扩展图标激活 |
**学到东西:**
- Relay Port = Gateway Port + 3
- Chrome 扩展模式 vs 独立浏览器模式对比
错误处理
| 错误 | 原因 | 解决方案 |
|---|---|---|
| 文件被锁定 | 其他进程占用 | 等待 1 秒后重试 |
| Git 提交失败 | 无变更 | 跳过提交 |
| 编码错误 | Windows GBK | 统一用 UTF-8 |
| 覆盖其他 agent 内容 | 未先 read 直接 write | ✅ 写入前必须 read 检查 |
| DashScope 认证失败 | endpoint 配错(国内/国际) | 根据 Key 来源选 endpoint |
相关文件
memory/SESSION_LOG_GUIDE.md- 完整规范文档scripts/session_log.py- Python 工具脚本memory/YYYY-MM-DD.md- 每日日志文件skills/memory-archive- 每周归档技能(不同职责)
与 memory-archive 的区别
| 维度 | session-log | memory-archive |
|---|---|---|
| 触发时机 | 每个 session 结束 | 每周/定期 |
| 职责 | 实时写入原始记录 | 归档、蒸馏、清理 |
| 输出 | memory/YYYY-MM-DD.md |
.memory/.topics/*.md |
| 频率 | 高频(每天多次) | 低频(每周一次) |
| 内容 | 详细工作记录 | 精炼主题知识 |
自动化建议
在 SOUL.md 或 AGENTS.md 中添加:
## Session 结束前
- [ ] 调用 `session-log` skill 写入工作内容
- [ ] 确认时间戳和 agent 名正确
- [ ] Git 提交并 push
或在 HEARTBEAT.md 中添加:
- 检查是否有 session 结束前未写入日志
- 提醒用户确认 session 内容已记录
本技能所有 agent 必须使用,确保多 session 协作时信息不丢失!