@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 +338 -100
- package/dist/cli.js +5698 -802
- package/dist/cli.js.map +1 -1
- package/dist/templates/AGENTS.hermes-block.tpl +119 -0
- package/dist/templates/AGENTS.md.tpl +3 -115
- package/dist/templates/MEMORY.md.tpl +5 -1
- package/dist/templates/SKILL.md.tpl +23 -0
- package/dist/templates/gitignore-block.txt +5 -0
- package/dist/templates/hooks.codebuddy.json.tpl +24 -0
- package/dist/templates/hooks.cursor.json.tpl +15 -0
- package/dist/templates/llm.json.example +10 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,157 +1,395 @@
|
|
|
1
|
-
#
|
|
1
|
+
# hermes-repo
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**让 AI 编程助手真正「住」在你的 Git 仓库里** — 不用换 IDE、不用上云记忆平台,会话结束自动记下约定与踩坑,下次打开对话项目上下文已经在。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
npm:`@riconext/hermes-repo` · 灵感来自 [Hermes Agent](https://github.com/NousResearch/hermes) 的记忆与技能闭环 · [完整设计文档](docs/hermes-repo-design.md)
|
|
6
|
+
|
|
7
|
+

|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
|
|
22
|
-
|
|
210
|
+
1. 正常用 AI 写代码 — 结束时自动**捕获**会话要点
|
|
211
|
+
2. 新开对话 — 自动**注入**当前项目记忆摘要
|
|
212
|
+
3. 需要时手动整理:`npx @riconext/hermes-repo flush`
|
|
23
213
|
|
|
24
|
-
|
|
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
|
-
|
|
222
|
+
初始化会生成 `.memory/`(记忆数据)、根目录 `AGENTS.md`(告诉助手如何用记忆),以及对应助手的 hooks 配置。个人层内容默认不提交 Git;团队层(主题、技能、摘要)可经 PR 提交。
|
|
29
223
|
|
|
30
|
-
|
|
224
|
+
---
|
|
31
225
|
|
|
32
|
-
|
|
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
|
-
|
|
228
|
+
hermes-repo 的 **hooks 路径不依赖 LLM**(捕获、注入始终快速返回)。LLM 在**后台**参与「写得更准、整理得更好」,失败或未配置时会自动降级为规则模板,不阻塞日常编码。
|
|
47
229
|
|
|
48
|
-
|
|
230
|
+
### 模型接口与推荐
|
|
49
231
|
|
|
50
|
-
|
|
51
|
-
init
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
-
|
|
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
|
-
| `
|
|
65
|
-
| `
|
|
66
|
-
| `
|
|
67
|
-
| `
|
|
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
|
-
|
|
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
|
-
|
|
295
|
+
### 验证与排障
|
|
85
296
|
|
|
86
297
|
```bash
|
|
87
|
-
#
|
|
88
|
-
|
|
298
|
+
# 处理积压的 LLM 升级任务
|
|
299
|
+
npx @riconext/hermes-repo capture-llm --flush
|
|
89
300
|
|
|
90
|
-
#
|
|
91
|
-
|
|
301
|
+
# 查看 hook / capture 日志
|
|
302
|
+
# 在 .memory/config.json 设 "debug": true,然后 tail -f .memory/hermes-debug.log
|
|
92
303
|
```
|
|
93
304
|
|
|
94
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
|
121
|
-
|
|
|
122
|
-
|
|
|
123
|
-
|
|
|
124
|
-
|
|
|
125
|
-
|
|
|
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
|
-
|
|
339
|
+
---
|
|
128
340
|
|
|
129
|
-
##
|
|
341
|
+
## 团队协作(可选)
|
|
130
342
|
|
|
131
343
|
```bash
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
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
|
-
|
|
355
|
+
建议指定 **Memory Steward** 轮值 review 晋升与冲突;流程说明见 [团队晋升文档](docs/phase-11-v0.13-promote.md)。
|
|
139
356
|
|
|
140
|
-
|
|
357
|
+
---
|
|
141
358
|
|
|
142
|
-
##
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
395
|
+
[MIT](LICENSE)
|