@riconext/hermes-repo 0.2.5 → 0.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,157 +1,395 @@
1
- # @riconext/hermes-repo
1
+ # hermes-repo
2
2
 
3
- 跨编程助手的**项目级记忆系统**:在任意 Git 仓库中沉淀约定、踩坑与可复用流程,让 Claude Code、Cursor、Codex AI 助手越用越懂这个项目。
3
+ **让 AI 编程助手真正「住」在你的 Git 仓库里** 不用换 IDE、不用上云记忆平台,会话结束自动记下约定与踩坑,下次打开对话项目上下文已经在。
4
4
 
5
- 参考 [Hermes Agent](https://github.com/NousResearch/hermes) 的三层记忆模型与技能闭环思路;实现细节见 [设计文档](docs/hermes-repo-design.md)
5
+ npm:`@riconext/hermes-repo` · 灵感来自 [Hermes Agent](https://github.com/NousResearch/hermes) 的记忆与技能闭环 · [完整设计文档](docs/hermes-repo-design.md)
6
+
7
+ ![](https://neptune-ipc.oss-cn-shenzhen.aliyuncs.com/img/20260521182425723.png)
8
+
9
+ ## 为什么选择 hermes-repo
10
+
11
+ 你可能试过:只靠根目录 `AGENTS.md` 手写项目说明(容易过时、越写越长)、靠聊天记录「记住上次说了啥」(换机器就没了)、或等某家助手的内置记忆(绑平台、难进 Git、团队难对齐)。
12
+
13
+ **hermes-repo 换了一条更踏实的路:记忆跟着 repo 走,人审过才能进团队层。**
14
+
15
+ | 你会得到 | 这意味着什么 |
16
+ |----------|----------------|
17
+ | **开箱闭环** | `init` 一次 → hooks 自动捕获 / 注入 → `flush` 生成 `MEMORY.md`,不必自己拼脚本 |
18
+ | **多助手共用一套记忆** | Claude Code、Cursor、CodeBuddy 已接入;同一 `.memory/`,不重复维护三份说明 |
19
+ | **个人沉淀 + 团队 PR** | 捕获默认不进 Git;值得共享的经 `promote` 评审后写入 `topics/`,像管代码一样管约定 |
20
+ | **不拖慢你写代码** | Stop hook 先落盘简版捕获,LLM 在后台升级;没配 API 也能完整跑通 |
21
+ | **越用越聪明** | `ref` 反馈、`search` / `stats`、30/90 天生命周期 — 摘要里留下「真的被用过的」记忆 |
22
+ | **成本可控** | 仅 OpenAI 兼容 API;默认推荐 DeepSeek `deepseek-v4-flash`,记忆场景便宜够用 |
23
+
24
+ 一句话:**把「这个项目是怎么回事」从聊天窗口里搬回仓库里,并且让 AI 每次会话都能自动读到最新版。**
25
+
26
+ 适合已经用 AI 写真实业务代码、又希望**知识可版本化、可审查、可迁移**的个人与小团队 — 而不是再找一个和黑盒绑死的「云端第二大脑」。
27
+
28
+ ---
29
+
30
+ ## 解决什么问题
31
+
32
+ 用 Claude Code、Cursor 等助手写代码时,常见痛点是:
33
+
34
+ - 每个新会话都要重新说明「我们项目用 pnpm」「API 返回 snake_case」
35
+ - 上周踩过的坑,这周又要踩一遍
36
+ - 团队里只有某个人「懂项目」,知识锁在聊天记录里
37
+
38
+ **hermes-repo** 把有价值的信息写成项目里的**结构化记忆**,在会话开始时自动注入上下文,并支持检索、统计和(可选)经审查后纳入团队共享层。
39
+
40
+ ---
6
41
 
7
42
  ## 它能做什么
8
43
 
9
- - **自动捕获**:会话结束时通过 Stop hook 读取 JSONL,质量过滤后写入结构化捕获(不阻塞日常开发)
10
- - **分层检索**:`MEMORY.md` 注入上下文 → `search` / grep 查历史 → 可选 MCP + FTS5 语义搜索
11
- - **三种记忆**:语义(约定/决策)、情景(事件经过)、流程(操作步骤,可晋升为 Skill)
12
- - **团队共享**:个人层本地沉淀,审查后晋升到 `topics/`、`skills/`,经 PR 合并进团队真相源
13
- - **反馈驱动**:引用记录与 `use_count` 决定哪些记忆留在摘要里,避免 MEMORY.md 膨胀
44
+ | 能力 | 你会感受到什么 |
45
+ |------|----------------|
46
+ | **自动记住** | 会话结束后,助手 hooks 把本次有价值的内容写成记忆文件 |
47
+ | **下次自带上下文** | 新会话开始时,自动加载项目摘要(`MEMORY.md`) |
48
+ | **三种记忆** | 约定与事实、具体事件经过、可复用的操作步骤 |
49
+ | **越用越准** | 被引用过的记忆优先保留;长期不用的会降级或归档 |
50
+ | **可搜索** | 用关键词查历史捕获、主题和技能 |
51
+ | **团队共识** | 个人先沉淀,审查后再合并进团队可提交的 `topics/` |
52
+
53
+ 不配 LLM 也能完成闭环;**长期在本仓库使用建议配置 LLM**(见 [配置 LLM](#配置-llm建议))。
54
+
55
+ ---
56
+
57
+ ## 适合谁
58
+
59
+ - **个人开发者**:单仓库长期使用同一套 AI 助手,希望「项目记忆」跟着 repo 走
60
+ - **小团队**:约定、流程经 PR 审查后进入 `topics/` / `skills/`,新人 AI 也能对齐
61
+ - **多助手用户**:同一套 `.memory/` 可同时接入 Claude Code、Cursor、CodeBuddy(见下表)
62
+
63
+ ---
64
+
65
+ ## 整体架构
66
+
67
+ hermes-repo 是挂在**你的 Git 项目**上的记忆层:不改变你平时的编码方式,通过编程助手的 **hooks** 在后台读写 `.memory/`,由 **CLI** 负责初始化、整理、检索与团队晋升。
68
+
69
+ ```
70
+ 用户跑: npx @riconext/hermes-repo init
71
+
72
+
73
+ 交互:checkbox 多选编程助手(claude-code / cursor / codebuddy)
74
+ 非交互:init -y [--tools id1,id2] 默认 assistants: [claude-code]
75
+ │ init -y --scan 可选冷启动:扫描仓库生成首批 semantic 捕获 + flush
76
+
77
+ 在项目中创建/合并:
78
+ ├── .memory/
79
+ │ ├── config.json # version, storage, assistants[], debug
80
+ │ ├── llm.json # [个人] 可选 LLM(gitignore,init 可生成示例)
81
+ │ ├── captures/
82
+ │ │ ├── semantic/ # [个人] 语义记忆
83
+ │ │ ├── episodic/ # [个人] 情景记忆
84
+ │ │ └── procedural/ # [个人] 流程记忆(*.md.promote 侧车可触发 Skill)
85
+ │ ├── topics/ # [团队] consolidate / promote --apply 写入
86
+ │ ├── skills/ # [团队] flush 内 promoteSkills → SKILL.md
87
+ │ ├── sessions/ # [个人] 会话索引 index.json
88
+ │ ├── refs/ # [个人] ref CLI 写入,flush 聚合后删除
89
+ │ ├── promote/ # [个人] promote --pr 草案(gitignore,含 staging/topics/)
90
+ │ ├── templates/ # [团队] PROMOTE_PR.md、capture 示例等
91
+ │ ├── team/ # [团队] decisions、conflict-resolutions、steward-log
92
+ │ ├── .archive/ # [个人] 生命周期归档捕获
93
+ │ ├── consolidate-state.json / .consolidate.lock # [个人] flush 状态(gitignore)
94
+ │ ├── skill-usage.json # [个人] 技能引用统计(gitignore)
95
+ │ └── MEMORY.md # [团队] Level 0 摘要(≤约 2.2K 字符,inject 用)
96
+ ├── AGENTS.md # 通用助手指令(init 合并 hermes 标记块)
97
+ └── 按 config.assistants[] 写入 hooks(统一调用 CLI,内部路由):
98
+ .claude/settings.local.json # claude-code: SessionStart→inject, Stop→capture
99
+ .cursor/hooks.json # cursor: sessionStart→inject, stop→capture
100
+ .codebuddy/settings.local.json # codebuddy: SessionStart→inject, Stop→capture
101
+
102
+ ────────────────── 运行时闭环(单仓库)──────────────────
103
+
104
+ SessionStart / sessionStart hook → npx @riconext/hermes-repo inject
105
+ 1. 读取 .memory/MEMORY.md(及配置)
106
+ 2. 输出到 stdout(Claude/CodeBuddy 正文;Cursor JSON additional_context)
107
+ → AI 开箱加载项目摘要
108
+
109
+ 用户正常编码 …
110
+
111
+ Stop / stop hook → npx @riconext/hermes-repo capture
112
+ 1. 按 hook 路径 / config.assistants 路由到 claude-code | cursor | codebuddy 会话源
113
+ 2. 读取会话 transcript(JSONL 等)
114
+ 3. shouldCapture 质量过滤(过短/无信号 → exit 0 跳过)
115
+ 4. 启发式写入 captures/<type>/capture-YYYY-MM-DD-NNN.md
116
+ 5. 若 llm.json 启用:入队 capture-llm 后台任务(detached)升级正文
117
+ 6. 达阈值时 maybeScheduleConsolidate → 后台 flush(detached)
118
+
119
+ flush / runConsolidate(手动或 capture 后自动):
120
+ 1. dedupeCaptures → detectConflicts(捕获间规则互斥)
121
+ 2. buildTopics → topics/<slug>.md(可选 LLM)
122
+ 3. promoteSkills → skills/<slug>/SKILL.md(≥3 同 tag procedural 或 .promote 侧车)
123
+ 4. applyFeedback(refs/ → use_count、skill-usage)
124
+ 5. applyLifecycle(30d MEMORY 降级、90d 归档、*.md.ignore)
125
+ 6. buildMemory → 更新 MEMORY.md(含可用技能目录、待解决冲突段)
126
+
127
+ ────────────────── 团队晋升(独立 CLI,非 flush 内联)──────────────────
128
+
129
+ 个人标记: touch captures/<type>/xxx.md.promote
130
+ → promote --preview | --pr # PR 正文 + promote/staging/topics/ + decisions.template.json
131
+ → 人工 review → promote --apply --manifest decisions.json # 写入 topics/,清理侧车
132
+ → flush # 刷新 MEMORY.md
133
+
134
+ ────────────────── 用户可主动调用的 CLI ──────────────────
135
+
136
+ init [-y] [--tools] [--scan] [--force]
137
+ capture / inject # 通常由 hooks 调用
138
+ capture-llm [--flush|--job] # LLM 升级队列
139
+ flush [--force] [--dry-run] # consolidate 主入口
140
+ ref / search / stats
141
+ promote --preview | --pr | --apply --manifest
142
+ ```
143
+
144
+ ### 记忆生命周期
145
+
146
+ ```text
147
+ init 脚手架 → 日常编码(助手 + hooks)
148
+ → Stop:质量过滤 → 写入 captures/(个人层)
149
+ → flush:去重 / 冲突标注 → 更新 topics/ + MEMORY.md(团队层摘要)
150
+ → SessionStart:注入 MEMORY.md → AI 开箱即懂项目
151
+ → ref / search:反馈与深挖历史
152
+ → promote(可选):个人捕获经评审进入团队 topics/
153
+ ```
154
+
155
+ ### 两层存储:个人 vs 团队
156
+
157
+ | 层级 | 典型路径 | 是否提交 Git | 用途 |
158
+ |------|----------|--------------|------|
159
+ | **个人层** | `captures/`、`sessions/`、`refs/` | 否(默认 gitignore) | 原始会话捕获、引用反馈,本机沉淀 |
160
+ | **团队层** | `topics/`、`skills/`、`MEMORY.md`、`team/` | 是(审查后) | 团队共识、可复用 Skill、注入用摘要 |
161
+
162
+ 流向:**个人捕获 →(可选)promote 评审 → 团队 topics/skills → flush 更新 MEMORY.md → 全员助手加载**。
163
+
164
+ ### 三种记忆类型
165
+
166
+ | 类型 | 记什么 | 举例 |
167
+ |------|--------|------|
168
+ | **语义** semantic | 事实、约定、架构决策 | API 返回格式、认证方案 |
169
+ | **情景** episodic | 某次事件的前因后果 | 迁移超时根因 |
170
+ | **流程** procedural | 可复用步骤 | 部署、迁移流程(可晋升为 Skill) |
171
+
172
+ ### 检索分层(由快到深)
14
173
 
15
- ## 快速开始
174
+ | 层级 | 方式 | 场景 |
175
+ |------|------|------|
176
+ | **L0 注入** | `MEMORY.md` 写入会话上下文 | 每次新开对话,约 2KB 摘要 |
177
+ | **L1 搜索** | `hermes-repo search`、目录浏览 | 需要查某条历史或主题时 |
178
+ | **L2 远期** | 独立 MCP 记忆服务 | 跨仓库、语义检索(规划中) |
179
+
180
+ ### `.memory/` 目录一览
181
+
182
+ ```text
183
+ .memory/
184
+ ├── llm.json # 个人:可选 LLM API(gitignore,勿提交)
185
+ ├── captures/ # 个人:semantic / episodic / procedural 原始捕获
186
+ ├── topics/ # 团队:按主题整理后的约定
187
+ ├── skills/ # 团队:可复用 SKILL.md
188
+ ├── MEMORY.md # 团队:自动摘要(注入用)
189
+ ├── sessions/ # 个人:会话索引
190
+ ├── refs/ # 个人:引用反馈(flush 时聚合)
191
+ ├── promote/ # 个人:晋升 PR 草案(gitignore)
192
+ ├── team/ # 团队:决策与冲突记录
193
+ └── config.json # 已启用助手、存储后端等
194
+ ```
195
+
196
+ 架构细节、hooks 契约与 MCP 远期方案见 [设计文档 · 整体架构](docs/hermes-repo-design.md#整体架构)。
197
+
198
+ ---
199
+
200
+ ## 五分钟上手
201
+
202
+ 在**项目 Git 根目录**执行:
16
203
 
17
204
  ```bash
18
- # 在目标仓库根目录初始化(交互式)
19
205
  npx @riconext/hermes-repo init
206
+ ```
207
+
208
+ 按提示选择要接入的编程助手。完成后:
20
209
 
21
- # CI / TTY 环境须加 -y
22
- npx @riconext/hermes-repo init -y
210
+ 1. 正常用 AI 写代码 结束时自动**捕获**会话要点
211
+ 2. 新开对话 自动**注入**当前项目记忆摘要
212
+ 3. 需要时手动整理:`npx @riconext/hermes-repo flush`
23
213
 
24
- # 指定编程助手(当前仅 claude-code;多选逗号分隔)
214
+ **非交互环境(CI、脚本)**:
215
+
216
+ ```bash
25
217
  npx @riconext/hermes-repo init -y --tools claude-code
218
+ # 可选:根据仓库结构生成首批记忆
219
+ npx @riconext/hermes-repo init -y --scan --tools claude-code
26
220
  ```
27
221
 
28
- 交互式 `init` 会通过多选勾选要接入的助手;选择写入 `.memory/config.json` `assistants` 字段。每次 `init` 都会**合并更新** `config.json`(含 `assistants`、`debug` 等),不会因文件已存在而跳过。
222
+ 初始化会生成 `.memory/`(记忆数据)、根目录 `AGENTS.md`(告诉助手如何用记忆),以及对应助手的 hooks 配置。个人层内容默认不提交 Git;团队层(主题、技能、摘要)可经 PR 提交。
29
223
 
30
- `init` 会创建:
224
+ ---
31
225
 
32
- ```text
33
- .memory/ # 记忆根目录
34
- ├── captures/ # [个人] 原始捕获(semantic / episodic / procedural)
35
- ├── topics/ # [团队] 整理后的主题
36
- ├── skills/ # [团队] 可复用技能(SKILL.md)
37
- ├── sessions/ # [个人] 会话索引
38
- ├── refs/ # [个人] AI 引用记录(反馈)
39
- ├── team/ # [团队] 决策与冲突处理记录
40
- └── MEMORY.md # [团队] 自动摘要(注入用,约 2.2K 字符上限)
41
-
42
- AGENTS.md # 编程助手指令入口
43
- .claude/settings.local.json # Claude Code hooks(Stop/SessionStart,个人层不提交)
44
- ```
226
+ ## 配置 LLM(建议)
45
227
 
46
- 初始化后正常使用编程助手;**v0.2** Stop hook 执行 `capture`(启发式过滤后写入 captures),SessionStart 执行 `inject`(将 `MEMORY.md` 注入上下文)。`consolidate` 自动更新 MEMORY 在 **v0.4** 实现。
228
+ hermes-repo **hooks 路径不依赖 LLM**(捕获、注入始终快速返回)。LLM 在**后台**参与「写得更准、整理得更好」,失败或未配置时会自动降级为规则模板,不阻塞日常编码。
47
229
 
48
- ## 工作流程
230
+ ### 模型接口与推荐
49
231
 
50
- ```text
51
- init 日常编码(AI 助手 + hooks)
52
-
53
- Stop hook:过滤 → 提取 → 写入 captures/
54
-
55
- consolidate:去重 / 冲突检测 更新 topics/ + MEMORY.md
56
-
57
- 下次会话:AGENTS.md 引导加载 MEMORY.md,按需 search / 加载 Skill
232
+ - **目前仅支持 OpenAI 兼容格式**:请求发往 `{baseUrl}/chat/completions`(与 OpenAI Chat Completions 相同的 JSON 结构与鉴权方式)。Anthropic 原生 API、Gemini 原生 API 等**不能**直接填写,需通过提供 OpenAI 兼容网关的服务间接使用。
233
+ - **建议使用 [DeepSeek](https://platform.deepseek.com/)**:`init` 与模板默认 `baseUrl: https://api.deepseek.com`、`model: deepseek-v4-flash`。记忆捕获与 consolidate 以短文本摘要为主,该模型**便宜且足够用**;若你已熟悉其他 OpenAI 兼容服务(如 OpenRouter、自建代理),只需改 `baseUrl` / `model` / `apiKey` 即可。
234
+
235
+ ### 什么时候建议开启
236
+
237
+ | 场景 | 建议 |
238
+ |------|------|
239
+ | 试用、CI、无 API 预算 | 保持 `enabled: false`,启发式捕获 + 规则 `flush` 即可 |
240
+ | 个人项目长期 dogfood | **建议开启**,复杂会话的捕获分类与摘要明显更好 |
241
+ | 团队仓库 + promote | **建议开启**,`topics/` 草案与晋升 PR 说明更清晰(仍可选) |
242
+
243
+ ### 开启后多做什么
244
+
245
+ | 环节 | 无 LLM | 有 LLM |
246
+ |------|--------|--------|
247
+ | **Stop → capture** | 立即写入启发式 capture | 先写简版,复杂会话后台 `capture-llm` 升级正文 |
248
+ | **flush** | 规则合并 `topics/`、`MEMORY.md` | 同上,可由 LLM 润色主题与摘要 |
249
+ | **Skill / promote** | 规则生成 | 可选 LLM 润色 `SKILL.md`、晋升 PR 条目说明 |
250
+
251
+ ### 如何配置
252
+
253
+ **方式一:交互式 init(推荐)**
254
+
255
+ ```bash
256
+ npx @riconext/hermes-repo init
58
257
  ```
59
258
 
60
- ## CLI 命令
259
+ 按提示填写 API 地址、模型名与密钥;会写入 `.memory/llm.json`。
260
+
261
+ **方式二:手动编辑**
262
+
263
+ `init` 会在 `.memory/templates/llm.json.example` 提供示例。复制或编辑 `.memory/llm.json`:
61
264
 
62
- | 命令 | 说明 |
265
+ ```json
266
+ {
267
+ "enabled": true,
268
+ "provider": "openai",
269
+ "baseUrl": "https://api.deepseek.com",
270
+ "model": "deepseek-v4-flash",
271
+ "apiKey": "你的密钥",
272
+ "timeoutMs": 60000,
273
+ "maxInputChars": 24000,
274
+ "mode": "async"
275
+ }
276
+ ```
277
+
278
+ | 字段 | 说明 |
63
279
  |------|------|
64
- | `init` | 创建 `.memory/`、`AGENTS.md`、hooks 配置 |
65
- | `capture` | Stop hook:读 Claude JSONL 启发式过滤 写入 `.memory/captures/`(**v0.2**) |
66
- | `inject` | SessionStart:读 `MEMORY.md` 输出到 stdout,约 2200 字符上限(**v0.2**) |
67
- | `flush` | 手动触发 consolidate |
68
- | `search <关键词>` | 检索历史捕获与主题 |
69
- | `stats` | 查看记忆健康度 |
70
- | `promote` | 将个人捕获晋升到团队层(支持 `--pr`、`--preview`、`--apply`) |
280
+ | `enabled` | `true` 才启用;`false` 时与未配置等价 |
281
+ | `apiKey` / `baseUrl` / `model` | 三者缺一不可;须为 **OpenAI 兼容** `/chat/completions` 端点 |
282
+ | `provider` | 仅作标记(如 `"openai"`),实际以 `baseUrl` 指向的服务为准 |
283
+ | `mode` | 默认 `async`:hook 不等待;调试可用 `sync` 或环境变量 `HERMES_LLM_SYNC=1` |
71
284
 
72
- 冷启动扩展(规划中):`init --scan`、`init --interview`、`clone` 从其他仓库复用记忆。
285
+ DeepSeek 时:保持 `enabled: true`,将 `baseUrl`、`model` 换成你所用网关提供的 OpenAI 兼容地址与模型名即可。
73
286
 
74
- ## 记忆类型
287
+ **`init -y` 时**:会生成 `enabled: false` 的骨架;再次 `init` **不会覆盖**已有 `apiKey`,可安全补配。
75
288
 
76
- | 类型 | 含义 | 示例 |
77
- |------|------|------|
78
- | **semantic** | 项目事实与约定 | API 统一返回格式、认证方案 |
79
- | **episodic** | 具体事件与结果 | 某次迁移超时及根因 |
80
- | **procedural** | 可复用操作步骤 | 部署、数据库迁移流程(可晋升为 Skill) |
289
+ ### 安全说明
81
290
 
82
- ## 团队协作
291
+ - `.memory/llm.json` 在 init 写入的 **gitignore 块中**,**不要提交到 Git**
292
+ - `config.json` 里**没有** API 密钥字段
293
+ - 团队共享记忆走 `topics/` / `MEMORY.md`,与个人 LLM 配置无关
83
294
 
84
- 个人层(`captures/`、`sessions/`、`refs/`)默认 **不提交 git**;团队层(`topics/`、`skills/`、`MEMORY.md`)经 PR 审查后提交。
295
+ ### 验证与排障
85
296
 
86
297
  ```bash
87
- # 标记某条捕获值得晋升
88
- touch .memory/captures/semantic/capture-xxx.promote
298
+ # 处理积压的 LLM 升级任务
299
+ npx @riconext/hermes-repo capture-llm --flush
89
300
 
90
- # 生成勾选框形式的晋升 PR
91
- npx @riconext/hermes-repo promote --pr
301
+ # 查看 hook / capture 日志
302
+ # 在 .memory/config.json 设 "debug": true,然后 tail -f .memory/hermes-debug.log
92
303
  ```
93
304
 
94
- 多人仓库下由 Memory Steward 轮值维护记忆健康度;详见设计文档中的「团队协作」与「记忆晋升 PR」章节。
305
+ 升级成功的 capture 会在 frontmatter 中带 `llmUpgradedAt`。若长期无升级,检查 `enabled`、`apiKey`、网络及 `baseUrl` 是否可达。
95
306
 
96
- ## 支持的编程助手
307
+ 更完整的字段说明、触发条件与异步流程见 [phase-3-v0.8-llm-capture.md](docs/phase-3-v0.8-llm-capture.md)。
97
308
 
98
- | 优先级 | 工具 | hooks |
99
- |--------|------|-------|
100
- | P0 | Claude Code | Stop / SessionStart / PreCompact / PostCompact |
101
- | P1 | Cursor | hooks.json |
102
- | P1 | OpenAI Codex | hooks 系统 |
103
- | P2 | VS Code Copilot | Agent hooks(Preview) |
104
- | P2 | GitHub Copilot CLI | AGENTS.md |
309
+ ---
105
310
 
106
- v0.x 优先 Claude Code;其他适配器按路线图补齐。
311
+ ## 支持的编程助手
107
312
 
108
- ## 设计原则
313
+ | 助手 | 状态 | 说明 |
314
+ |------|------|------|
315
+ | **Claude Code** | 已支持 | Stop / SessionStart hooks |
316
+ | **Cursor** | 已支持 | `hooks.json` 集成 |
317
+ | **CodeBuddy** | 已支持 | Stop / SessionStart hooks |
318
+ | OpenAI Codex | 规划中 | — |
319
+ | VS Code Copilot / Copilot CLI | 规划中 | AGENTS.md 可先手写引导 |
109
320
 
110
- 1. **先验证,后完善** — v0.x 用 Markdown / JSON 存储,快速验证闭环
111
- 2. **不阻塞用户** — hook 路径零 LLM,复杂提取与 consolidate 走后台
112
- 3. **记忆有边界** — 质量门槛过滤噪声,MEMORY.md 有大小上限
113
- 4. **渐进式采用** — 先跑通捕获与 consolidate,再扩展 Skill、MCP、FTS5
114
- 5. **反馈驱动** — 以 AI 是否引用记忆衡量价值,而非只写不读
321
+ ---
115
322
 
116
- ## 路线图(摘要)
323
+ ## 常用命令
117
324
 
118
- | 版本 | 内容 |
325
+ | 命令 | 用途 |
119
326
  |------|------|
120
- | v0.1 | `init`:目录 + AGENTS.md + hooks |
121
- | v0.2 | Stop hook 捕获 + SessionStart 注入(**当前**) |
122
- | v0.3 | 启发式 + LLM 提取,分类写入 captures |
123
- | v0.4 | consolidate:去重、冲突检测、MEMORY.md |
124
- | v0.5–v0.7 | Skill 晋升、反馈回路、冷启动 |
125
- | v0.9+ | Cursor adapter、curator、MCP + SQLite FTS5 |
327
+ | `init` | 初始化记忆目录与 hooks(可交互配置 LLM) |
328
+ | `capture-llm --flush` | 处理积压的 LLM 捕获升级任务 |
329
+ | `flush` | 整理捕获,更新 `MEMORY.md` 与主题 |
330
+ | `search <关键词>` | 搜索记忆 |
331
+ | `stats` | 查看记忆健康度 |
332
+ | `ref` | 记录「这条记忆有用」(反馈) |
333
+ | `promote --pr` / `--apply` | 将个人捕获晋升到团队层(需评审) |
334
+
335
+ Hook 场景下还会用到 `capture`、`inject`(一般由助手自动调用,无需手敲)。
336
+
337
+ 命令与配置细节:[设计文档](docs/hermes-repo-design.md)
126
338
 
127
- 完整路线图与 LLM 成本分析见 [docs/hermes-repo-design.md](docs/hermes-repo-design.md)。
339
+ ---
128
340
 
129
- ## 开发
341
+ ## 团队协作(可选)
130
342
 
131
343
  ```bash
132
- bun install
133
- bun run build
134
- bun run test
135
- bun run typecheck
344
+ # 标记某条个人捕获值得共享
345
+ touch .memory/captures/semantic/你的捕获文件.md.promote
346
+
347
+ # 生成晋升说明与草案(人工开 PR)
348
+ npx @riconext/hermes-repo promote --pr
349
+
350
+ # 评审通过后落盘并刷新摘要
351
+ npx @riconext/hermes-repo promote --apply --manifest decisions.json
352
+ npx @riconext/hermes-repo flush
136
353
  ```
137
354
 
138
- ### 调试 hook / capture / inject
355
+ 建议指定 **Memory Steward** 轮值 review 晋升与冲突;流程说明见 [团队晋升文档](docs/phase-11-v0.13-promote.md)。
139
356
 
140
- 在业务仓库的 `.memory/config.json` 中将 `"debug"` 设为 `true`(`init` 写入默认 `false`,重新 `init -y` 会为旧配置补上该字段)。下次 hook 或 CLI 执行时,会在 **stderr** 与 **`.memory/hermes-debug.log`** 双写 `hermes-repo [capture]` / `[inject]` 前缀的跳过或成功信息(`tail -f .memory/hermes-debug.log`);`inject` 的 stdout 仍只输出 `MEMORY.md` 正文。
357
+ ---
141
358
 
142
- ## 本地调试 CLI
359
+ ## 路线图
360
+
361
+ | 阶段 | 内容 |
362
+ |------|------|
363
+ | **当前(~0.13)** | 单仓库闭环:捕获、整理、注入、搜索/统计、Skill、冷启动、团队 promote |
364
+ | **后续** | 记忆策展(curator)、跨仓库、MCP 记忆服务(独立仓库) |
365
+
366
+ 完整版本史与成本分析见 [设计文档 · 开发路线图](docs/hermes-repo-design.md#开发路线图)。
367
+
368
+ ---
369
+
370
+ ## 文档
371
+
372
+ | 文档 | 说明 |
373
+ |------|------|
374
+ | [hermes-repo-design.md](docs/hermes-repo-design.md) | 架构、数据格式、团队流程、AGENTS 约定 |
375
+ | [phase-11-v0.13-promote.md](docs/phase-11-v0.13-promote.md) | 团队记忆晋升工作流 |
376
+ | [phase-3-v0.8-llm-capture.md](docs/phase-3-v0.8-llm-capture.md) | 可选 LLM 捕获配置 |
377
+
378
+ 各版本实施记录:`docs/phase-*.md`。
379
+
380
+ ---
381
+
382
+ ## 参与开发
143
383
 
144
384
  ```bash
145
- node dist/cli.js --version
146
- node dist/cli.js
385
+ bun install && bun run build && bun run test
147
386
  ```
148
387
 
149
- ## 文档
388
+ 本地调试:`node dist/cli.js --help`
389
+ Hook 排障:在 `.memory/config.json` 中设置 `"debug": true`,查看 `.memory/hermes-debug.log`。
150
390
 
151
- - [完整设计文档](docs/hermes-repo-design.md) — 架构、存储格式、consolidate、团队流程、AGENTS.md 模板
152
- - [Phase 1 实施计划(v0.1 init)](docs/phase-1-v0.1-init.md) — `init` 命令交付范围、测试与验收标准
153
- - [Phase 2 实施计划(v0.2 capture/inject)](docs/phase-2-v0.2-capture.md) — hooks 闭环、JSONL 契约、验收标准
391
+ ---
154
392
 
155
393
  ## License
156
394
 
157
- [LICENSE](LICENSE)
395
+ [MIT](LICENSE)