项目上下文隔离与状态管理系统 v2.7.0。核心解决:对话中遗忘、跨天上下文丢失、新话题漏记录。新增:甘特图自动生成、项目风险自动识别、依赖关系管理。触发词: /project, 新建项目, 回到项目, 记录项目, 继续项目, 项目列表, 甘特图
---
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 模板
> ⚠️ 以下为简化示意,实际使用时应先从 `skills/project-manager/templates/` 目录读取对应完整模板文件。
### 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
## 📍 当前状态
[一句话描述当前进度]
## 🔑 决策(可选)
[如果做了重要选择,记录原因]
## 📋 下一步
- [ ] 接下来要做什么
```
### 模板来源与选择规则
**模板文件位置**:`skills/project-manager/templates/` 目录下的 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. **先从 `skills/project-manager/templates/` 目录读取对应模板**,根据复杂度选择 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)
don't have the plugin yet? install it then click "run inline in claude" again.