Skill: krislu1221/agent-project-manager (version 2.7.2)

--- name: project-manager description: "项目上下文隔离与状态管理系统 v2.7.0。核心解决：对话中遗忘、跨天上下文丢失、新话题漏记录。新增：甘特图自动生成、项目风险自动识别、依赖关系管理。触发词: /project, 新建项目, 回到项目, 记录项目, 继续项目, 项目列表, 甘特图" --- # Project Manager v2.7.0 - 项目上下文管理系统 ## 要解决的核心问题 / Problems Solved **Agent 会遗忘。** 每天醒来是全新的，如果对话中没有及时记录，第二天就完全不记得做过什么。 **Agents forget.** Every day they wake up fresh. If conversations aren't recorded in time, everything is lost by tomorrow. **本系统的目标：** - 最小化信息遗漏，最大化可恢复性，不增加对话负担 - 以项目经理角度管理对话，而非日记——每个项目独立记录，独立保存所有信息和细节 - 随时回到任意项目，不携带其他项目的污染信息和噪音 - 结构化锚点：任何信息按项目精确召回，无需翻遍历史 - 大幅降低 Memory 负载，节省 Token 消耗（STATUS.md 远小于完整对话历史） - 推荐完整对话保存在 MemPalace 中 **Goals:** - Minimize information loss, maximize recoverability, without adding conversation burden - Manage conversations like a project manager — each project independently recorded with all details preserved - Switch between projects freely without carrying noise or pollution from other projects - Structured anchors: retrieve any information by project, no need to search through entire history - Significantly reduce Memory footprint — STATUS.md is far smaller than full conversation history - Full conversations recommended in MemPalace ## 架构原则 | 层级 | 文件 | 职责 | |------|------|------| | **即时记录** | `projects/{name}/STATUS.md` | 对话中即时写入重要决策/需求/完成节点 | | **按需状态同步** | `memory/pm-checkpoint.json` | session 内检查新对话，发现新话题 | | **智能恢复** | `HEARTBEAT.md` 第 5 项 | 全局检查，作为最后一道防线 | | **全局记忆** | `MEMORY.md` / `memory/*.md` | 用户偏好、跨项目经验（不含项目进度） | ## 与 Auto-Coding v3 集成 当使用 `auto-coding-v3` 进行代码开发时，该系统会在 `workspace/projects/{project_name}/status/` 下生成详细的工程状态文件。 * `STATUS.md` 负责 **宏观进度**（Todo, Next Step, Decision）。 * `status/` 目录负责 **微观工程细节**（Scratchpad, Logs）。 ## 核心原则 1. **物理隔离**：每个项目拥有独立的 `STATUS.md`，绝不混用。 2. **状态显式化**：没有记录在文件里的事，就是没发生。 3. **对话中即时记录**：重要决策/需求/完成节点即时写入，不堆积到最后。⚠️ 需用户确认后写入。 4. **Session 状态同步（opt-in）**：用户显式触发后才注册定期状态同步，不自动激活。 5. **分级管理**：轻重有别，杀鸡不用牛刀。 6. **意图优先（显式触发）**：根据对话上下文推断意图，但所有操作需用户确认后执行。 7. **写入安全**：写入前必须先 read 最新内容，合并后再 write。⚠️ TOCTOU 限制：读-写之间内容可能被其他 session 修改，这不是真正的写入安全，只是降低冲突概率。 ## 目录结构规范 ```text workspace/projects/ ├── index.md # 📇 项目索引（自动维护，必须含一句话概述） ├── {project-name}/ │ ├── STATUS.md # 🧠 核心记忆：进度、待办、关键决策（每次对话必读/必写） │ ├── docs/ # 方案、报告、调研数据 │ ├── src/ # 代码、产出物 │ └── status/ # auto-coding v3 微观工程文件（可选） └── _archive/ # 📦 已归档项目 └── {project-name}/ └── STATUS.md # 保留历史记录 ``` ## 📇 项目索引：`projects/index.md` ```markdown # 项目索引 > 自动维护，按最后活跃时间倒序 | 项目 | 目录 | 最后更新 | 状态 | 备注 | |------|------|---------|------|------| | english-reader | english-reader/ | 2026-04-20 | 活跃中 | 英语学习工具 | ``` **维护规则：** - **首次使用**：如不存在，自动创建并写入表头 - 新建项目时：添加到顶部 - 恢复项目时：更新"最后更新"时间，移到顶部 - 暂停项目时：更新"状态"为"已暂停"并记录暂停原因 - 归档项目时：移到 `_archive/`，index.md 标记为"已归档" - **索引自愈**：发现项目目录存在但 index 中没有时，自动补录 - **必须包含一句话概述**，格式为「动词 + 对象 + 目的」 --- ## 分级 STATUS.md 模板 > ⚠️ 以下为简化示意，实际使用时应先从 [REDACTED_SECRET] 目录读取对应完整模板文件。 ### A) 完整模板（>3天项目 / 多阶段任务 / 跨团队协作） ```markdown # 项目名称：[Name] > 最后更新：[Date] | Git: [commit hash, 如果有] | PM: v2.5 ## 🎯 核心目标 [一句话描述项目终极目标] ## 📍 当前状态 [当前处于什么阶段，刚完成了什么] ## 📋 待办事项 (Todo) - [x] 已完成 1 - [ ] 待办 2 (优先级高) - [ ] 待办 3 ## 🔑 关键上下文/决策 - 决策 1 (为什么这么做) - 约束 1 (用户明确要求的事项) - 链接 (相关 URL/文件路径) ## 🛑 暂停原因/遗留问题 [如果项目暂停，记录卡点或下次需要确认的问题] ``` ### B) 轻量模板（<3天的单任务 / 调研/分析类临时任务） ```markdown # 项目名称：[Name] > 最后更新：[Date] | PM: v2.5 ## 📍 当前状态 [一句话描述当前进度] ## 🔑 决策（可选） [如果做了重要选择，记录原因] ## 📋 下一步 - [ ] 接下来要做什么 ``` ### 模板来源与选择规则 **模板文件位置**：[REDACTED_SECRET] 目录下的 STATUS-A.md / STATUS-B.md（不是内联伪代码）。 **选择规则**： | 场景 | 模板 | |------|------| | 3天以上的多阶段项目 | A 完整模板 | | 单任务（如"帮我把这个接口重构一下"） | B 轻量模板 | | 调研/分析类临时任务 | B 轻量模板 | | 需要多人协作或长期维护 | A 完整模板 | | 不确定 | 先用 B，后续发现需要再升级到 A | --- ## 操作工作流 (Workflow) ### 1. 意图识别（自动激活） **穷举触发场景：** #### 显式命令类（直接触发） - **新建**：新建项目、建个项目、帮我建一个、创建一个项目、开个新项目、搞个项目、我们来做XX、开始做XX - **恢复**：回到XX、继续XX、接着来、恢复到、回到项目、继续做 - **保存**：保存状态、先停一下、暂停、我先走了、去做别的、歇会 - **查看**：有哪些项目、项目列表、看看进度、看看XX进度、项目状态、目前在做啥 - **切换**：切换到、不管这个了先搞YY、换个项目、先放一下 #### 隐含指代类（根据上下文推断） - **上次类**：上次那个、上次说的、之前那个、之前聊的、上次说的方案、上次的方案、我们之前讨论的 - **继续类**：接着来、继续吧、接着上次说、然后呢、下一步呢、继续做、那个做完了吗、那个项目怎么样了 - **关联类**：跟之前说的一样、按我们之前讨论的、还是之前的方案、跟上次一样 #### 重要性标记类（应即时记录到 STATUS.md） - 这个很重要、记住这个、别忘了、记一下、这个值得记录、这个方案要记下来、把刚才说的记到项目里、刚才聊的东西挺重要的 #### 话题切换类（应保存当前状态） - 换个话题、先聊点别的、先不说这个了、我们今天先这样、明天继续、下周再说、改天再聊 #### 完成信号类（应更新状态） - 搞定了、做完了、这个问题解决了、这个方案定了、就按这个来、确认了 **识别优先级**： 1. 明确提到项目名 → 直接匹配 index.md 2. 模糊指代 → 根据 index.md 中最近活跃的项目推断 3. 无法确定 → 展示最近 2-3 个活跃项目让用户选择，不要盲目猜测 ### 2. 初始化新项目 (Start New) **触发条件**： 1. **显式触发**：用户明确说"新建项目"/"帮我建一个"/"一个话题"/"记录一下" 2. **自动检测触发（P1 新增）**： - 连续 3 轮对话收敛到同一主题 - 内容涉及具体问题/需求/决策讨论（非闲聊） - 检查 index.md 无相关项目 - 主动询问用户："这个话题我们聊了 3 轮了，要不要建个项目记录一下？" **门槛判断（避免过度工程）**： - **建项目**：超过几句实质讨论、有具体问题/需求/决策、可能后续会继续推进（如"调研某系统"、"帮我想个方案"、"评估某技术"） - **不建项目**：随口一问、一句话话题、单纯信息查询 → 写入当日记忆即可 **动作**： 1. **先扫描 `index.md`** — 检查是否有相关项目可以合并或关联 2. 有关联 → 合并到已有项目，告知用户"这个话题我已归入 XX 项目" 3. 无关联 → 继续以下步骤： 1. **先向用户确认**："这是个新话题，我建个项目记录一下？概述是「{一句话概述}」" 2. 用户同意后再创建 3. 目录名用 kebab-case：`cmra-geo` 4. 创建目录 `workspace/projects/{name}/` 5. **先从 [REDACTED_SECRET] 目录读取对应模板**，根据复杂度选择 A/B 模板，创建 `STATUS.md` 6. **确保 `index.md` 存在**：如不存在，询问用户"是否创建项目索引文件？"，用户同意后创建并写入表头 7. 一句话概述生成规则：从对话核心意图提炼，格式为「动词 + 对象 + 目的」 8. 更新 `projects/index.md`（添加到顶部） 4. **注册 session 状态同步**（见第 8 节） ### 3. 恢复旧项目 (Resume) **动作**： 1. **模糊匹配**：用户说的项目名可能不精确，先在 index.md 中查找 2. **强制读取**：`read(workspace/projects/{name}/STATUS.md)` 3. **摘要同步**："📖 已恢复 `{name}` 上下文。当前：[简述进度]。待办：[列出]。继续哪一步？" 4. **更新 index.md**：将该项目移到最后活跃时间顶部 5. **如果 STATUS.md 不存在或为空** → 检查 `memory/` 目录下是否有相关日期的记忆文件，尝试恢复上下文；无法恢复时如实告知用户 6. **注册 session 状态同步**（见第 8 节） ### 4. 🔄 对话中即时记录（需用户确认） **这是核心机制。** 不是等到用户说"保存状态"才记录，而是在对话中**即时提议写入**。 **触发时机（满足任一即提议写入）**： - 用户提出了新的需求或约束 - 做出了技术/方案决策 - 完成了一个子任务 - 用户明确要求记住某事 - 话题发生实质性切换（从项目 A 切换到项目 B） **写入策略（轻量，不拖慢对话）**： - 提议更新 STATUS.md 的"当前状态"和"待办"模块 - 用 1-2 句话记录结论，不写过程流水账 - **必须获得用户确认后才写入**（如"记录到项目状态？"） - 如果当前对话没有关联的项目 → 触发"新项目创建"流程（第 2 节） **不写入的情况**： - 只是闲聊/寒暄 - 正在讨论中还没确定方案 - 同一个任务的中间尝试（最终用的是最初方案） ### 5. 暂停/切换 (Pause/Switch) **输入**：`先停一下` / `我去忙别的` / `切换到 XX` **动作**： 1. 总结当前对话的结论 2. 更新当前项目的 `STATUS.md` 3. 更新 `index.md`：状态改为"已暂停"，记录暂停原因 4. 如果是切换，恢复目标项目 5. **回复用户**："✅ 状态已保存。下次说'回到 [Name]'即可无缝接续。" ### 6. Session 结束收尾 **当检测到以下信号时**（用户说"我先走了"、"明天继续"、长时间无新消息、或状态恢复检测到上次对话已超过 2 小时）： 1. 回顾最近一轮对话的内容 2. 提取未完成的任务和关键决策 3. 更新当前项目的 STATUS.md 4. 写入当日记忆 `memory/YYYY-MM-DD.md`（一句话摘要 + 引用 STATUS.md） 5. 如果涉及新话题但未建项目 → 记录到 HEARTBEAT 待处理队列 ### 7. 项目清理与归档 (Cleanup & Archive) **状态恢复期间定期检查**： - 超过 30 天未活跃 → 标记为"可能归档"，询问用户 - 已完成 → 状态改为"已完成" - 已废弃 → 状态改为"已废弃" **归档操作**： 1. 移动到 `projects/_archive/{name}/` 2. 保留 STATUS.md 作为历史记录 3. index.md 标记为"已归档"并移到底部 --- ### 8. 🔄 Session 内状态同步（opt-in，需显式激活） ### 这是什么？ 当用户显式请求（如"开启状态同步"、"自动检查新对话"）时，在当前 session 里注册状态同步任务。**不会自动激活。** ### 为什么需要？ 用户不会每次都主动说"记一下"。状态同步解决了"你不说就不记"的问题——但必须由用户显式开启。 ### 如何工作？ #### 注册流程 用户显式请求时，执行以下操作： 1. 创建/更新 checkpoint 文件 `memory/pm-checkpoint.json`： ```json { "active": true, "sessionKey": "当前session的key或label", "lastCheckedMsgId": "当前最后一条消息的ID", "lastCheckTime": "2026-04-25T11:09:00+08:00", "intervalMinutes": 60, "activeProject": "当前关联的项目名（可选）", "expiresAt": "2026-04-26T00:00:00+08:00" } ``` 2. 创建一个 cron 任务，每 60 分钟执行一次： - 读取 `pm-checkpoint.json` 获取上次检查位置 - 读取 checkpoint 之后新增的对话内容 - 分析新内容：是否有新话题、新决策、新需求？ - 对比 index.md：有关联 → 更新 STATUS.md；无关联 → 标记待确认 - 更新 checkpoint 的 `lastCheckedMsgId` 和 `lastCheckTime` #### 检查内容分析规则 每次只读取 checkpoint 之后的新增对话，分析以下信号： | 信号类型 | 示例 | 动作 | |---------|------|------| | 新需求 | "我们需要增加XX功能" | 更新 STATUS.md 待办 | | 新决策 | "用 Redis 不用 Memcached" | 更新 STATUS.md 决策 | | 完成节点 | "这个模块搞定了" | 更新 STATUS.md 进度 | | 新话题 | 突然讨论完全不同的话题（如从技术跳到市场调研） | 扫描 index.md 判断是否建项目 | | 暂停信号 | "先停一下"、"明天继续" | 触发 Session 结束收尾（第 6 节） | #### 门槛判断 - **实质内容**（有具体问题/需求/决策）→ 记录到 STATUS.md 或创建新项目 - **闲聊/寒暄** → 跳过 - **一句话话题** → 跳过 #### 过期与清理 - checkpoint 文件设置过期时间（默认 24 小时） - 过期后自动停止状态同步 - 用户说"不用检查了"时立即停止 - session 断开后下次激活时自动重新注册 #### Token 消耗控制 - 每次只读新增对话，不回顾全部历史 - checkpoint 用 message ID 定位，精确到单条消息 - 预计每次检查消耗 500-2000 token（60 分钟约 10-30 条新消息） --- ### 9. 📝 项目对话日志（v2.5 新增，opt-in） ### 为什么需要 项目相关的讨论分散在历史会话中，想回顾时找不到。对话日志把项目相关的关键讨论打包成独立文件，随时可以回顾。 ### 触发时机（需用户显式开启） - **项目新建时**：询问用户"是否开启对话日志？"，用户同意后初始化日志条目 - **每次更新 STATUS.md 时**：如对话日志已开启，自动追加本次会话的关键内容 - **项目归档时**：如对话日志已开启，打包整个项目的完整对话历史 ### 存储结构 **两层存储**：摘要索引存本地文件，完整对话推荐存 MemPalace。 #### 本地摘要索引 写入 `memory/project_log_{project_name}.md`： ```markdown # 📝 项目对话日志：{project_name} > 归档时间：{YYYY-MM-DD HH:MM} > 关联项目：projects/{project_name}/STATUS.md ## 项目概况 [核心目标一句话摘要] ## 关键决策时间线 | 时间 | 决策 | 上下文 | |------|------|--------| | YYYY-MM-DD | 决定采用方案A而不是B | 性能优先级高于成本 | ## 踩过的坑 [记录所有尝试过但失败的方案、原因、教训] ## 历史会话快照 > session_key: abc123 | 时间: YYYY-MM-DD [本次会话的关键讨论摘要，不超过200字] --- > session_key: def456 | 时间: YYYY-MM-DD [本次会话的关键讨论摘要] ``` #### 完整对话归档（推荐） > **推荐**：将完整对话原文保存到 MemPalace（wing={project_name}, room=conversations），本地只保留摘要索引。MemPalace 支持语义搜索，可跨项目检索历史讨论。 ### 归档策略 - **只记结论，不记流水**：超过200字的讨论压缩成摘要 - **决策必记**：所有「就这么定了」「就用方案A」的时刻必须记录 - **踩坑必记**：试过但失败的方案，防止重蹈覆辙 - **自动关联**：session_key 链接到完整会话，方便回溯 ### 检索方式 - 按文件名：`memory/project_log_{name}.md` - 按关键词搜索：记忆文件的内容可被全局搜索命中 --- ### 10. 📅 甘特图自动生成（v2.5 新增） ### 数据流关系 **唯一数据源** = STATUS.md 中的 `## 📅 Timeline` YAML 块 **输出文件** = `projects/{name}/GANTT.md` 更新里程碑时：先改 STATUS.md Timeline → 再重新渲染 GANTT.md。不要直接编辑 GANTT.md，否则下次渲染会被覆盖。 ### 触发方式 - **显式命令**："生成甘特图"、"看看时间线"、"项目进度图" - **建议触发**：每次更新 STATUS.md 的 milestones 后，应该重新渲染 Gantt ### 渲染算法（自然语言描述，按此逻辑执行） **第一步：读取项目时间配置** 遍历所有项目目录，逐个读取 STATUS.md 中的 timeline 配置，提取每个项目的： - 开始日期 start_date - 预计完成日期 estimated_end - 所有里程碑列表（含名称、日期、状态） 统计已完成里程碑数和总里程碑数，计算进度百分比 = 已完成 / 总数 × 100 **第二步：渲染 ASCII 甘特图** 输出格式如下： ``` 📅 项目甘特图 | {当前年} 年 {当前月} 月 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ {项目名称} [{进度条}] {进度百分比}% ├─ {YYYY-MM-DD} ✅ {已完成的里程碑名称} ├─ {YYYY-MM-DD} 🔄 {进行中的里程碑名称} └─ {YYYY-MM-DD} ⏳ {待完成的里程碑名称} ``` **进度条渲染规则**： - 总长度固定 20 个字符 - █ 表示已完成部分，░ 表示未完成部分 - 0% 进度：20 个 ░，100% 进度：20 个 █ - 50% 进度：10 个 █ + 10 个 ░ **第三步：资源冲突检测** - 扫描所有里程碑的日期，如果同一天有 ≥3 个项目有里程碑，显示 ⚠️ 资源冲突预警 - 统计方式：把所有里程碑的日期去重计数，超过阈值即触发 - ⚙️ 阈值说明：默认值 3，对个人 agent 可能敏感，后续支持通过配置调整 **第四步：延期预警计算** - 🔴 已延期：当前日期 > estimated_end，且进度 < 100% - 🟡 延期风险：当前日期距 estimated_end < 3 天，且进度 < 70% **第五步：输出到项目目录** - 自动创建或更新每个项目的 `projects/{name}/GANTT.md` - 同时在 `projects/index.md` 顶部生成全局汇总甘特图 --- ### 11. ⚠️ 项目风险自动识别（v2.5 新增，opt-in） ### 触发方式 - **显式命令**："风险扫描"、"看看有什么风险"、"检查项目状态" - **定时检查**：用户显式请求后才启用（如"每天检查一次"） ### 风险规则引擎（严格按此逻辑执行） | 风险项 | 触发条件 | 等级 | 所需字段 | | --- | --- | --- | --- | | **静默风险** | 最后更新日期距今 >14 天 | 🔴 高 | last_updated | | **无里程碑风险** | 项目启动 >7 天，但无任何里程碑记录 | 🔴 高 | start_date, milestones | | **单点依赖风险** | 有 >3 个项目声明依赖同一个 skill 或外部项目 | 🟡 中 | dependencies | | **估时不准风险** | 连续 2 个已完成项目的估时偏差 >50% | 🟡 中 | estimated_hours, actual_hours | | **范围蔓延风险** | 里程碑总数比最初增加 >50% 后又新增 | 🟡 中 | milestones | | **依赖循环风险** | A 依赖 B 且 B 依赖 A（DAG 环路检测） | 🔴 高 | dependencies | | **延期风险** | 当前距 estimated_end <3 天，且进度 <70% | 🟡 中 | estimated_end, milestones | | **已延期** | 当前日期 > estimated_end 且进度 <100% | 🔴 高 | estimated_end, milestones | ### 特殊规则说明 - **估时不准风险**：需要从 projects/ 目录下所有已完成项目（actual_end 非 null）中读取 estimated_hours 和 actual_hours 字段计算偏差。项目完成时**必须**回填 actual_hours，否则此规则无法触发。 ### 扫描算法（自然语言描述，按此逻辑执行） **第一步：全量扫描所有项目目录** 遍历 `projects/` 下每个项目，读取 STATUS.md，提取以下字段：timeline、dependencies、last_updated、estimated_hours、actual_hours。 **第二步：逐个项目检查风险** 按上述8项规则逐一检查，判断每个项目的风险项。 **第三步：按风险等级分组输出** 输出格式如下： ``` ⚠️ 项目风险扫描报告 | {YYYY-MM-DD} ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🔴 高风险 ({总数} 项) ────────────────────────────────────────────────── • [{项目名}] 静默风险 - 最后更新 {天数} 天前 建议: ping 一下确认项目状态，或归档 ... 🟡 中风险 ({总数} 项) ────────────────────────────────────────────────── • [{项目名}] 单点依赖 - 依赖 {skill} 的项目共 {n} 个 建议: 评估是否需要技术储备方案 🟢 健康 ({总数} 项) ────────────────────────────────────────────────── • 按时更新 + 有里程碑 + 无单点依赖 + 无延期 ``` **第四步：自动写入风险日志** - 所有识别出的风险自动写入对应项目 STATUS.md 的 `⚠️ Risk Log` 章节 - 高风险项目同时在 `index.md` 标记 🔴 前缀 ### 风险 Mitigation 建议 - **静默风险**：归档，或设一个唤醒日期 - **无里程碑风险**：花 5 分钟拆 2-3 个阶段性节点 - **单点依赖风险**：准备替代方案，或做技术储备 - **估时不准风险**：下一个项目乘 1.5 倍安全系数 --- ## 与日常记忆的关系 | 信息类型 | 存放位置 | 示例 / 说明 | |---------|---------|------------| | 用户偏好 | `MEMORY.md` | "不喜欢废话，只要结论" | | 跨项目经验 | `MEMORY.md` | "上次用 X 方案踩了 Y 坑" | | 每日工作流水 | `memory/YYYY-MM-DD.md` | "今天推进了 CMRA 认证模块，详情见 STATUS.md" | | 项目进度 | `projects/{name}/STATUS.md` | "CMRA：认证模块完成，开始做权限" | | 甘特图数据 | `projects/{name}/GANTT.md` | STATUS.md Timeline YAML 的渲染输出 | | 项目对话日志 | `memory/project_log_{name}.md` | 关键决策和踩坑记录 | | 工时追踪 | `projects/{name}/STATUS.md` | 风险引擎「估时不准」规则依赖此数据 | | 技术细节 | `projects/{name}/status/` | 测试日志、设计草稿 | | 检查点 | `memory/pm-checkpoint.json` | 状态同步的位置标记 | **原则**： - 项目进度从 STATUS.md 读，经验教训沉淀到 MEMORY.md，两者不交叉。 - `memory/YYYY-MM-DD.md` 中的项目记录**只写一句话摘要 + 引用 STATUS.md**，不重复细节。 --- ## Git 关联（可选） 如果 `git rev-parse --is-inside-work-tree` 在项目目录下执行成功（返回 0）： - STATUS.md 头部记录 `Git: [最近 commit hash]` - 更新状态时自动执行 `git log --oneline -1` 获取最新 commit --- ## 严格约束 1. **Memory 禁令**：绝不要用 `memory` 工具或 `MEMORY.md` 记录项目进度。项目进度只存在于 `STATUS.md`。 2. **读取优先**：回复项目相关问题前，**必须先读取** `STATUS.md`。不要依赖上一轮对话的记忆。 3. **极简原则**：STATUS.md 只记"结论"和"下一步"，不记过程流水账。 4. **模板降级**：小任务用轻量模板，别搞过度工程化。 5. **模糊匹配（显式确认）**：用户说"上次那个"、"接着来"时，推断对应项目并展示给用户确认；无法确定时展示最近项目让用户选。 6. **写入安全**：写 STATUS.md 前先 read 最新内容，合并后再 write。⚠️ TOCTOU 限制：读-写之间内容可能被其他 session 修改，这不是真正的写入安全，只是降低冲突概率。 7. **index.md 按需创建**：首次使用时如不存在，询问用户是否创建；发现项目目录存在但 index 中没有时，询问用户是否补录。 8. **对话中即时记录（需确认）**：重要决策/需求/完成节点提议写入，但必须获得用户确认后才执行（第 4 节）。 9. **Session 结束收尾**：检测到对话结束时，提议做状态落盘，用户确认后执行（第 6 节）。 10. **新项目必须确认**：创建新项目前必须向用户确认（第 2 节）。 11. **状态同步 opt-in**：Session 状态同步需用户显式开启（第 8 节）。 12. **风险扫描 opt-in**：风险引擎需用户显式请求（第 11 节）。 13. **对话日志 opt-in**：对话日志需用户显式开启（第 9 节）。 --- ### 触发词 `/project` | `新建项目` | `项目列表` | `记录一下` | `回到项目` | `继续项目` | `上次那个` | `甘特图` | `时间线` | `进度图` --- 📋 **版本历史**：详见 `CHANGELOG.md` 🔒 **安全说明**：详见 [SECURITY.md](./SECURITY.md)


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)