- Anchor file becomes temp/.active_project.<host pid>: dies with the GA process, so closing GA auto-deactivates; re-activation requires user confirmation per SOP - Multiple GA instances each keep their own active project, no cross-talk - Startup sweep removes only legacy unsuffixed anchors and own-pid leftovers (pid reuse); anchors of other pids are never touched — deliberately no liveness probe, because os.kill(pid, 0) on Windows terminates the process
2.1 KiB
2.1 KiB
Project Mode SOP
定义
Project Mode = 跨会话保持项目认知的工作模式
载体:project_memory.md + 项目私域目录。两层注入:每轮自动注入的只有 L1(规则+记忆文件指针),L2(project_memory.md 全文)不注入——任务涉及项目上下文时自己用 file 工具去读,无关则不读
进入
锚 = ./.active_project.<宿主pid>,只对当前 GA 进程有效:GA 关闭即自动失活;多开 GA 各自激活不同项目,互不干扰。(下文路径一律以 cwd 为基准,cwd 即 GA 的 temp 目录;禁写 temp/xxx 前缀,会嵌套出 temp/temp)
- 用户只说「进入项目模式」未指明项目:列出
./projects/下各项目(名字 + memory 行数 + 最后修改时间),ask_user 让用户选定后再继续 - 用户明确说「进入/切换到 <项目名> 项目」:视为已确认,直接执行:
- 建目录
./projects/<项目名>/,无则创建project_memory.md(空文件即可) - 写文件锚,必须用 code_run(锚文件名含宿主 pid,ppid 即 GA 宿主进程):
import os; open(f'./.active_project.{os.getppid()}', 'w').write('<项目名>') - 回读
project_memory.md全文,向用户复述项目现状
期间纪律
- 项目文件(todo、草稿、产物)一律放
./projects/<项目名>/,禁止丢 temp 根目录 - 入库判据(唯一标准):每得到一条信息,自问「记忆归零、重新接手本项目的我,缺了这条会不会重复付出认知代价——再踩一次坑、再摸索一次、再问一次用户?」会则立即追加进
project_memory.md,不会则不记 - 一条一句,写成未来的自己能直接复用的形式;已有条目增量更新,不整篇重写
离开
用户表示「离开项目模式」时:删除 ./.active_project.<宿主pid>(仅关闭激活态,项目目录与 project_memory.md 原样保留)
切换到另一项目时无需先离开,直接按「进入」覆盖文件锚即可
GA 关闭不需任何操作:锚随进程消亡自动失效,残留文件由插件下次启动时清扫