@riconext/hermes-repo 0.1.0 → 0.2.5
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 +157 -2
- package/dist/cli.js +1186 -28
- package/dist/cli.js.map +1 -1
- package/dist/templates/AGENTS.md.tpl +118 -0
- package/dist/templates/MEMORY.md.tpl +21 -0
- package/dist/templates/PROMOTE_PR.md +21 -0
- package/dist/templates/capture-episodic.example.md +20 -0
- package/dist/templates/capture-procedural.example.md +27 -0
- package/dist/templates/capture-semantic.example.md +20 -0
- package/dist/templates/config.json.tpl +8 -0
- package/dist/templates/gitignore-block.txt +17 -0
- package/dist/templates/hooks.json.tpl +24 -0
- package/dist/templates/steward-log.md.tpl +6 -0
- package/package.json +27 -39
- package/dist/index.cjs +0 -8
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -6
- package/dist/index.d.ts +0 -6
- package/dist/index.js +0 -6
- package/dist/index.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,2 +1,157 @@
|
|
|
1
|
-
# hermes-repo
|
|
2
|
-
|
|
1
|
+
# @riconext/hermes-repo
|
|
2
|
+
|
|
3
|
+
跨编程助手的**项目级记忆系统**:在任意 Git 仓库中沉淀约定、踩坑与可复用流程,让 Claude Code、Cursor、Codex 等 AI 助手越用越懂这个项目。
|
|
4
|
+
|
|
5
|
+
参考 [Hermes Agent](https://github.com/NousResearch/hermes) 的三层记忆模型与技能闭环思路;实现细节见 [设计文档](docs/hermes-repo-design.md)。
|
|
6
|
+
|
|
7
|
+
## 它能做什么
|
|
8
|
+
|
|
9
|
+
- **自动捕获**:会话结束时通过 Stop hook 读取 JSONL,质量过滤后写入结构化捕获(不阻塞日常开发)
|
|
10
|
+
- **分层检索**:`MEMORY.md` 注入上下文 → `search` / grep 查历史 → 可选 MCP + FTS5 语义搜索
|
|
11
|
+
- **三种记忆**:语义(约定/决策)、情景(事件经过)、流程(操作步骤,可晋升为 Skill)
|
|
12
|
+
- **团队共享**:个人层本地沉淀,审查后晋升到 `topics/`、`skills/`,经 PR 合并进团队真相源
|
|
13
|
+
- **反馈驱动**:引用记录与 `use_count` 决定哪些记忆留在摘要里,避免 MEMORY.md 膨胀
|
|
14
|
+
|
|
15
|
+
## 快速开始
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# 在目标仓库根目录初始化(交互式)
|
|
19
|
+
npx @riconext/hermes-repo init
|
|
20
|
+
|
|
21
|
+
# CI / 非 TTY 环境须加 -y
|
|
22
|
+
npx @riconext/hermes-repo init -y
|
|
23
|
+
|
|
24
|
+
# 指定编程助手(当前仅 claude-code;多选逗号分隔)
|
|
25
|
+
npx @riconext/hermes-repo init -y --tools claude-code
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
交互式 `init` 会通过多选勾选要接入的助手;选择写入 `.memory/config.json` 的 `assistants` 字段。每次 `init` 都会**合并更新** `config.json`(含 `assistants`、`debug` 等),不会因文件已存在而跳过。
|
|
29
|
+
|
|
30
|
+
`init` 会创建:
|
|
31
|
+
|
|
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
|
+
```
|
|
45
|
+
|
|
46
|
+
初始化后正常使用编程助手;**v0.2** 起 Stop hook 执行 `capture`(启发式过滤后写入 captures),SessionStart 执行 `inject`(将 `MEMORY.md` 注入上下文)。`consolidate` 自动更新 MEMORY 在 **v0.4** 实现。
|
|
47
|
+
|
|
48
|
+
## 工作流程
|
|
49
|
+
|
|
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
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## CLI 命令
|
|
61
|
+
|
|
62
|
+
| 命令 | 说明 |
|
|
63
|
+
|------|------|
|
|
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`) |
|
|
71
|
+
|
|
72
|
+
冷启动扩展(规划中):`init --scan`、`init --interview`、`clone` 从其他仓库复用记忆。
|
|
73
|
+
|
|
74
|
+
## 记忆类型
|
|
75
|
+
|
|
76
|
+
| 类型 | 含义 | 示例 |
|
|
77
|
+
|------|------|------|
|
|
78
|
+
| **semantic** | 项目事实与约定 | API 统一返回格式、认证方案 |
|
|
79
|
+
| **episodic** | 具体事件与结果 | 某次迁移超时及根因 |
|
|
80
|
+
| **procedural** | 可复用操作步骤 | 部署、数据库迁移流程(可晋升为 Skill) |
|
|
81
|
+
|
|
82
|
+
## 团队协作
|
|
83
|
+
|
|
84
|
+
个人层(`captures/`、`sessions/`、`refs/`)默认 **不提交 git**;团队层(`topics/`、`skills/`、`MEMORY.md`)经 PR 审查后提交。
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# 标记某条捕获值得晋升
|
|
88
|
+
touch .memory/captures/semantic/capture-xxx.promote
|
|
89
|
+
|
|
90
|
+
# 生成勾选框形式的晋升 PR
|
|
91
|
+
npx @riconext/hermes-repo promote --pr
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
多人仓库下由 Memory Steward 轮值维护记忆健康度;详见设计文档中的「团队协作」与「记忆晋升 PR」章节。
|
|
95
|
+
|
|
96
|
+
## 支持的编程助手
|
|
97
|
+
|
|
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 |
|
|
105
|
+
|
|
106
|
+
v0.x 优先 Claude Code;其他适配器按路线图补齐。
|
|
107
|
+
|
|
108
|
+
## 设计原则
|
|
109
|
+
|
|
110
|
+
1. **先验证,后完善** — v0.x 用 Markdown / JSON 存储,快速验证闭环
|
|
111
|
+
2. **不阻塞用户** — hook 路径零 LLM,复杂提取与 consolidate 走后台
|
|
112
|
+
3. **记忆有边界** — 质量门槛过滤噪声,MEMORY.md 有大小上限
|
|
113
|
+
4. **渐进式采用** — 先跑通捕获与 consolidate,再扩展 Skill、MCP、FTS5
|
|
114
|
+
5. **反馈驱动** — 以 AI 是否引用记忆衡量价值,而非只写不读
|
|
115
|
+
|
|
116
|
+
## 路线图(摘要)
|
|
117
|
+
|
|
118
|
+
| 版本 | 内容 |
|
|
119
|
+
|------|------|
|
|
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 |
|
|
126
|
+
|
|
127
|
+
完整路线图与 LLM 成本分析见 [docs/hermes-repo-design.md](docs/hermes-repo-design.md)。
|
|
128
|
+
|
|
129
|
+
## 开发
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
bun install
|
|
133
|
+
bun run build
|
|
134
|
+
bun run test
|
|
135
|
+
bun run typecheck
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### 调试 hook / capture / inject
|
|
139
|
+
|
|
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` 正文。
|
|
141
|
+
|
|
142
|
+
## 本地调试 CLI
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
node dist/cli.js --version
|
|
146
|
+
node dist/cli.js
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## 文档
|
|
150
|
+
|
|
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 契约、验收标准
|
|
154
|
+
|
|
155
|
+
## License
|
|
156
|
+
|
|
157
|
+
见 [LICENSE](LICENSE)。
|