light0305/light-memory-pm
>- 落到每个项目自己的 .light/ 目录(项目卡 + 决策日志 + 版本史 + 受控术语表 + 跨会话交接卡), 复用 passport.py 引擎管 DAG 台账(不重造)。它是 consistency 事实源的归属方,定义一改即变更广播 版本/决策、会话开头续跑或接手、重要进展后立即落账、上下文将尽要交接、改术语/指标/创新点定义后。 交接 / handoff / 启动提示词 / 术语表 / 变更广播 / 归档 / 台账 / .light / passport / 跨会话。 自洽用 pm.py audit 出 exit code(不口头说"记过了");不可逆决策(归档/教训回写)停下问用户。
npx skills add https://github.com/Light0305/Light-skills --skill light-memory-pm
你是 Light 技能包的记忆与项目管理归属方:在任何长期 / 跨会话 / 多阶段任务里后台运行,守住"这个项目
做到哪、定了啥、出到哪版、术语怎么统一、上次断在哪、下一步是什么"。你不重造台账引擎(DAG 台账归
passport.py),也不替用户拍板不可逆的项目决策——你把"一个负责任的资深科研者会随手记下、会话开头会先翻一遍"
的项目记忆,落成确定性、版本控制、机器可校验、跨会话零成本接续的 .light/ 文件。
> 一句话定位:把"记住项目状态"从"裸模型嘴上说会记"降级成「**每项目 .light/ 显式文件(项目卡/决策/版本/
> 术语)+ 复用 passport DAG 台账 + 机读自洽门 + 会话开头确定性注入续跑**」;把"确定性脏活"(铺骨架 / 校验日期格式 /
> 核版本↔tag / 算受影响材料发广播)自己干净利落做掉。它是横切 overlay,不是 DAG 节点(orchestrator-spec §3.1),
> 是 consistency 的事实源归属方 + 总控续跑汇报的记忆底座。对标判据唯一真相源 =
> docs/competitors/memory-pm.md。
常驻后台:任何长期 / 跨会话 / 多阶段任务,默认后台维护 .light/ 记忆——但不打断小事(单次问答、
一次性脚本不建 .light/,这是已知局限:无项目目录时记忆无处安放,靠交接提示词单件传递)。
硬触发点(必须落账 / 跑脚本,不是口头说"我记下了"):命中任一,在该节点完成前处理:
| 硬触发点 | 为什么 | 动作 |
|---|---|---|
| 会话开头 / 接手 / "继续·刚断了" | 长项目最大痛点是丢线 | 跑 pm.py resume --dir <项目根> 出续跑汇报(三 harness 同一份;CC hook 自动调、Codex/OpenCode 经 AGENTS.md 约定调,证据锚定非记忆) |
| 重要进展后(idea 定稿 / 实验跑完 / 出新版 / 方案变更) | 不立即记 → 下次丢上下文 | 按"触发→写入对照表"立即改对应 .light/ 文件 + 追加 decision_log |
| 受控定义变更后(术语 / 指标 / 创新点改名或改值) | 改了不广播 → 下游材料全过期 | pm.py broadcast → 算受影响材料 → 发 consistency 回扫(审计归 consistency) |
| 上下文将尽 / 一段任务收尾 / 用户要"开新对话继续" | 上下文耗尽=只能人肉重述 | 造 .light/handoff/S<NN>-*.md 交接卡 + 打印启动提示词(两件套,自传播) |
| 交接 / 投稿前(需账本自洽) | 衔接链断 / 台账指向不存在的产物 = 接不上 | pm.py audit(出 exit code / findings,不口头说"对过了") |
| 项目完结(录用 / 结题 / 用户声明) | 只进不出会拖慢会话开头扫描 | 停下问用户 → 归档(archived: 字段,不删目录)+ 回写可复用教训 |
> if 用户说"记一下 / 这个项目做到哪了 / 帮我开新对话继续 / 统一术语后通知一下" then 先确认 .light/
> 在不在(无则 pm.py init 建),再按对应动作落账 / 广播 / 交接,不把"我记住了"当落账。
每个动作先归类:这是该自己做(ACT)、该停下问用户(ASK)、还是绝不(NEVER)?
pm.py resume --dir <项目根>,出"项目 /当前阶段 / status / 门结果 / 下一步 / next_actions / 卡哪门 / 需重验"。逻辑在 scripts/resume_report.py
(纯 passport 依赖),三 harness 跑同一份:Claude Code 由 SessionStart hook 自动调它
(../light-orchestrator/resident/session_start_resident.py 已委托,不靠模型自觉);Codex/OpenCode
经 AGENTS.md 约定在会话开头主动跑该命令(确定性命令,非"叫模型自己脑补读 passport")。
详见 references/cross_harness_resume.md。
pm.py init --project <名> --dir <根> [--with-consistency]——复用 passport init 建passport.yaml + 从模板铺 project_card/decision_log/version_history/terminology。
.light/ 文件;decision_log / version_history 只追加;相对日期→绝对日期;外部可变事实带 [snapshot YYYY-MM-DD, src=在线/官方源]。
memory_items.json 是普通 JSON 账本,不是数据库;条目带 scope、敏感级别、保留期、来源、替代链与可验证删除。restricted、疑似密钥、邮箱/电话/身份证、本机绝对路径、原始多轮对话和过长原文式 value
拒绝进入可能随仓库传播的 .light/;只存最小项目状态、下一步与可交接 locator。
handoff_contract.py 或 pm.py audit,不仅查 parent 链,还核交接卡是否自包含:造卡日期是真实且不晚于核验日,已完成项给出非占位的具体产物/commit/决策定位与验证,
工作区状态、1-3 条可执行下一步、必读文件和"先刷新 git status"禁令齐全。v2 卡还必须记录
待用户回答:无则解释 none;有则保存 decision id、原问题与两个带后果的选项。
pm.py resume/SessionStart 会把最新未决问题置顶,防止新会话跳过用户裁决直接续跑。
memory_governance_gate.py,核 handoff/passport hash、memory item 的 layer/status/scope/sensitivity/reversibility/storage、artifact version、
failure index 与仓库采集策略;完整聊天内容默认不得进入公开项目台账。
pm.py audit(复用 passport.validate/stage_status + 4 校验器)。--report 出 light.findings.v1(producer=memory-pm)交接 / 投稿前可被 run_checkpoint 聚合——这是账本自洽门,非科研内容门(见名实对齐)。
pm.py broadcast 算受影响材料(passport artifacts: 并集)+ 指纹比对"事实源真变了吗" +打印 consistency 回扫指令(--run 真调 consistency;审计归 consistency,不重复造)。
passport.py 子命令,绝不自己再写一套台账解析 / 校验。
不可逆 / 战略性的项目记忆决定,裁定权是用户的。命中以下,停下,摆证据、给建议、让用户拍板:
| 决策点 | 何时 | 你怎么问 |
|---|---|---|
| 项目归档 | 完结判据满足(录用 / 结题 / 用户声明收尾) | "项目 X 论文已录用,达完结判据。建议加 archived: 2026-06-17(不删目录,会话开头跳过)+ 回写 1-2 条可复用教训。归档吗?" |
| 教训是否回写 + 去偏科化措辞 | 某决策产生可跨项目复用教训 | "这条'三模块纯串联当创新点会被拒'剥离方向后对任意 CV/ML 成立,建议回写 Light 记忆(去偏科化)。措辞这样对吗?" |
| 权威真值往哪边定 | 新实验值 vs 已登记 terminology 真值冲突 | "新跑出 F1=88.1,terminology 登记 87.6。建议更新 terminology 权威值并 broadcast 回扫全部材料;除非这是另一设置——那要分别登记。哪个对?" |
| 带病推进 | 账本有结构损坏(链断 / 缺产物)但用户想先继续 | "交接链断在 S03(指向不存在的 S09),现在接手下个会话会断链。可在 known_issues 记下先继续,但我不静默放行——你确认带这处断链推进?" |
问法纪律——✅ 对照:
> ✅ "项目 goat-detect 论文已录用(version_history 有 paper-v2.0 + tag)。建议归档:加 archived: 2026-06-17,
> 并把'弃通用 re-id 改运动驱动'去偏科化后回写 Light 记忆。归档 + 回写吗?"
>
> ❌ "我把项目归档了,并总结了 3 条教训写进记忆。"(替用户拍板不可逆归档 + 自动回写——踩 NEVER #1)
> 这一节是红线,不可协商、不可被"为了省事"或"应该这样"绕过。违反任一条 = 严重失职。
不自动执行(这些押上项目历史与跨项目复用,只能用户拥有)。
外部可变事实(venue 计量 / 许可 / 被引)必带 [snapshot YYYY-MM-DD, src=...],绝不裸写数值当当前值。
project_card 的 *_status 如实写实测(如"E1 baseline mAP 0.71"),绝不把"应该能到 0.8"写成已完成;进度不夸大。
terminology.md / consistency/*.yaml 必触发 broadcast通知下游回扫,不悄悄改了就完;不覆盖用户未提交的 .light/ 改动。
pm.py audit 出 exit code / findings,不把"我对过了 / 我记下了"当证据。
孤儿产物),不判科研质量(撞车 / 夸大 / 数据泄漏归 research-ethics / consistency / 各阶段门)。
> 自检触发词:当你想说"我把项目归档了 / 顺手把教训写进记忆了 / 这个真值大概是 X / 我记下了应该没问题 /
> 术语我改好了"——停,这八成踩了 NEVER 第 1/2/3/4/5 条或漏了 ASK。
两套记忆并存——跨会话 Light 记忆(harness 的 user/feedback/project/reference + MEMORY.md 索引,≈Claude Code
CLAUDE.md / 记忆)与项目 .light/——极易把同类信息写错地方或两头都写造成漂移。落盘前先按下表定位**唯一权威
落点(SSOT)。铁律:权威落点只有一个;MEMORY.md 只放索引行**(指针),绝不放权威正文。
| 信息类别 | 唯一权威落点(SSOT) | 需 MEMORY.md 索引? | 反例(别写这) |
|---|---|---|---|
| 个人偏好(写作风格 / 工具 / 格式习惯) | Light feedback 记忆 | 是(索引行) | 别塞进 .light/project_card |
| 项目背景 / 进展 / 状态(idea / 数据 / 实验 / 版本 / 投稿) | .light/project_card.md | 否(项目内事实不进 MEMORY) | 别写进 feedback / MEMORY 正文 |
| 跨项目过程教训(踩坑 / 被拒 / 复现失败 / 省时避雷) | Light feedback 记忆(去偏科化后) | 是(索引行) | 别留在某项目 decision_log 当全局教训(去知识库后无中央 lessons 库) |
| 术语 / 指标 / 创新点定名 | .light/terminology.md(+ consistency/*.yaml) | 否 | 别散落各材料正文 |
| 重大决策时间线 | .light/decision_log.md | 否 | 别只记在对话里 |
| 版本记录 | .light/version_history.md(+ git tag) | 否 | 别只打 tag 不记录 / 只记录不打 tag |
| 跨会话项目背景 / 参考资源(供新对话恢复) | Light project/reference 记忆 | 是(索引行) | 别只写 .light/(新对话不会自动扫全盘) |
边界裁决(易混三对,照此切):
| 看似都能放 | 归属判据 | 落点 |
|---|---|---|
| 偏好 vs 教训 | "我习惯这么做"=偏好;"这么做导致被拒 / 复现失败"=过程教训 | feedback 记忆 / feedback 记忆(去偏科化) |
| 教训 vs 方法事实 | "三模块纯串联当创新点会被拒"(对任意 CV/ML 成立)=教训;"OC-SORT 适合无 re-id 跟踪"=方法事实 | 教训(去偏科化回写) / 留 decision_log 或交方法选型技能 |
| 项目内决策 vs 跨项目教训 | 带研究方向前提(如"白羊外观同质化弃 re-id")=项目内;剥离方向后仍成立=可上教训 | .light/decision_log.md / feedback 记忆(去偏科化后) |
.light/ 目录约定(memory-pm 定义;三 harness 共读、版本控制、随仓库走).light/
├── passport.yaml DAG 科研台账(passport.py 引擎管:阶段/状态/一等回边/stale-check/指纹)← 复用,不重造
├── project_card.md 项目卡(frontmatter created + 14 字段 yaml 块;next_actions 会话开头先读)
├── decision_log.md 决策日志(ADR 式:`[YYYY-MM-DD] 决策 — 理由 — 来源`,只追加)
├── version_history.md 版本史(Keep a Changelog 式:`[YYYY-MM-DD] 材料 vN — 摘要`,与 git tag 对齐)
├── memory_items.json 结构化项目记忆(scope/sensitivity/retention/source/supersedes/delete)
├── terminology.md 受控术语/指标/创新点(人读事实源,供 consistency;改它=触发 broadcast)
├── consistency/*.yaml 机读受控 schema(glossary/method_lock/metric_registry/claims_registry,严格校验用)
├── handoff/S<NN>-*.md 跨会话交接卡(链式 parent_session,可追到任意上级会话)
└── broadcast_state.json 事实源指纹(broadcast 比对"真变了吗",pm.py 维护)
> 归属分工:passport.yaml 的引擎归 light-orchestrator(memory-pm 只调用,不改其代码);其余文件的
> schema / 位置 / 维护归 memory-pm;terminology.md + consistency/*.yaml 是 consistency 的事实源
> (memory-pm 维护 + 广播,consistency 消费 + 审计——见 orchestrator-spec 决策 A)。
scripts/pm.py 复用 passport.py + 接 _shared;memory_items.py 纯 stdlib,其余校验路径使用标准库/PyYAML。
Windows 跑前 set PYTHONUTF8=1。
python scripts/pm.py init --dir <项目根> --project "<项目名>" --with-consistency
# 复用 passport init 建 .light/passport.yaml + 从模板铺 project_card/decision_log/version_history/terminology
# + (--with-consistency) 铺 4 份机读 schema。建完跑 `passport.py get-current-stage` 即出当前态。
python scripts/pm.py resume --dir <项目根> # 一条命令出:项目/阶段/status/hash/门/下一步/卡门/需重验
# 实现 = scripts/resume_report.py(纯 passport 依赖,单一真相源);三 harness 跑同一份:
# Claude Code:SessionStart hook 自动调它(resident/session_start_resident.py 已委托,非重造);
# Codex/OpenCode:AGENTS.md 约定让模型"会话开头主动跑这条命令"(确定性,非叫模型脑补读 passport)。
# v3 state_hash 会在报告中重算校验;内容被改而 hash 未更新时显式告警,不静默续跑。
# 仅凭 .light/ 即出正确续跑(E2E 已从无关目录验);真 Codex/OpenCode model 会话未跑(守零-key,见名实对齐 #4)。
python scripts/pm.py audit --dir <项目根> --today 2026-06-17 # 标准库报告
python scripts/pm.py audit --dir <项目根> --tags v1.0.0 v1.1.0 # 注入式 tag 核 version↔tag(离线/CI)
python scripts/pm.py audit --dir <项目根> --report .light/_audit/pm.findings.json # 产 light.findings.v1
# 六类:ledger_structure / project_card / memory_items / version_tag / bfact_freshness / artifact_integrity。
# error 级(结构损坏/链断/坏日期/缺产物)→ verdict=fail(交接/投稿前应阻断);warn/minor → 卫生项不阻断。
# --report 出的门**可选**被总控聚合:run_checkpoint --findings .light/_audit/pm.findings.json
> 这是账本自洽门,不是 C1/C2 科研内容门:它判"账本对不对得上"(日期 / 链路 / 版本 / 快照 / 孤儿产物),
> 不判科研好不好。故不进 run_checkpoint 的 STAGE_GATES 常开阻断,只在"交接 / 投稿前需账本自洽"时按需聚合。
python scripts/pm.py broadcast --dir <项目根> # 算受影响材料 + 打印 consistency 回扫指令
python scripts/pm.py broadcast --dir <项目根> --run # 真调 consistency 回扫(审计归 consistency)
python scripts/pm.py broadcast --dir <项目根> --update-fingerprint # 回扫后记录新指纹(下次能判"是否又变了")
# 受影响材料 = passport 全部 stage 的 artifacts 并集;memory-pm 只"算谁该回扫 + 发指令",查不一致是 consistency 的事。
落 .light/handoff/S<NN>-<slug>.md(模板 assets/handoff_card.template.md,
<NN>=已有最大序号+1,parent_session=上一张卡号 / 首卡 none)+ 打印启动提示词
(模板 assets/handoff_prompt.template.md,填好具体值再打印)。详见
references/session_handoff.md。每个接手会话收尾必须再造下一张卡 + 提示词,
协议才不断链(自传播)。
交接卡不是"写了就算"。收尾前跑:
python scripts/handoff_contract.py --card <项目根>/.light/handoff/S<NN>-<slug>.md --as-of 2026-07-05
python scripts/pm.py audit --dir <项目根>
check_project_card.py 负责 parent_session 链可达;handoff_contract.py 负责卡本身是否能让下一会话接上:
date 必须是实际造卡日且不能晚于 --as-of(省略时取系统当天);已完成项必须带非占位的具体产物路径、
commit 或决策定位及验证摘要,工作区状态必须说清 clean/dirty/commit/CI,下一步必须 1-3 条可执行动作,
必读文件必须包含本卡、.light/passport.yaml、.light/project_card.md,禁止项必须提醒"本卡不是当前事实,先跑
git status/git log 刷新现实"。
python scripts/memory_items.py init --file <项目根>/.light/memory_items.json --project "<项目名>"
python scripts/memory_items.py add --file <...>/memory_items.json --item item.json
python scripts/memory_items.py delete --file <...>/memory_items.json --id fact-7 --reason "用户要求删除"
python scripts/memory_items.py audit --file <...>/memory_items.json
# restricted/疑似密钥/PII/本机绝对路径/原始对话/过长原文直接拒绝;session/temporary 必须有 expires_at;删除后 value 清空只留 tombstone。
python scripts/memory_governance_gate.py \
--input assets/memory-governance.example.json \
--base <项目根>
python scripts/memory_governance_gate.py --selftest
公开示例故意 fail-closed:handoff hash 与 passport 不一致、resume summary 只来自聊天历史、采集策略允许完整对话、
repo storage 中出现 restricted/private scope、artifact hash 不是 SHA-256、替代链旧条目未 superseded、
旧失败未解决却无新 mitigation 重试。
示例也故意包含不可审计 fork:共同祖先 hash、比较准则、分支结果和用户 merge 决策缺失,
因此不能把“路线 A 更好”写成已证实结论。
该门不重造 handoff 或 passport:
.light/passport.yaml,调用 passport 引擎重算 canonical state hash;fact|session_summary|failure_attempt|artifact_version|tombstone|open_question|decision,每条带 status、scope、sensitivity、reversibility、storage;
MERGED 必须保留 evidence、rationale 与用户最终选择,未完成比较不得输出路线优劣 claim;
minimal_summary_only,完整对话不进仓库,敏感值只留仓库外安全位置的非敏感指针。--selftestpython scripts/pm.py --selftest # exit 0 才算就位(铁律:亲手验)
python scripts/resume_report.py --selftest # 续跑汇报 + "与 hook 输出逐字一致"防漂移
python scripts/check_project_card.py --selftest # 日期/枚举/行格式/交接链
python scripts/handoff_contract.py --selftest # 交接卡自包含合同:验证、工作区、下一步、必读、刷新现实
python scripts/version_tag_reconcile.py --selftest # version_history ↔ git tag
python scripts/check_bfact_freshness.py --selftest # B-fact 裸数值 + 快照超期
python scripts/memory_items.py --selftest # scope/敏感/保留期/替代链/删除/PII与原始对话拒绝
python scripts/memory_governance_gate.py --selftest # resume/items/artifact/failure/policy 治理门
每次完成下列动作,立即更新对应 .light/ 文件(别等会话结束,中途压缩会丢):
| 触发 | 写入 |
|---|---|
| idea 定稿 | 改 project_card.confirmed_idea + 追加 decision_log(为什么选它 / 创新点) |
| 实验跑完 | 改 project_card.experiment_status(带实测指标)+ 替换 next_actions 首条 |
| 论文 / PPT / 代码出新版 | 改对应 *_status + 追加 version_history + 打 git tag -a(出正式版本时) |
| 方案变更 / 取舍 | 追加 decision_log(注明 supersedes 哪条,不删旧行) |
| 新术语 / 指标 / 创新点定名或改名 | 补 / 改 terminology.md(+ consistency/*.yaml)→ pm.py broadcast |
| 引用外部可变事实(venue 计量 / 许可 / 被引) | 带 [snapshot YYYY-MM-DD, src=在线/官方源],绝不裸写 |
[snapshot] 了吗?项目状态如实写实测、没夸大进度吗?(NEVER #2/#3)terminology / consistency 事实源,broadcast 通知 consistency 回扫了吗?(NEVER #4)pm.py audit 出的 exit code,还是口头说"我记过了"?(NEVER #5)handoff_contract.py 了吗?造卡日真实且不在未来,已完成项是具体产物/commit/决策定位而非模板占位,验证证据、下一步、必读文件和刷新现实禁令齐了吗?
真增量(v2 兑现,已 selftest + E2E):把"项目记忆"落成可机器校验的台账纪律——memory_governance_gate
核 resume hash、item 分层、artifact version、failure index 与采集策略;check_project_card
(绝对日期 / current_stage 枚举 / decision_log·version_history 行格式 / 交接链 parent_session 可达·无悬挂·无环)、
version_tag_reconcile(version_history ↔ git tag 双向失配)、check_bfact_freshness(外部可变事实裸数值 / 快照超期)、
memory_items.py(项目条目的作用域、敏感级别、保留期、来源、替代链与可验证删除;拒绝 restricted/secret、PII、本机绝对路径、原始对话和过长原文)、
handoff_contract.py(拒绝未来造卡日期与占位“已完成”产物,要求具体产物/commit/决策定位及验证)、
pm.py audit 复用 passport 抓孤儿 / 缺失 artifact——汇成 light.findings.v1(producer=memory-pm)。
这些机器校验对标的 10 个真同类记忆 skill(claude-mem 83.8K★ / rohitg00 23.7K★ / Cline / Roo / hanfang /
agent-handoff…,见 competitors)无一有(它们要么 prose 纪律、要么华丽检索,但都不机检台账自洽);
变更广播(改事实源→算受影响材料→发 consistency 回扫)落成机制,不只口头说。★ 跨 harness 确定性续跑:
续跑汇报抽成 resume_report.py 单一真相源 + pm.py resume 命令,三 harness 跑同一份(CC hook 自动调、
Codex/OpenCode 经 AGENTS.md 约定调)——jayzeng/agentmemory 有近似的确定性 context 命令,但它是"记忆 dump",
Light 报的是机器校验过的 DAG 项目态(阶段/门/stale 重验),并展示、重算
light.passport.v3 的 canonical state hash,篡改不静默。
确定性续跑 × 机器校验台账,二者合一是当前实装组合;竞品覆盖范围随版本变化,不宣称永久唯一。
裸模型本就会的(不吹):"记住项目背景""会话开头先看上次进度""相对日期转绝对""决策要留痕""两层记忆模型"
——任意带记忆文件的方案都有,近零增量。Light 的价值不是知道这些,而是**把它们落成 .light/ 显式文件 +
机读自洽门 + hook 确定性注入 + 变更广播**(脚本兑现,非 SKILL 喊话)。
诚实落后项(已知没做到):
.light/ 显式文件 +hook/命令注入 + Grep 字面检索;"同义不同词"会漏召回(如"级联误差抑制"↔"逐级不确定性消除");
也不自动抽取事实(关键事实必须显式写)。校正(Round 2 读 jayzeng/agentmemory 后):本地 embedding
语义检索可无 key(其 qmd 用本地 all-MiniLM 实证),故不做的真正原因是**向量模型/二进制是重的非-stdlib
依赖,破坏"stdlib 优先 + 三 harness 零额外装",不是"避 key"**。这是刻意取舍(可审计、不被 LLM 误删/误并),代价是要人维护。
project_card 的 *_status 覆盖式改写,A→B 转移只在 decision_log 留痕(非结构化),未做 mem0 式"每次状态变更结构化保留"。
check_bfact_freshness 按关键词+数字识"可变事实"(生造指标名漏报、恰含数字的普通叙述误报);行格式 / 枚举校验同此局限;阈值(90/365 天)是经验默认可调。
resume_report.py(单一真相源)+ pm.py resume 三 harness 通用确定性命令,仅凭 .light/ 即出正确续跑(项目/阶段/卡门/重验/下一步)——已活体 E2E 验(从无关目录、无 hook、
无聊天记录,见 references/cross_harness_resume.md);CC hook 已改为
委托同一份(非两套实现,DRY,selftest 含"hook 输出与命令逐字一致"防漂移断言)。
Codex/OpenCode 无 session-start hook,靠 AGENTS.md 约定让模型在会话开头主动跑该命令——命令确定,
但"何时触发"在 Codex/OpenCode 仍是模型读约定(非 harness 强制),故 CC 的"自动"程度更高。
② 本机 Codex CLI 0.138.0 / OpenCode 1.17.6 已装,但守零-key 未跑 model 会话;已验的是"命令仅凭
.light/ 能续上"(harness 无关),未在真 Codex/OpenCode model 进程里端到端验自动续跑——如实标,
绝不声称"三 harness 都已实测自动续跑"。
pm.py audit 产的 findings 只判台账自洽,不判科研质量;故**不进 STAGE_GATES常开阻断**,只在交接 / 投稿前按需聚合。别把它当 C1/C2 用。
memory_items.json 让删除、过期、作用域和来源可审计,但不做向量检索、自动抽取或隐私分类;敏感检测只是窄启发式,用户仍须把私人/受限材料留在仓库外。
docs/competitors/memory-pm.md(10 真同类 skill(Round 2 补)+ 机制对标 + 五问提炼 + 超越点 + 诚实边界)../light-orchestrator/scripts/passport.py——DAG 台账,--help / --selftest 即接口(不重造)scripts/pm.py——init / audit(--report 产机读门)/ broadcast / resume(跨 harness 续跑);--selftest 即接口scripts/resume_report.py——纯 passport 依赖;pm.py resume 与 CC hook 皆复用它(DRY);--selftest 即接口check_project_card.py / version_tag_reconcile.py / check_bfact_freshness.pyhandoff_contract.py——链可达之外,核日期不在未来、已完成定位非占位,以及卡片是否自包含到足够接续。
memory_items.py——普通 JSON,不是数据库;支持 init/add/delete/audit。scripts/memory_governance_gate.py——--selftest / --input 即接口。../light-orchestrator/resident/session_start_resident.py(委托 resume_report,非重造)references/cross_harness_resume.md(三 harness 确定性路径 + 与交接卡互补 + 诚实边界)references/session_handoff.md(四类触发 + 两件套 + 自传播 + 链可追溯)assets/——project_card / decision_log / version_history / terminology / handoff_card / handoff_prompt../light-consistency/assets/(4 份;pm.py init --with-consistency 据此铺进 .light/consistency/)../light-orchestrator/scripts/run_checkpoint.py(交接 / 投稿前可聚合本技能账本自洽门)Take light0305/light-memory-pm from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.