Install
openclaw skills install @luckystarry/record-keeper工作记录归档标准。当用户要求记录工作内容时,严格按照本 skill 的类别和模板执行。 触发场景:记录会议、记录需求、记录规划、写SOP、写复盘/报告、值班/人事等行政记录、创建记录文件、归档工作记录。 类别严格封闭,共13类:meeting / requirement / plan / sop / report / admin / badcase / task / weekly / monthly / quarterly / yearly / memo,不可自行扩展。 所有记录文件存放在 records/YYYY-MM/ 下,文件名格式:[YYYYMMDD]-[category]-[topic]-[sub-topic]-[seq].md badcase 类使用专用文件名格式:[YYYYMMDD]-badcase-[service]-[keyword/topic][-seq].md
openclaw skills install @luckystarry/record-keeper本 skill 使用以下占位符,agent 执行时自动解析:
| 占位符 | 含义 | 解析方式 |
|---|---|---|
{SKILL_DIR} | 本 skill 的安装目录 | agent 加载 skill 时自动解析为绝对路径 |
{WORKSPACE} | agent 当前工作目录 | exec 的 workdir 参数 |
脚本位置:{SKILL_DIR}/scripts/
embed.py — 向量索引生成与搜索status.py — 记录状态管理数据位置(均在 {WORKSPACE} 下):
records/ — 记录文件目录vectors/embeddings.db — 向量数据库(SQLite){WORKSPACE}/
├── records/
│ ├── 2026-04/
│ │ └── YYYYMMDD-[category]-[topic]-[sub-topic]-[seq].md
│ ├── 2026-05/
│ └── ...
└── vectors/
└── embeddings.db
按月归档。目录不存在时自动创建。
[YYYYMMDD]-[category]-[topic]-[sub-topic 可选]-[seq 可选].md
YYYYMMDD:创建日期category:必须为以下 13 类之一topic:中文主题sub-topic:可选,进一步细分seq:可选,三位序号 001~999,同日同主题多份时使用-| 类别代码 | 含义 | 使用场景 | 模板文件 |
|---|---|---|---|
meeting | 会议记录 | 有明确开会行为、多人参与、产生讨论/决议/待办 | references/meeting.md |
requirement | 需求文档 | 产品/技术需求的完整定义,含背景/范围/方案/验收标准 | references/requirement.md |
plan | 计划/规划 | 项目计划、季度规划、排期、里程碑、路线图 | references/plan.md |
sop | 标准流程 | 可复用的标准作业程序,有版本号,指导"怎么做" | references/sop.md |
report | 分析/复盘/总结 | 对已有事物的分析、复盘、总结、评审报告 | references/report.md |
admin | 行政/运营事务 | 值班、人事、团队档案、培训记录、成本工时等 | references/admin.md |
badcase | 缺陷案例 | 搜索消歧错误、排序异常、意图识别失败、分词问题等质量缺陷案例 | references/badcase.md |
task | 任务提醒/待办事项 | 每日待办、任务分配、工作清单、截止日期提醒 | references/task.md |
weekly | 周报 | 每周工作内容汇总、进度梳理、下周规划。系统出具草稿,用户审阅补充 | references/weekly-report.md |
monthly | 月报 | 每月工作内容汇总、OKR 进度追踪、下月规划 | references/monthly-report.md |
quarterly | 季报 | 每季度工作汇总、OKR 完成评估、下季度规划建议 | references/quarterly-report.md |
yearly | 年报 | 年度工作总结、大事纪、下年度规划建议 | references/yearly-report.md |
memo | 工作备忘录 | 日常工作总结、技术决策备忘、经验总结、待确认事项临时记录 | references/memo.md |
[YYYYMMDD]-weekly-report-[week-range].md
YYYYMMDD:周报生成日期(通常为周六)week-range:周数标识,格式为 W{周数},如 W18 表示第18周20260503-weekly-report-W18.md[YYYYMMDD]-monthly-report-[YYYY-MM].md
YYYYMMDD:月报生成日期(通常为每月25日)YYYY-MM:月报覆盖的月份20260425-monthly-report-2026-04.md[YYYYMMDD]-quarterly-report-[YYYY-QX].md
YYYYMMDD:季报生成日期(通常为季度末月25日)YYYY-QX:季报覆盖的季度标识20260625-quarterly-report-2026-Q2.md[YYYYMMDD]-yearly-report-[YYYY].md
YYYYMMDD:年报生成日期(每年12月25日)YYYY:年报覆盖的年份20261225-yearly-report-2026.mdservice:服务类型,必须为以下 4 种之一(严格封闭)| 服务代码 | 含义 | 示例 |
|---|---|---|
apex | 消歧服务 | 20260423-badcase-apex-白云机场南-001.md |
sug | 大搜下拉 | 20260423-badcase-sug-搜索词推荐异常.md |
nlu | NLU 识别服务 | 20260423-badcase-nlu-意图识别错误.md |
other | 其他服务 | 20260423-badcase-other-未知问题.md |
keyword/topic:搜索词或问题主题(中文或拼音)seq:可选,三位序号 001~999,同日同服务同主题多份时使用容易混淆的场景:
meeting(记录会议过程),会后产出需求文档 → requirementmeeting,评审会后整理重点事项 → planreport,复盘会议过程 → meetingsop,讨论建立 SOP 的会议 → meetingadmin,讨论排班方案的会议 → meetingbadcase,讨论消歧 badcase 的会议 → meetingbadcase,讨论分词 badcase 的会议 → meetingtask(日常待办)plan(长期规划)admin(行政运营)meeting(讨论过程)memo(非正式,轻量记录)memo(经验方法论记录)memo(当天工作内容的简要记录)memo(非正式,轻量记录)memo(当天工作内容的简要记录)判定原则:记录的是"讨论过程"就用 meeting,记录的是"产出的文档/结论"就用对应类别。
weekly(由 cron 自动生成或手动触发)task(每日待办,非汇总)meeting(不是周报的一部分)report(深度分析,非周度汇总)report(更长时间维度的分析)meeting 记录,不重复创建task 记录,不重复创建monthly(每月汇总,含 OKR 进度追踪)meeting 记录,不重复创建weekly 记录,不重复创建quarterly(每季度汇总,含 OKR 完成评估、下季度建议)monthly 记录,不重复创建weekly 记录,不重复创建yearly(每年汇总,含年度大事纪、OKR 年度评估、下年度规划)quarterly 记录,不重复创建monthly 记录,不重复创建weekly 记录,不重复创建[YYYYMMDD]-[category]-[topic]... 格式{SKILL_DIR}/references/ 读取对应模板{WORKSPACE}/records/YYYY-MM/ 目录embed.py init,不可省略,不可延迟:
exec: command="/usr/bin/python3 {SKILL_DIR}/scripts/embed.py init", workdir="{WORKSPACE}"
references/status-transitions.md 中查找恰当的初始状态(默认 open,若明确已完成则设为 done),执行:
exec: command="/usr/bin/python3 {SKILL_DIR}/scripts/status.py set-file <文件名> <状态>", workdir="{WORKSPACE}"
⚠️ 顺序不可颠倒:必须先 embed.py init(将文件写入数据库),再 status.py set-file(从数据库查询文件)。
embed.py init(使用 workdir 参数,不用 cd &&)embed.py init任何涉及记录创建/修改的任务完成后,必须确认以下全部勾选后,才能开始新任务:
{WORKSPACE}/records/YYYY-MM/ 目录embed.py init 更新向量索引status.py set-file 设置记录状态cleanup: "delete")检查不通过,不得开始新任务!
当用户要求"查阅"、"查找"、"搜索"某类记录时,按以下顺序执行:
向量搜索 - 使用 embed.py search <关键词> 检索相关记录(首选)
按状态查询(当查询涉及完成/未完成状态时) - 直接使用 SQLite 按 status 字段查询:
exec: command="/usr/bin/python3 {SKILL_DIR}/scripts/status.py list --category <类别> --status <状态>", workdir="{WORKSPACE}"
或按所有类别查询未完成的记录:
exec: command="/usr/bin/python3 {SKILL_DIR}/scripts/status.py list --status open --status in_progress", workdir="{WORKSPACE}"
适用场景:查询"未完成的 badcase"、"进行中的任务"等。
当 status 字段有值时,优先使用 SQL 查询,语义搜索作为补充。
定位文件 - 根据搜索结果读取对应文件
返回内容 - 整理并返回用户需要的信息
embed.py search 从向量索引中查找status.py list --status <状态>_待确认_),不瞎编| 用途 | 路径 | 说明 |
|---|---|---|
| 向量数据库 | {WORKSPACE}/vectors/embeddings.db | 主存储 (SQLite) |
| 嵌入脚本 | {SKILL_DIR}/scripts/embed.py | 向量生成/搜索工具 |
| 项目 | 配置 |
|---|---|
| API Provider | 硅基流动 (SiliconFlow) |
| 嵌入模型 | BAAI/bge-m3 |
| 向量维度 | 1024 |
| API KEY 环境变量 | SILICONFLOW_API_KEY |
环境变量传递:embed.py 自动继承宿主环境变量 SILICONFLOW_API_KEY,不需要显式传递。
# ✅ 正确(不传 env,子进程继承环境变量)
exec: command="/usr/bin/python3 {SKILL_DIR}/scripts/embed.py init", workdir="{WORKSPACE}"
# ❌ 错误(${VAR} 不会展开,传的是字面字符串)
exec: command="/usr/bin/python3 {SKILL_DIR}/scripts/embed.py init", env={"SILICONFLOW_API_KEY": "${SILICONFLOW_API_KEY}"}
规则:
embed.py init 和 embed.py search 一律不传 env 参数command + workdirenv 参数exec-approvals.json 的 pattern 只匹配命令的第一个词。以下写法会导致审批失败:
❌ 禁止写法(pattern 匹配失败):
cd /path && python3 embed.py init # 第一个词是 cd
source .env && python3 embed.py init # 第一个词是 source
export KEY=val && cmd # 第一个词是 export
✅ 正确写法(使用 exec 参数代替):
| 场景 | 使用 exec 参数 | 示例 |
|---|---|---|
| 切换目录 | workdir | command="python3 embed.py init", workdir="{WORKSPACE}" |
| 管道/组合 | 分开两次 exec | 先 cmd1,再 cmd2 |
完整示例:
exec: command="/usr/bin/python3 {SKILL_DIR}/scripts/embed.py search 'BADCASE' 3", workdir="{WORKSPACE}"
当用户要求查阅记录时,按以下顺序检索:
使用 status.py 管理记录的状态流转:
| 命令 | 用途 | 示例 |
|---|---|---|
status.py list [--category X] [--status X] | 按类别/状态列出记录 | status.py list --category badcase --status open |
status.py set <record_id> <status> | 按记录 ID 设置状态 | status.py set abc123 done |
status.py set-file <文件名> <status> | 按文件名设置状态 | status.py set-file "baijin" done |
status.py normalize "原文" | 测试归一化映射 | status.py normalize "已完成" |
状态值:open、pending、in_progress、done、deferred
每次创建或修改记录文件后,必须:
references/status-transitions.md 中的流转表status.py set-file <文件名> <状态> 更新 SQLite 中的状态示例:badcase 从 open 变为 in_progress:
exec: command="/usr/bin/python3 {SKILL_DIR}/scripts/status.py set-file 'zhongju' in_progress", workdir="{WORKSPACE}"
status.py 脚本路径:{SKILL_DIR}/scripts/status.pyworkdir="{WORKSPACE}"每个类别的模板详见 references/ 目录下对应文件:
references/meeting.md - 会议记录模板references/requirement.md - 需求文档模板references/plan.md - 计划/规划模板references/sop.md - 标准流程模板references/report.md - 分析/复盘/总结模板references/admin.md - 行政/运营事务模板references/badcase.md - 缺陷案例模板references/task.md — 任务提醒/待办事项模板references/weekly-report.md — 周报模板references/monthly-report.md — 月报模板references/quarterly-report.md — 季报模板references/yearly-report.md — 年报模板references/memo.md — 工作备忘录模板references/vector-index.md — 向量索引使用指南references/status-transitions.md — 状态流转规范(时间流转表、各类别允许状态、正常化映射)