|
| 1 | +--- |
| 2 | +title: "feat: 新增项目记忆 CLI" |
| 3 | +type: "feat" |
| 4 | +date: "2026-06-10" |
| 5 | +--- |
| 6 | + |
| 7 | +# feat: 新增项目记忆 CLI |
| 8 | + |
| 9 | +## 摘要 |
| 10 | + |
| 11 | +新增轻量 `aisee memory` 命令组,用于项目本地长期记忆;更新 hooks,让 agent 通过受控发现和检索使用 memory,而不是在会话启动时注入大量上下文;新增 `aisee:memory` skill;并将 CLI / PyPI 包版本升级到 `0.9.0`。 |
| 12 | + |
| 13 | +本设计保持项目记忆与 OpenSpec 事实、`source-map.md` 路由、context pack 和团队知识 guardrails 的边界清晰。 |
| 14 | + |
| 15 | +--- |
| 16 | + |
| 17 | +## 问题背景 |
| 18 | + |
| 19 | +仓库已经有 `aisee/memory/` 模板和 hook 感知能力,但 agent 目前没有稳定 CLI 入口来发现、搜索或写入项目记忆。现有 `session-inject.js` 可以提示 memory 文件位置,但不能做任务相关的受控检索;如果 agent 直接读取文件,容易注入过期、无关或过量上下文。 |
| 20 | + |
| 21 | +新的模型应让 agent 通过 `aisee memory inspect` 发现 memory 能力,通过 `aisee memory search` 获取少量相关记忆,并且只在用户明确确认后写入记忆。`aisee doctor` 不应变成命令索引;它可以继续保留已有 layout 检查,而 memory 能力发现应归属 `aisee memory`。 |
| 22 | + |
| 23 | +--- |
| 24 | + |
| 25 | +## 需求 |
| 26 | + |
| 27 | +- R1. 新增顶层 `aisee memory` 命令组,提供 JSON-first 的 `inspect`、`list`、`search`、`add` 和索引维护能力。 |
| 28 | +- R2. 项目记忆长期存放在 canonical `aisee/memory/`;legacy `.memory/` 只允许 fallback 读取;新写入必须使用 canonical 路径。 |
| 29 | +- R3. 支持现有记忆类型 `arch`、`pref`、`ctx`、`stack`,并补齐 status、priority、summary、source refs、updated time 等检索所需 metadata。 |
| 30 | +- R4. 默认读取必须保持受控:不做全树注入,不默认返回正文,不默认返回 stale/deprecated 条目。 |
| 31 | +- R5. 写入 memory 必须来自用户明确意图,并在 JSON 中报告 `meta.writes: true`;hooks 永远不能自动写 memory。 |
| 32 | +- R6. Hook 只能提示 `aisee memory inspect/search` 入口,并可选注入极少量高优先级摘要;不能注入完整 index 或正文。 |
| 33 | +- R7. `aisee context pack` 只能通过显式 flag 包含项目记忆;不得把 memory 混入 OpenSpec parsed facts。 |
| 34 | +- R8. 新增 `aisee:memory` skill,指导 agent 何时使用 memory CLI,以及何时把候选生成交回 `aisee:reflect`。 |
| 35 | +- R9. 更新 `aisee:init`、README、架构文档、兼容性策略、workflow 文档、release notes 和 skill taxonomy,说明新的 memory 边界。 |
| 36 | +- R10. 将 package、CLI、marketplace 和 plugin metadata 版本从 `0.8.0` 升级到 `0.9.0`,因为 `aisee memory` 是新的公开 CLI 面。 |
| 37 | + |
| 38 | +--- |
| 39 | + |
| 40 | +## 关键技术决策 |
| 41 | + |
| 42 | +- KTD1. `aisee memory inspect` 负责 memory 命令发现。`aisee doctor --json` 不新增详细 memory section,只继续通过已有 `aisee.layout` 报告 memory 路径状态。 |
| 43 | +- KTD2. Project memory 是项目本地指导信息,不是事实源。OpenSpec artifacts、baseline specs、tasks 和 `source-map.md` 与 memory 冲突时优先级更高。 |
| 44 | +- KTD3. 新 memory 文件采用紧凑 metadata contract。CLI 新写入的 memory 使用 YAML frontmatter + Markdown 正文;解析器对当前模板中的粗体 metadata 格式保持只读兼容。 |
| 45 | +- KTD4. Search 先读取 index metadata,再按需读取具体文件。默认结果只包含 `id`、`type`、`title`、`summary`、`path`、`priority`、`status`、`source_refs`、`updated_at`;正文必须通过 `--include-body` 显式请求。 |
| 46 | +- KTD5. `add` 命令保持窄接口。它接收 `--type`、`--title`、`--summary`、`--body`、可选 `--priority` 和可重复 `--source-ref`,自动生成安全 slug,并同步更新 `aisee/memory/index.md`。 |
| 47 | +- KTD6. Hooks 保持只读。`SessionStart` 只注入入口提示和最多少量高优先级摘要;`UserPromptSubmit` 可在识别到 memory 写入意图时提示使用 `aisee:memory` 或 `aisee:reflect`,但不能改文件。 |
| 48 | +- KTD7. Context pack memory 必须显式启用。新增 `--project-memory` flag,而不是默认包含;结果放在 `project_memory` 或 `guardrails.project_memory` 等独立字段,不放入 `facts.parsed`。 |
| 49 | +- KTD8. 版本目标为 `0.9.0`。根据 `docs/compatibility-policy.md`,新增公开命令组和 JSON contract 属于 minor release。 |
| 50 | + |
| 51 | +--- |
| 52 | + |
| 53 | +## 高层技术设计 |
| 54 | + |
| 55 | +```mermaid |
| 56 | +flowchart TB |
| 57 | + User["用户 / Agent Prompt"] --> Skill["aisee:memory skill"] |
| 58 | + Hook["SessionStart / UserPromptSubmit hooks"] --> Hint["受控 inspect/search 提示"] |
| 59 | + Skill --> CLI["aisee memory CLI"] |
| 60 | + CLI --> Index["aisee/memory/index.md"] |
| 61 | + CLI --> Files["aisee/memory/{arch,pref,ctx,stack}/*.md"] |
| 62 | + CLI --> Cache["aisee/cache/memory-index.json"] |
| 63 | + CLI --> Results["inspect/list/search JSON"] |
| 64 | + CLI --> Add["add 写入 canonical memory"] |
| 65 | + Add --> Index |
| 66 | + Add --> Files |
| 67 | + Context["aisee context pack --project-memory"] --> CLI |
| 68 | + Results --> Agent["Agent 使用受控指导"] |
| 69 | + Files -. "不是 OpenSpec 事实" .-> Boundary["OpenSpec/source-map/tasks 仍权威"] |
| 70 | +``` |
| 71 | + |
| 72 | +CLI 必须把 `aisee/cache/memory-index.json` 当作可删除、可重建 cache。长期 memory 事实来源是 canonical `aisee/memory/` 树和 `index.md`。 |
| 73 | + |
| 74 | +--- |
| 75 | + |
| 76 | +## 范围边界 |
| 77 | + |
| 78 | +本次包含: |
| 79 | + |
| 80 | +- 新增公开 `aisee memory` 命令组。 |
| 81 | +- 定义 canonical memory metadata contract 和解析器。 |
| 82 | +- 实现受控搜索和可选 cache rebuild。 |
| 83 | +- 更新只读 hook 行为。 |
| 84 | +- 通过显式 flag 让 context pack 可选包含项目记忆。 |
| 85 | +- 新增 `aisee:memory` skill 和相关文档 / 测试。 |
| 86 | +- 升级版本到 `0.9.0`。 |
| 87 | + |
| 88 | +本次不包含: |
| 89 | + |
| 90 | +- Hook 自动写入 memory。 |
| 91 | +- 全局用户 memory、home 目录 memory 或跨项目 memory。 |
| 92 | +- Vector search、semantic rerank、MCP service 或后台 daemon。 |
| 93 | +- 替代 `aisee:reflect`;reflect 仍负责候选生成和复盘。 |
| 94 | +- 把 OpenSpec facts、tasks 或 source-map 责任迁移到 memory。 |
| 95 | +- 给 `aisee doctor --json` 增加详细 memory 命令发现能力。 |
| 96 | + |
| 97 | +延后事项: |
| 98 | + |
| 99 | +- 复杂 memory 冲突解决 UI。 |
| 100 | +- 自动 stale-entry 过期任务。 |
| 101 | +- 当前 Codex hook target 之外的跨 agent hook 支持。 |
| 102 | +- 若 lexical search 不够,再考虑可选 semantic search。 |
| 103 | + |
| 104 | +--- |
| 105 | + |
| 106 | +## 系统影响 |
| 107 | + |
| 108 | +本计划新增公开 CLI 面、新公开 skill、hook 输出变化和 package 版本变化。影响 CLI 消费方、marketplace plugin 用户、项目初始化产物和 agent 会话启动上下文。虽然大部分行为是 additive,但仍应按兼容性变更处理。 |
| 109 | + |
| 110 | +--- |
| 111 | + |
| 112 | +## 实施单元 |
| 113 | + |
| 114 | +### U1. Memory 数据模型与解析器 |
| 115 | + |
| 116 | +- **目标:** 新增内部 memory 解析器和 metadata 规范化层,供所有 memory 命令复用。 |
| 117 | +- **需求:** R2、R3、R4。 |
| 118 | +- **依赖:** 无。 |
| 119 | +- **文件:** `src/aisee_cli/memory.py`、`src/aisee_cli/paths.py`、`tests/test_memory_config.py`。 |
| 120 | +- **方案:** 定义可接受的 type、status、priority、source refs、summary limits,以及 canonical/legacy 路径解析。CLI 新写入文件使用 frontmatter;当前模板里的粗体 metadata 格式保持只读可解析。 |
| 121 | +- **参考模式:** `src/aisee_cli/knowledge.py` 的 JSON envelope 和 issue handling;`src/aisee_cli/paths.py` 的 canonical/legacy path policy。 |
| 122 | +- **测试场景:** |
| 123 | + - 缺少 `aisee/memory/` 时返回非阻断 missing 状态。 |
| 124 | + - canonical memory 与 legacy `.memory/` 同时存在时 canonical 优先。 |
| 125 | + - 只有 legacy `.memory/` 时可读取,但报告为 fallback。 |
| 126 | + - 非法 type、status、priority 或缺失 summary 产生 issues,不崩溃。 |
| 127 | + - deprecated 和 stale entries 能被解析,但默认搜索不返回。 |
| 128 | +- **验证:** Parser 返回稳定 normalized entries 和 issue summary,且不写文件。 |
| 129 | + |
| 130 | +### U2. 公开 `aisee memory` 命令组 |
| 131 | + |
| 132 | +- **目标:** 暴露 `inspect`、`list`、`search`、`add`、`update-index` 子命令。 |
| 133 | +- **需求:** R1、R4、R5。 |
| 134 | +- **依赖:** U1。 |
| 135 | +- **文件:** `src/aisee_cli/__main__.py`、`src/aisee_cli/memory.py`、`tests/test_memory_cli.py`、`tests/test_cli_command_surface.py`。 |
| 136 | +- **方案:** 新增顶层 `memory` parser。命令保持最小集:`inspect`、`list`、`search`、`add`、`update-index`。第一版不增加 `memory doctor`;`inspect` 负责报告结构问题和使用策略。 |
| 137 | +- **参考模式:** `knowledge inspect/query/index` 的只读命令形态,以及 `knowledge configure/promote-batch` 的写入 metadata。 |
| 138 | +- **测试场景:** |
| 139 | + - `aisee --help` 包含 `memory`。 |
| 140 | + - `aisee memory --help` 只列出支持的子命令。 |
| 141 | + - `inspect --json` 返回 root、policy、types、summary、limits 和 next commands。 |
| 142 | + - `list --json` 支持按 type/status/priority 过滤,并默认只返回 active entries。 |
| 143 | + - `search --query <text> --json` 只返回受控 metadata。 |
| 144 | + - `search --include-body --json` 返回有限 body excerpt。 |
| 145 | + - `add --type pref --title ... --summary ... --body ... --json` 写 canonical 文件并更新 `index.md`。 |
| 146 | + - `add` 拒绝 unsupported type 和 unsafe slug。 |
| 147 | + - `update-index --json` 重建 `aisee/memory/index.md` 或 cache,并明确 cache 不是事实源。 |
| 148 | +- **验证:** CLI JSON 可解析;`meta.command` 稳定;读命令报告 `writes: false`;写命令报告 `writes: true`。 |
| 149 | + |
| 150 | +### U3. 受控搜索、索引与冲突信号 |
| 151 | + |
| 152 | +- **目标:** 提供有用但不过量的 memory retrieval。 |
| 153 | +- **需求:** R4、R6。 |
| 154 | +- **依赖:** U1、U2。 |
| 155 | +- **文件:** `src/aisee_cli/memory.py`、`tests/test_memory_search.py`、`tests/test_memory_index.py`。 |
| 156 | +- **方案:** 对 title、summary、tags/source refs、type 和可用 body tokens 做 lexical matching。默认 `--limit` 保持较小,并设置硬上限。对同 type/title 或显式 replacement 关系检测冲突,返回 `memory_conflicts`,不要静默选择。 |
| 157 | +- **参考模式:** `src/aisee_cli/knowledge.py` 中的 `match_cards`、`tokens_for_card` 和 index cache 处理。 |
| 158 | +- **测试场景:** |
| 159 | + - Search 最多返回默认 limit。 |
| 160 | + - 对风格 / 流程类 prompt,`pref` entries 可获得更高排序。 |
| 161 | + - `stack` entries 只在 query 命中工具、依赖、命令或环境提示时出现。 |
| 162 | + - stale/deprecated entries 只有显式 include flags 时返回。 |
| 163 | + - 冲突 active entries 通过 `memory_conflicts` 暴露。 |
| 164 | + - 删除 cache 不影响 search 正确性。 |
| 165 | +- **验证:** Search 输出稳定、受控,且 cache 标记 `cache_is_fact_source: false`。 |
| 166 | + |
| 167 | +### U4. 通过 `--project-memory` 显式接入 context pack |
| 168 | + |
| 169 | +- **目标:** 为 change-scoped work 提供可选项目记忆增强,同时不污染 OpenSpec facts。 |
| 170 | +- **需求:** R7。 |
| 171 | +- **依赖:** U2、U3。 |
| 172 | +- **文件:** `src/aisee_cli/__main__.py`、`src/aisee_cli/context_pack.py`、`src/aisee_cli/memory.py`、`plugins/aisee-plugin/references/context-pack-contract.md`、`tests/test_context_pack.py`、`tests/test_memory_context_pack.py`。 |
| 173 | +- **方案:** 新增 `aisee context pack --project-memory`,基于 change id、target、artifact paths 和 source-map terms 调用 memory search。结果放到 `project_memory` 或 `guardrails.project_memory` 等独立字段;不改变 `facts.parsed` 和 `facts.derived`。 |
| 174 | +- **参考模式:** `src/aisee_cli/__main__.py` 中现有 `--knowledge` 路径和 `compact_knowledge_for_context_pack`。 |
| 175 | +- **测试场景:** |
| 176 | + - 不带 `--project-memory` 时 context pack 输出不变。 |
| 177 | + - 带 `--project-memory` 时包含受控 memory matches。 |
| 178 | + - memory conflicts 作为 guardrail warnings,而不是 blocker facts。 |
| 179 | + - 缺少 memory 时 pack 不失败,字段为空或省略。 |
| 180 | +- **验证:** 现有 context pack 测试保持稳定,新字段是 additive。 |
| 181 | + |
| 182 | +### U5. Hook 行为更新 |
| 183 | + |
| 184 | +- **目标:** 让项目 hooks 可以发现 memory,但避免过量注入。 |
| 185 | +- **需求:** R4、R6。 |
| 186 | +- **依赖:** U2、U3。 |
| 187 | +- **文件:** `plugins/aisee-plugin/skills/aisee-init/scripts/hooks/session-inject.js`、`plugins/aisee-plugin/skills/aisee-init/scripts/hooks/spec-drift.js`、`plugins/aisee-plugin/skills/aisee-init/SKILL.md`、`tests/test_hooks.py` 或新增 `tests/test_memory_hooks.py`。 |
| 188 | +- **方案:** 将当前 memory summary 文案替换为更小的提示:使用 `aisee memory inspect --json` 和 `aisee memory search --query "<task>" --json`。可选注入高优先级 title/summary,但必须限制数量和字符长度。`UserPromptSubmit` 可识别“记住 / 以后都 / project memory”等语言并提示使用 `aisee:memory` 或 `aisee:reflect`,但不能写文件。 |
| 189 | +- **参考模式:** 当前 `session-inject.js` 的大小限制和 `spec-drift.js` 的 additionalContext envelope。 |
| 190 | +- **测试场景:** |
| 191 | + - SessionStart 无 memory 时不输出 memory block。 |
| 192 | + - SessionStart 有 memory 时只输出入口提示和有限高优先级摘要。 |
| 193 | + - Hook 输出说明 project memory 是 guidance,不是 OpenSpec truth。 |
| 194 | + - UserPromptSubmit 的 memory-write 信号只产生 guidance。 |
| 195 | + - Hook 永远不调用写入命令。 |
| 196 | +- **验证:** Hook scripts 仍是合法 Node 程序,并输出受控 JSON hook payload。 |
| 197 | + |
| 198 | +### U6. `aisee:memory` skill 与 reflect/init 更新 |
| 199 | + |
| 200 | +- **目标:** 教 agent 如何使用 memory 命令,以及何时路由到 reflect。 |
| 201 | +- **需求:** R8、R9。 |
| 202 | +- **依赖:** U2。 |
| 203 | +- **文件:** `plugins/aisee-plugin/skills/aisee-memory/SKILL.md`、`plugins/aisee-plugin/skills/aisee-memory/references/workflow.md`、`plugins/aisee-plugin/skills/aisee-memory/evals/evals.json`、`plugins/aisee-plugin/references/skill-taxonomy.md`、`plugins/aisee-plugin/skills/aisee-reflect/SKILL.md`、`plugins/aisee-plugin/skills/aisee-reflect/references/output-templates.md`、`plugins/aisee-plugin/skills/aisee-init/assets/memory-rules-template.md`、`plugins/aisee-plugin/skills/aisee-init/assets/memory-index-template.md`、`tests/test_skill_cli_preflight.py`、`tests/test_skill_eval_schema.py`。 |
| 204 | +- **方案:** 新增聚焦 skill,触发词覆盖“项目记忆 / aisee memory / 记住这个 / 查询记忆”。`SKILL.md` 保持精简,命令细节放到 references。更新 reflect,让候选生成仍归 reflect,但确认提升到 memory 时优先通过 `aisee memory add`,而不是手工改文件。 |
| 205 | +- **参考模式:** `plugins/aisee-plugin/skills/aisee-knowledge/SKILL.md` 及其 eval 结构。 |
| 206 | +- **测试场景:** |
| 207 | + - 新公开 skill 出现在 taxonomy。 |
| 208 | + - 所有公开 skill 仍有 eval 覆盖。 |
| 209 | + - Reflect 文档提到 confirmed memory writes 应使用 `aisee memory add`。 |
| 210 | + - Init 模板与 CLI metadata contract 对齐。 |
| 211 | +- **验证:** Skill contract 测试通过,README 能发现新 skill。 |
| 212 | + |
| 213 | +### U7. 文档与兼容性更新 |
| 214 | + |
| 215 | +- **目标:** 文档化 memory 边界和发现路径,同时不扩展 doctor 职责。 |
| 216 | +- **需求:** R8、R9。 |
| 217 | +- **依赖:** U2、U4、U5、U6。 |
| 218 | +- **文件:** `README.md`、`docs/workflow.md`、`docs/workflow.en.md`、`docs/best-practices.md`、`docs/best-practices.en.md`、`docs/compatibility-policy.md`、`docs/compatibility-policy.en.md`、`docs/architecture/aisee-cli-context-and-id-registry.md`、`docs/release.md`、`plugins/aisee-plugin/.codex-plugin/plugin.json`。 |
| 219 | +- **方案:** 新增 “Project Memory / 项目记忆” 小节,明确 `aisee memory inspect/search` 是发现路径,hooks 只读,`aisee doctor` 不是 memory 命令索引,OpenSpec 仍权威。更新 CLI context architecture 文档,把 project memory 作为第五个受控 CLI 职责。 |
| 220 | +- **参考模式:** Team knowledge 文档和 compatibility policy 对 public/experimental contract 的写法。 |
| 221 | +- **测试场景:** |
| 222 | + - grep 或现有 docs tests 确认 README 提到 `aisee:memory`。 |
| 223 | + - Compatibility policy 把 `aisee memory` 分类为 public CLI JSON contract。 |
| 224 | + - Release notes 提到新命令组和版本升级。 |
| 225 | +- **验证:** 文档只引用 U2 中真实存在的命令。 |
| 226 | + |
| 227 | +### U8. 版本升级与 release smoke |
| 228 | + |
| 229 | +- **目标:** 将 CLI / PyPI package metadata 升级到 `0.9.0` 并验证发布打包。 |
| 230 | +- **需求:** R10。 |
| 231 | +- **依赖:** U1 至 U7。 |
| 232 | +- **文件:** `pyproject.toml`、`src/aisee_cli/__init__.py`、`.agents/plugins/marketplace.json`、`plugins/aisee-plugin/.codex-plugin/plugin.json`、`plugins/aisee-plugin/.claude-plugin/plugin.json`、`plugins/aisee-plugin/.cursor-plugin/plugin.json`、`docs/release.md`、`tests/test_version_consistency.py`。 |
| 233 | +- **方案:** 将 `pyproject.toml` 改为 `0.9.0`,运行或等价执行 `scripts/sync_versions.py`,保持 metadata 一致。Release smoke 需要验证 installed wheel command surface 包含 `memory`。 |
| 234 | +- **参考模式:** `scripts/check_versions.py`、`scripts/sync_versions.py` 和 `scripts/smoke_release.py`。 |
| 235 | +- **测试场景:** |
| 236 | + - `scripts/check_versions.py` 报告所有版本都是 `0.9.0`。 |
| 237 | + - Installed wheel 输出 `aisee 0.9.0`。 |
| 238 | + - Release smoke 确认 `aisee memory inspect --json` 在 CLI-only 安装下可用。 |
| 239 | + - 顶层 `aisee --help` 包含 `memory`。 |
| 240 | +- **验证:** 发布前全量测试和 release smoke 通过。 |
| 241 | + |
| 242 | +--- |
| 243 | + |
| 244 | +## 验收示例 |
| 245 | + |
| 246 | +- AE1. 给定项目没有 memory 文件,当 agent 运行 `aisee memory inspect --json`,响应是合法 JSON,状态为 missing,包含 canonical paths,且没有 blocker。 |
| 247 | +- AE2. 给定项目有一条高优先级 `pref` memory,当运行 `aisee memory search --query "commit message style" --json`,匹配项以 summary metadata 返回,默认不带正文。 |
| 248 | +- AE3. 给定用户说“以后本项目提交信息都用中文”,当 agent 使用 `aisee:memory`,它会确认写入意图,并通过 `aisee memory add` 写入,而不是由 hook 自动写入。 |
| 249 | +- AE4. 给定 context pack 请求不带 `--project-memory`,命令输出不包含 memory 字段,现有 context pack JSON 保持兼容。 |
| 250 | +- AE5. 给定 context pack 请求带 `--project-memory`,且存在匹配 memory,则受控 memory matches 与 OpenSpec facts 分离输出。 |
| 251 | + |
| 252 | +--- |
| 253 | + |
| 254 | +## 风险与依赖 |
| 255 | + |
| 256 | +- **上下文膨胀风险:** Hooks 和 context pack 集成可能注入过多 memory。缓解:默认只提示入口、小 limit、metadata-only 输出、正文显式 opt-in。 |
| 257 | +- **事实源混淆风险:** Agent 可能把 memory 当 spec truth。缓解:所有 JSON/meta/hook/doc 都标记 project memory 是 guidance,且被 OpenSpec 覆盖。 |
| 258 | +- **写入污染风险:** Agent 可能滥用 `add`。缓解:写命令要求用户明确意图,`aisee:reflect` 仍是候选生成入口。 |
| 259 | +- **Legacy 兼容风险:** 现有 memory 模板不是 frontmatter。缓解:parser 对当前模板保持只读兼容,CLI 新写入使用 canonical 格式。 |
| 260 | +- **公开契约漂移风险:** 新增命令组影响 release 行为。缓解:命令面测试、兼容性文档和版本升级到 `0.9.0`。 |
| 261 | + |
| 262 | +--- |
| 263 | + |
| 264 | +## 文档 / 运维说明 |
| 265 | + |
| 266 | +Release 应把 project memory 表达为轻量项目本地上下文能力,而不是数据库或 agent runtime memory 替代品。README 示例聚焦: |
| 267 | + |
| 268 | +- `aisee memory inspect --json` |
| 269 | +- `aisee memory search --query "<task>" --json` |
| 270 | +- `aisee memory add --type pref --title "<title>" --summary "<summary>" --body "<body>" --json` |
| 271 | +- `aisee context pack --change <change> --for ce-work --project-memory --json` |
| 272 | + |
| 273 | +文档应避免鼓励 agent 直接读取 `aisee/memory/**/*.md`;只有当 CLI 返回具体 `path` 后,才按需读取对应文件。 |
| 274 | + |
| 275 | +--- |
| 276 | + |
| 277 | +## 来源与研究 |
| 278 | + |
| 279 | +- `src/aisee_cli/__main__.py`:当前顶层 CLI parser 和 `context pack --knowledge` 集成模式。 |
| 280 | +- `src/aisee_cli/knowledge.py`:JSON envelope、受控 retrieval、cache 非事实源、写命令和 index 模式。 |
| 281 | +- `src/aisee_cli/paths.py`:canonical `aisee/` 和 legacy `.memory/` 路径处理。 |
| 282 | +- `plugins/aisee-plugin/skills/aisee-init/assets/memory-rules-template.md`:现有项目记忆目录模型。 |
| 283 | +- `plugins/aisee-plugin/skills/aisee-init/scripts/hooks/session-inject.js`:当前会话启动 memory 摘要 hook。 |
| 284 | +- `plugins/aisee-plugin/skills/aisee-reflect/SKILL.md`:现有 memory candidate 和 confirmed-write workflow。 |
| 285 | +- `docs/compatibility-policy.md`:公开 CLI JSON 和版本规则。 |
| 286 | +- `docs/architecture/aisee-team-knowledge.md`:可轻量复用的受控 retrieval 和 cache 边界模式。 |
0 commit comments