light-memory-pm — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited light-memory-pm (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
两套记忆系统并存——跨会话 Light 记忆文件(user/feedback/project/reference + MEMORY.md 索引)与项目库 db09——极易把同一类信息写错地方或两头都写造成漂移。落盘前先按下表定位唯一权威落点(SSOT),再决定是否需 MEMORY.md 索引双写。铁律:权威落点只有一个;MEMORY.md 只放索引行(指针),绝不放权威正文。
| 信息类别 | 唯一权威落点(SSOT) | 是否需 MEMORY.md 索引 | 反例(别写这) |
|---|---|---|---|
| 个人偏好(写作风格/工具/格式习惯) | Light feedback 记忆文件 | 是(索引行) | 别塞进 db09 project_card |
| 项目背景/进展/状态(idea/数据/实验/版本/投稿) | db09 project_card.md(14 字段) | 否(项目内事实不进 MEMORY) | 别写进 feedback/MEMORY 正文 |
| 跨项目过程教训(踩坑/被拒/复现失败/省时避雷) | db09 顶层 lessons.md | 否 | 别留在某项目 decision_log 当全局教训 |
| 方法选型事实(某方法适用条件/优劣/基线) | db03 方法卡 | 否 | 别进 lessons.md(那是过程教训非方法事实) |
| 术语/指标/创新点定名 | db09 项目 terminology.md | 否 | 别散落各材料正文 |
| 重大决策时间线 | db09 项目 decision_log.md | 否 | 别只记在对话里 |
| 跨会话项目背景/参考资源(供新对话快速恢复) | Light project/reference 记忆文件 | 是(索引行) | 别只写 db09(新对话不会自动扫 db09 全库) |
| 看似都能放 | 归属判据 | 落点 |
|---|---|---|
| 偏好 vs 教训 | "我习惯这么做"=偏好;"这么做导致被拒/复现失败"=过程教训 | feedback 记忆 / lessons.md |
| 教训 vs 方法事实 | "三模块纯串联当创新点会被拒"(对任意 CV/ML 成立)=教训;"OC-SORT 适合无 re-id 跟踪"=方法事实 | lessons.md / db03 |
| 项目内决策 vs 跨项目教训 | 带研究方向前提(如"白羊外观同质化弃 re-id")=项目内;剥离方向后仍成立=可上 lessons | decision_log.md / lessons.md(去偏科化后) |
写 lessons.md 须去偏科化(剥离研究方向前提,抽到对任意学科成立的层面),a02 起草、归档点由用户拍板(详见下「跨项目教训回写」)。校验工具:scripts/check_project_card.py(日期/枚举/行格式/衔接链)、scripts/version_tag_reconcile.py(version_history↔git tag 对齐)。
projects/ 平级,格式见下);feedback 记忆文件本身仍存个人偏好类反馈。project_name, goal, current_stage, confirmed_idea, data_status, method_status, experiment_status, paper_status, ppt_status, code_status, risk_list, next_actions, decision_log, version_history。四类记忆文件存哪、什么格式、何时写、何时读,照此执行,不得省略。
全部存到 db09,每个项目一个独立目录(相对本技能目录为 ../../databases/db09-projects/projects/<project_name>/):
databases/db09-projects/projects/<project_name>/
├── project_card.md 项目卡:14 字段总览(next_actions 在此)
├── terminology.md 术语/指标/创新点统一定义表(供 a07)
├── decision_log.md 重大决策时间线
└── version_history.md 论文/PPT/图表/代码各版本记录
(可选子目录 literature/ reviews/ submissions/ 见 db09 README)<project_name> 用短横线英文 slug(如 dairygoat-detect-track)。已存在实例可直接参考:projects/dairygoat-detect-track/(四文件齐全;version_history.md 在未出正式版本前只记当前态、不编造历史版本)。
project_card_template.md)project_name / created 绝对日期),正文 # 项目卡:<中文标题>,再用一个 ``yaml 代码块装 14 字段:project_name, goal, current_stage, confirmed_idea, data_status, method_status, experiment_status, paper_status, ppt_status, code_status, risk_list, next_actions,末两字段写 decision_log: 见 decision_log.md、version_history: 见 version_history.md。多行字段用 |` 块标量。| 类别 | 标准叫法 | 缩写 | 英文 | 备注 |,类别取 方法/数据集/指标/创新点;创新点行标准措辞须与论文/PPT/软著一字对齐。- [YYYY-MM-DD] 决策 — 理由 — 来源(m03/m04/m14…)。只追加不改写,保留时间线。- [YYYY-MM-DD] 材料(论文/PPT/图/代码) vN — 变更摘要,与 git tag 对齐(见下「管理工具映射」)。项目背景、研究问题、已确认 idea、数据情况、实验进度、论文/PPT/图表/代码各自版本、投稿与审稿记录、用户偏好(写作风格/工具/格式)、目标期刊、格式要求、重要决策(decision_log)。 不记:代码结构、git 历史、能从仓库直接看出的东西。
把项目拆成:资料调研→idea 构思→方案确认→数据准备→实验实现→结果分析→论文写作→图表制作→投稿准备→答辩展示→成果转化。每阶段建:
- [ ] 复选框的条目,风险项打 risk 标记。- [x] 用于已完成项,便于自动统计进度。git tag -a v1.2.0(注释标签才被 git describe 识别),遵循 SemVer,论文/PPT 也打 tag 并与 version_history 对齐;CHANGELOG 按 Keep a Changelog;大文件交 DVC;git push --tags 才上传。dvc add 生指针、dvc.yaml 定 stage、dvc exp run+metrics diff;MLflow start_run+log_param/metric/artifact 串 run_id;W&B init/log+Artifacts 血缘+Sweeps,记 run URL。data_status/experiment_status 挂对应 commit/run。每次完成:资料搜索、idea 修改、实验运行、论文修改、PPT 修改、投稿返修——立即更新 db09 对应字段与 decision_log,避免长期项目上下文丢失。
触发→写入对照:idea 定稿→改 confirmed_idea + 追加 decision_log;实验跑完→改 experiment_status + next_actions;论文/PPT/代码出新版→改对应 *_status + 追加 version_history(并打 git tag);方案变更/取舍→追加 decision_log;新术语/指标/创新点定名→补 terminology.md。
B-fact 引用三件套(硬性,禁裸写数值):写 decision_log/data_status 引用 venue 计量(h_index/被引/分区) / 数据集许可/DOI / 外部数值 时,不当 db09 自带权威,必带三件套——快照值(可带 ≈) + `[snapshot YYYY-MM-DD, src=dbNN:文件#定位, 用前重核, 冲突信在线]`(venue 回指 db01:venues.csv、数据集回指 db04 卡、色值回指 db05 DTCG;palette.json 是样板)。读卡恢复状态时:带 last_checked 的快照若超期(计量 >90 天/许可 >365 天)给"需重核"提示,不直接当当前值汇报,投稿/用前以在线(venue_signal.py)或官方源重核。
跨项目教训回写(节制,避免噪声):仅当某决策产生了可跨项目复用的过程教训——踩坑、被审稿/导师否掉、复现失败、某流程显著省时/避雷——才在追加 decision_log 的同时回写一条 lesson 到 db09 顶层 lessons.md(格式:- [YYYY-MM-DD] 阶段/场景 — 做法 — 结果(有效|失败) — 适用条件 — 来源项目slug)。日常项目内决策不强制回写。边界:方法选型事实归 db03 方法卡,个人偏好归 feedback 记忆,二者不进 lessons.md。去偏科化(回写时):lesson 须剥离研究方向前提、抽到对任意学科成立的层面(如"三模块纯串联当创新点会被拒,须有方法层 delta"对任何 CV/ML 成立=可上;"白羊外观同质化弃 re-id"带方向前提=留 decision_log 不上 lessons);a02 起草、归档确认点由用户拍板。
刚跑完检测 baseline(项目 dairygoat-detect-track)的五步:① 读现状:Read project_card.md 看 experiment_status/next_actions 当前值;② 改项目卡:Edit 把 experiment_status 改为带具体指标的实测描述(如「E1 baseline 已跑:YOLOv11@1280,mAP 0.71」),同步勾掉/替换 next_actions 首条;③ 追加决策日志:decision_log.md 末尾加 - [日期] 决策 — 理由 — 来源;④ 记版本:有可复现 tag 则 version_history.md 加行并 git tag -a;⑤ 跨会话索引:涉用户长期偏好/项目背景则写 Light 记忆文件 + MEMORY.md 索引行。日期一律绝对日期(今天=系统 currentDate)。
先读项目库与记忆:定位 databases/db09-projects/projects/<project_name>/project_card.md,优先读 `next_actions` 字段确认"上次做到哪、下一步是什么",必要时再读 decision_log 末几条与 version_history。会话长时被压缩后,靠 db09/记忆而非短期记忆恢复状态。
跳过已归档项目:罗列/恢复项目时跳过 project_card 带非空 archived: 字段的项目,只在活跃项目里恢复状态;除非用户点名该归档项目。完结项目按「项目归档协议」(见 references.md)加 archived: 日期 + 回写终版 lessons,不删目录、不挪路径。
复用历史教训:新项目立项,或选定方法/投稿策略前,先 Grep db09 顶层 lessons.md 检索同类"阶段/场景"关键词(如 方案确认/数据准备/投稿)的历史有效做法;命中可复用的,在写 decision_log 时注明"复用自 lesson [日期]"。
本技能是会话衔接协议的执行者(全局纪律见 CONVENTIONS.md §9)。当上下文将尽或一段任务收尾时,主动给用户留种,让下一个对话零成本接上——区别于 orchestrator §0 的被动断点恢复(事后救火),这是事前留种。
四类触发(宁早勿晚,阶段边界默认触发):T1 上下文水位(对话很长/已读大量文件/感知到压缩摘要/用户说"快不行了")、T2 任务完成(收尾主动给"下一步"提示词)、T3 阶段切换(orchestrator 检查点通过前)、T4 用户索要("给我衔接提示词/开新对话继续")。注意:单纯"继续写这段/继续润色"是单技能续写,不触发交接。
两件套产出(触发时同时交付):①衔接卡落盘 .light/handoff/S<NN>-<slug>.md(模板 templates/handoff_card.md,与 passport.yaml 同级,<NN> 两位递增);②按 templates/handoff_prompt.md 填好具体值后打印一段中文启动提示词,用户复制→新开对话→粘贴即续。无项目目录的轻对话只打印提示词、不落卡(已知局限)。
自包含 + 自传播:每张卡独立可读,下一个 agent 只读最新卡即可续上;沿卡内 parent_session 链可追到任意上级对话。每个接手会话收尾必须再造下一张卡 + 提示词,协议才不断链。衔接卡 ≠ 当前事实:接手后仍按 orchestrator §5 刷新 git/passport/db09/CI 证据。
完整触发判据、落盘规则、与断点恢复的关系见references/session_handoff.md。 特定客户端:Hermes 多会话/压缩主链恢复(查state.db的parent_session_id/archived/cwd复原完整会话链)见references/hermes_session_lineage_recovery.md——通用协议优先,此为单客户端细节。
是所有技能的状态中枢:m01–m17 的产出都在此登记,a06 的目录与之对应。
各工具的真实端点/参数/已知坑见 references.md。
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.