fluffy-context 0.7.7 → 1.0.0-beta.1
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/CHANGELOG.md +35 -0
- package/README.md +110 -553
- package/ROADMAP-1.0.md +70 -0
- package/dist/src/agent/api.d.ts +41 -0
- package/dist/src/agent/api.js +37 -0
- package/dist/src/agent/index.d.ts +9 -1
- package/dist/src/agent/index.js +3 -0
- package/dist/src/capture/context-filter.js +2 -0
- package/dist/src/cli/main.js +293 -15
- package/dist/src/cognition/admission.d.ts +8 -0
- package/dist/src/cognition/admission.js +24 -0
- package/dist/src/cognition/evidence-graph.d.ts +4 -0
- package/dist/src/cognition/evidence-graph.js +187 -0
- package/dist/src/cognition/evolution.d.ts +36 -0
- package/dist/src/cognition/evolution.js +221 -0
- package/dist/src/cognition/import-memory.d.ts +18 -0
- package/dist/src/cognition/import-memory.js +124 -0
- package/dist/src/cognition/journal-segments.d.ts +11 -0
- package/dist/src/cognition/journal-segments.js +129 -0
- package/dist/src/cognition/journal.d.ts +13 -0
- package/dist/src/cognition/journal.js +186 -20
- package/dist/src/cognition/migration-v1.js +39 -3
- package/dist/src/cognition/projections.js +124 -2
- package/dist/src/cognition/recipes.d.ts +25 -0
- package/dist/src/cognition/recipes.js +149 -0
- package/dist/src/cognition/runtime.js +4 -0
- package/dist/src/cognition/skills.d.ts +45 -0
- package/dist/src/cognition/skills.js +184 -0
- package/dist/src/cognition/types.d.ts +181 -1
- package/dist/src/cognition/usage-report.js +30 -15
- package/dist/src/compiler/compile.js +101 -31
- package/dist/src/compiler/graph.d.ts +7 -0
- package/dist/src/compiler/graph.js +117 -0
- package/dist/src/compiler/identity.d.ts +1 -1
- package/dist/src/compiler/identity.js +2 -0
- package/dist/src/compiler/inject.d.ts +23 -0
- package/dist/src/compiler/inject.js +27 -0
- package/dist/src/compiler/sources.d.ts +3 -1
- package/dist/src/compiler/sources.js +10 -1
- package/dist/src/compiler/types.d.ts +22 -1
- package/dist/src/hooks/claude-code.js +17 -56
- package/dist/src/integrations/claude-code.js +30 -8
- package/dist/src/mcp/server.js +228 -1
- package/dist/src/runtime/knowledge.js +57 -8
- package/dist/src/runtime/setup.d.ts +27 -0
- package/dist/src/runtime/setup.js +85 -0
- package/dist/src/storage/layout.d.ts +5 -0
- package/dist/src/storage/layout.js +15 -0
- package/dist/src/storage/lock.js +19 -2
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/package.json +4 -1
- package/skills/fluffy-context/SKILL.md +46 -8
package/README.md
CHANGED
|
@@ -1,645 +1,202 @@
|
|
|
1
1
|
# fluffy-context
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**让项目记住 AI 已经做过的工作,让下一次对话接着往下走。**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
换一个会话或换一个 AI 编程工具,你往往需要重新解释:任务进行到哪里、为什么这样设计、哪些方法已经试过。fluffy-context 把这些信息保存在项目里,在新任务开始时取出相关内容,交给 agent 使用。
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
checkpoint → orient → compile → expand → feedback → Agent continues
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
`compile` 先返回有界的 summary 候选;Agent 只对需要的候选调用 `expand` 获取 structured 或 evidence 层。`feedback` 仍必须由调用方显式记录。
|
|
12
|
-
|
|
13
|
-
`fluffy-context` 保存的是任务认知,不是项目代码备份。Git 仍是代码和文件变更的权威;Issue 系统、项目文档、`CLAUDE.md`、`AGENTS.md`、Skills 和 MCP 仍由各自系统维护。
|
|
14
|
-
|
|
15
|
-
## 30 秒了解
|
|
16
|
-
|
|
17
|
-
最常用的四类操作:
|
|
7
|
+
它是 LLM 与项目之间的一层本地记忆:保存工作进度,积累经过验证的项目知识,按当前任务提供有长度预算的上下文。CLI 命令是 `ctx`,也提供 MCP 和 JavaScript / TypeScript API。
|
|
18
8
|
|
|
19
|
-
-
|
|
20
|
-
- `ctx orient`:只读恢复当前任务,并检索匹配的已验证 Knowledge、Deadend 和 open Note。
|
|
21
|
-
- `ctx compile`:生成带预算、来源和排除原因的 provider-neutral Context Manifest。
|
|
22
|
-
- `ctx learn` / `ctx deadend`:记录可复用结论和失败方案,之后显式验证再用于普通检索。
|
|
9
|
+
> 本文对应 **1.0.0-beta.1**。稳定通道仍为 0.8.0;以下新工作流需要安装 beta。[升级说明与已知限制](CHANGELOG.md) · [1.0 后续计划](ROADMAP-1.0.md)
|
|
23
10
|
|
|
24
|
-
##
|
|
11
|
+
## 它能帮你做什么
|
|
25
12
|
|
|
26
|
-
|
|
|
13
|
+
| 你遇到的问题 | fluffy-context 的做法 |
|
|
27
14
|
| --- | --- |
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
|
|
|
32
|
-
|
|
|
33
|
-
| Runtime | 本地 v2 Runtime、Git 观察、可选文件观察、自动唤醒和 fail-open 集成 |
|
|
34
|
-
| 治理 | Knowledge/Deadend 的 candidate、verify、deprecate/obsolete、reject |
|
|
35
|
-
| 集成 | Claude Code Hook、Claude Code 配置集成、MCP `context_orient`/`context_expand`/`context_usage_report`、TypeScript Agent API |
|
|
36
|
-
| 观测 | `ctx usage report`:只读统计资产、显式复用、操作趋势和 estimated token 投入 |
|
|
37
|
-
|
|
38
|
-
以下能力**不属于 0.7.7**:
|
|
39
|
-
|
|
40
|
-
- 没有 `ctx clean`;`ctx usage report` 是当前支持的只读观测命令。
|
|
41
|
-
- 不自动创建 checkpoint、Note、Knowledge 或 Deadend。
|
|
42
|
-
- 不自动把 Candidate 提升为 Verified。
|
|
43
|
-
- 不提供模型总结、Embedding/向量检索、远程同步、多人协作或 Context merge。
|
|
44
|
-
|
|
45
|
-
0.7.7 已支持 `context_expand`,用于按需取得已选候选的 `structured` 或 `evidence` 层;它是无状态、只读操作,不读取项目文件内容,也不自动记录 feedback。
|
|
46
|
-
|
|
47
|
-
## 快速开始
|
|
15
|
+
| 新对话不知道上次做到哪里 | 保存进度、决策和待办,在下次任务开始时恢复 |
|
|
16
|
+
| 不同 agent 重复探索同一个问题 | 将经过核验的结论和失败方案保存在项目中,供不同工具查询 |
|
|
17
|
+
| 项目记忆散落在各种文档里 | 扫描已有 memory 和 agent 文档,去重后导入待核验知识 |
|
|
18
|
+
| 把所有历史塞进 prompt 太长 | 按任务检索,在给定字符预算内返回相关上下文 |
|
|
19
|
+
| 不知道保存的东西有没有用 | 查看知识、显式复用记录、日志体积和上下文成本估算 |
|
|
48
20
|
|
|
49
|
-
|
|
21
|
+
它适合持续维护的项目、跨会话的开发任务,以及多个 AI 工具交替使用的工作流。项目代码仍由 Git 管理;ctx 保存的是工作状态与项目知识。
|
|
50
22
|
|
|
51
|
-
|
|
23
|
+
## 五分钟开始使用
|
|
52
24
|
|
|
53
|
-
|
|
54
|
-
npm install --global fluffy-context
|
|
55
|
-
ctx --version
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
在源码工作树中开发时:
|
|
59
|
-
|
|
60
|
-
```bash
|
|
61
|
-
npm install
|
|
62
|
-
npm run build
|
|
63
|
-
npm install --global .
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### 2. 初始化项目
|
|
25
|
+
需要 **Node.js 20.19 或更高版本**。在终端安装,然后进入你的项目目录:
|
|
67
26
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
27
|
+
```sh
|
|
28
|
+
npm install --global fluffy-context@beta
|
|
29
|
+
cd your-project
|
|
71
30
|
ctx init
|
|
72
31
|
```
|
|
73
32
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
```bash
|
|
77
|
-
ctx init --path path/to/project
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
初始化会创建本地 `.context/` 存储和 `.contextignored` 规则文件。重复执行是幂等的,不会覆盖已有 Context 或忽略规则。
|
|
33
|
+
`init` 会创建本地存储、迁移并校验旧数据、向 `AGENTS.md` 添加使用指引,并启动本地运行时。已有 `.claude` 目录时,还会配置 Claude Code 集成。重复执行会保留已有数据和禁用设置,不需要再逐条运行 migrate、verify、enable、start。
|
|
81
34
|
|
|
82
|
-
###
|
|
35
|
+
### 1. 开始任务时,取得项目上下文
|
|
83
36
|
|
|
84
|
-
```
|
|
85
|
-
ctx
|
|
86
|
-
--title "支付回调修复" \
|
|
87
|
-
--progress "已定位签名校验失败原因" \
|
|
88
|
-
--completed "复现问题,确认失败边界" \
|
|
89
|
-
--pending "补充回归测试,运行集成测试" \
|
|
90
|
-
--decisions "在回调入口统一执行签名校验" \
|
|
91
|
-
--risks "第三方回调可能重复到达" \
|
|
92
|
-
--files "src/payment/callback.ts,test/payment/callback.test.ts"
|
|
37
|
+
```sh
|
|
38
|
+
ctx inject "修复支付回调重复处理的问题"
|
|
93
39
|
```
|
|
94
40
|
|
|
95
|
-
|
|
41
|
+
让 agent 执行这条命令,并读取返回的 `text`。它会包含相关的任务进度、已验证知识、失败方案和工作笔记。默认正文最多 2400 字符,需要时可以调整:
|
|
96
42
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
- 只有标题、没有实际结构化内容的 checkpoint 不会创建无意义 Snapshot。
|
|
100
|
-
- `--last-error ""`、空列表等显式输入可以清理已有字段。
|
|
101
|
-
|
|
102
|
-
查看当前状态:
|
|
103
|
-
|
|
104
|
-
```bash
|
|
105
|
-
ctx status
|
|
106
|
-
ctx resume --max-chars 2000
|
|
43
|
+
```sh
|
|
44
|
+
ctx inject "修复支付回调重复处理的问题" --max-chars 4000
|
|
107
45
|
```
|
|
108
46
|
|
|
109
|
-
|
|
47
|
+
新项目还没有记忆,第一次返回内容很少是正常的。ctx 不会仅凭一次初始化就理解整个代码库。
|
|
110
48
|
|
|
111
|
-
|
|
112
|
-
ctx orient "支付回调签名校验" --max-chars 4000
|
|
113
|
-
```
|
|
49
|
+
### 2. 完成一个阶段后,留下进度
|
|
114
50
|
|
|
115
|
-
|
|
51
|
+
例如,你已经定位问题,但还没写完测试:
|
|
116
52
|
|
|
117
|
-
```
|
|
118
|
-
ctx
|
|
53
|
+
```sh
|
|
54
|
+
ctx checkpoint --title "支付回调修复" --progress "已定位重复回调导致重复扣款" --completed "复现问题,确认幂等键缺失" --pending "补充幂等处理,运行回归测试" --decisions "使用订单号和事件号作为幂等键"
|
|
119
55
|
```
|
|
120
56
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
```text
|
|
124
|
-
Orient → Plan → Implement → Verify → Handoff
|
|
125
|
-
```
|
|
57
|
+
下次换会话或换工具,再执行 `ctx inject "继续支付回调修复"`,agent 就能从保存的状态继续。
|
|
126
58
|
|
|
127
|
-
|
|
128
|
-
2. **Plan**:先形成可执行的实现计划。
|
|
129
|
-
3. **Implement**:遇到重要观察、阻塞或临时决策时记录 Note。
|
|
130
|
-
4. **Verify**:运行适用的测试、构建或其他检查。
|
|
131
|
-
5. **Handoff**:阶段结束时显式执行一次 checkpoint,记录完成项、待办、决策和风险。
|
|
59
|
+
这些命令返回 JSON,方便 agent 和脚本读取。你也可以直接在终端使用。
|
|
132
60
|
|
|
133
|
-
|
|
61
|
+
## 怎样接入你的 AI 编程工具
|
|
134
62
|
|
|
135
|
-
|
|
63
|
+
接入后,理想的日常流程是:**任务开始取上下文 → 开发与验证 → 阶段结束存进度**。不需要人每轮对话都操作 ctx,但 agent 是否会触发取决于宿主的接入方式。
|
|
136
64
|
|
|
137
|
-
###
|
|
65
|
+
### Claude Code
|
|
138
66
|
|
|
139
|
-
`
|
|
67
|
+
项目已有 `.claude` 目录时,`ctx init` 会配置项目级 Hook 和 MCP。新项目也可以显式安装:
|
|
140
68
|
|
|
141
|
-
```
|
|
142
|
-
ctx
|
|
143
|
-
|
|
144
|
-
--max-chars 4000 \
|
|
145
|
-
--knowledge-limit 5 \
|
|
146
|
-
--deadend-limit 5 \
|
|
147
|
-
--note-limit 10
|
|
69
|
+
```sh
|
|
70
|
+
ctx integrate claude install --apply
|
|
71
|
+
ctx integrate claude inspect
|
|
148
72
|
```
|
|
149
73
|
|
|
150
|
-
|
|
74
|
+
随后重启或重新连接 Claude Code。Hook 在会话开始和提交新任务时提供上下文;MCP 工具供 agent 按需查询、记录进度。这是当前提供自动注入的宿主适配器,真实宿主中的触发效果仍需 beta 验证。
|
|
151
75
|
|
|
152
|
-
|
|
153
|
-
- 受字符预算限制的进度、错误、完成项、待办、决策、风险和关联文件;
|
|
154
|
-
- 匹配且适用的已验证 Knowledge 和 Deadend;
|
|
155
|
-
- 当前 Context 尚未吸收的 open Note;
|
|
156
|
-
- v1/v2 选择方式、排除计数和截断说明。
|
|
76
|
+
### 支持项目指引的 agent
|
|
157
77
|
|
|
158
|
-
`
|
|
78
|
+
`ctx init` 写入的 `AGENTS.md` 指引会告诉 agent:新任务、上下文恢复或遇到新错误时调用 `ctx inject`,完成重要阶段后调用 `ctx checkpoint`。
|
|
159
79
|
|
|
160
|
-
|
|
80
|
+
宿主需要能读取项目指引并执行本地命令。这种方式依赖 agent 遵循指引,不保证每个工具都会自动触发。
|
|
161
81
|
|
|
162
|
-
###
|
|
82
|
+
### 其它支持 MCP 的工具
|
|
163
83
|
|
|
164
|
-
|
|
84
|
+
在工具的 MCP 设置中添加一个本地 stdio 服务,命令为 `ctx`,参数为 `agent`、`serve`。例如,支持以下配置格式的客户端可以使用:
|
|
165
85
|
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"mcpServers": {
|
|
89
|
+
"fluffy-context": {
|
|
90
|
+
"command": "ctx",
|
|
91
|
+
"args": ["agent", "serve"]
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
170
95
|
```
|
|
171
96
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
- `intent`:规范化后的任务意图、场景、scope、paths 和预算;
|
|
175
|
-
- `selected`:最终纳入的候选项;
|
|
176
|
-
- `sections`:按 Context、Snapshot、Note、Knowledge、Deadend、Activity 等来源分组;
|
|
177
|
-
- `excluded`:未纳入项目及其原因;
|
|
178
|
-
- `provenance`:来源 Context、Snapshot、journal event 和读取状态;
|
|
179
|
-
- `budget`:请求、使用、剩余字符和 section 统计;
|
|
180
|
-
- `truncation`:预算或候选限制造成的截断说明;
|
|
181
|
-
- `identity`:Manifest hash、选中 item hash 和 estimated token;
|
|
182
|
-
- `text`:最终有界文本。
|
|
183
|
-
|
|
184
|
-
0.7.7 的候选项提供:
|
|
185
|
-
|
|
186
|
-
```text
|
|
187
|
-
level: signal | summary | structured | evidence
|
|
188
|
-
itemHash
|
|
189
|
-
tokenEstimate
|
|
190
|
-
expandable
|
|
191
|
-
```
|
|
97
|
+
将服务的工作目录设为项目目录,或在调用工具时传入项目的绝对 `path`。如果客户端找不到 `ctx`,使用其支持的绝对可执行路径配置方式。
|
|
192
98
|
|
|
193
|
-
|
|
99
|
+
先接入三个工具就能形成日常闭环:`context_inject` 取得上下文,`context_checkpoint` 保存进度,`context_import` 导入已有记忆。工具列表和输入参数由 MCP 服务提供。
|
|
194
100
|
|
|
195
|
-
|
|
101
|
+
## 让工作经验变成可复用的知识
|
|
196
102
|
|
|
197
|
-
|
|
103
|
+
进度回答“做到哪里了”,知识回答“下次遇到类似问题应该知道什么”。两者需要分别保存。
|
|
198
104
|
|
|
199
|
-
|
|
200
|
-
ctx compile "修复支付回调" --max-chars 4000 > manifest.json
|
|
201
|
-
ctx expand --manifest-hash <manifestHash> --candidate-id <candidateId> \
|
|
202
|
-
--level structured --compile-max-chars 4000 --query "修复支付回调"
|
|
203
|
-
```
|
|
105
|
+
例如,你通过代码和测试确认了项目约束,可以记录结论及证据:
|
|
204
106
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
Compiler 具有以下边界:
|
|
208
|
-
|
|
209
|
-
- 相同输入得到确定性的排序、截断和 hash;
|
|
210
|
-
- `maxChars` 使用 JavaScript UTF-16 字符串长度;
|
|
211
|
-
- 不调用模型;
|
|
212
|
-
- 不写入 Context 或 journal;
|
|
213
|
-
- 普通查询默认只纳入适用且已验证的 Knowledge 和 Deadend;
|
|
214
|
-
- `context_expand` 只读取已选候选的安全 metadata,不读取任意项目文件内容。
|
|
215
|
-
|
|
216
|
-
### `ctx usage report`
|
|
217
|
-
|
|
218
|
-
`usage report` 适合每周或每月复盘,不需要为每条 prompt 调用。它是只读的,基于 v1 文件和 v2 journal 派生统计,不创建事件、不修改 Context、Snapshot、Note 或 projection:
|
|
219
|
-
|
|
220
|
-
```bash
|
|
221
|
-
ctx usage report --days 30
|
|
222
|
-
ctx usage report --month 2026-08 --granularity week
|
|
223
|
-
ctx usage report --since 2026-08-01T00:00:00.000Z \
|
|
224
|
-
--until 2026-09-01T00:00:00.000Z \
|
|
225
|
-
--baseline-tokens 12000 --baseline-source manual
|
|
226
|
-
ctx usage report --format ascii
|
|
107
|
+
```sh
|
|
108
|
+
ctx learn "支付回调必须在同一事务中写入幂等记录和更新订单状态" --evidence "src/payment/callback.ts,test/payment/callback.test.ts"
|
|
227
109
|
```
|
|
228
110
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
报告中的 `chars / 4` 是 `estimated` token,不是真实 Provider token;Provider token 和计费金额当前为 `unavailable`。没有显式 `--baseline-tokens` 时,不会虚构 estimated savings、ROI 或 payback;查询命中、候选选择和编译纳入也不等于 reuse,只有显式 `record.used` 事件才计入复用。报告不替代 `ctx doctor`、`ctx journal verify` 或 Knowledge/Deadend 的人工治理。
|
|
232
|
-
|
|
233
|
-
## Knowledge、Deadend 和 Note
|
|
234
|
-
|
|
235
|
-
### Knowledge:记录可复用认知
|
|
111
|
+
返回结果中会包含 `knowledgeId`。确认结论确实有依据后,将实际 ID 代入:
|
|
236
112
|
|
|
237
|
-
```
|
|
238
|
-
ctx learn "支付回调必须验证网关签名" \
|
|
239
|
-
--scope project \
|
|
240
|
-
--evidence "src/payment/callback.ts,回归测试"
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
新记录默认是 `candidate`,不会进入普通检索。确认后才会进入默认发现:
|
|
244
|
-
|
|
245
|
-
```bash
|
|
113
|
+
```sh
|
|
246
114
|
ctx knowledge verify <knowledge-id>
|
|
247
|
-
ctx knowledge discover "支付回调"
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
治理已有记录:
|
|
251
|
-
|
|
252
|
-
```bash
|
|
253
|
-
ctx knowledge deprecate <knowledge-id> --reason "已被新的签名校验流程取代"
|
|
254
|
-
ctx knowledge reject <knowledge-id> --reason "证据不足"
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
普通 `orient` 和 `discover` 默认只使用 `verified` 且适用的 Knowledge。需要审查候选或其他状态时,使用 `--all` 或显式 `--status`。
|
|
258
|
-
|
|
259
|
-
### Deadend:记录已验证不可行方案
|
|
260
|
-
|
|
261
|
-
```bash
|
|
262
|
-
ctx deadend \
|
|
263
|
-
--attempt "绕过回调签名验证" \
|
|
264
|
-
--reason "回归测试失败且会引入安全风险" \
|
|
265
|
-
--scope project \
|
|
266
|
-
--evidence "test/payment/callback.test.ts"
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
确认和治理:
|
|
270
|
-
|
|
271
|
-
```bash
|
|
272
|
-
ctx deadend verify <deadend-id>
|
|
273
|
-
ctx deadend obsolete <deadend-id> --reason "当前架构已不再适用"
|
|
274
|
-
ctx deadend reject <deadend-id> --reason "失败证据不足"
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
Deadend 默认也是 `candidate`;只有 `verified` Deadend 才会进入普通检索。终态记录会保留治理原因,但不会默认注入。
|
|
278
|
-
|
|
279
|
-
### Note:低成本记录过程信息
|
|
280
|
-
|
|
281
|
-
Note 不创建 Snapshot,适合开发过程中记录短期观察、问题、行动和决策:
|
|
282
|
-
|
|
283
|
-
```bash
|
|
284
|
-
ctx note add "测试环境缺少回调凭据" \
|
|
285
|
-
--kind problem \
|
|
286
|
-
--context <context-id>
|
|
287
|
-
|
|
288
|
-
ctx note add "保留原始请求体后再执行验签" \
|
|
289
|
-
--kind decision \
|
|
290
|
-
--status resolved \
|
|
291
|
-
--context <context-id>
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
查看 Note 和只读 Activity:
|
|
295
|
-
|
|
296
|
-
```bash
|
|
297
|
-
ctx note list --context <context-id> --open
|
|
298
|
-
ctx activity --context <context-id> --open
|
|
299
|
-
```
|
|
300
|
-
|
|
301
|
-
阶段性 checkpoint 可以显式吸收当前 Context 的 open Note:
|
|
302
|
-
|
|
303
|
-
```bash
|
|
304
|
-
ctx checkpoint \
|
|
305
|
-
--context <context-id> \
|
|
306
|
-
--progress "完成阶段排查" \
|
|
307
|
-
--absorb-notes
|
|
308
|
-
```
|
|
309
|
-
|
|
310
|
-
只有真正保存了新 Snapshot 时 Note 才会被标记为已吸收;`no_change` 和 `rate_limited` 不会改变 Note。
|
|
311
|
-
|
|
312
|
-
## CLI 能力地图
|
|
313
|
-
|
|
314
|
-
完整参数请使用 `ctx <command> --help`。常用命令按用途分组如下。
|
|
315
|
-
|
|
316
|
-
### 日常使用
|
|
317
|
-
|
|
318
|
-
| 命令 | 用途 |
|
|
319
|
-
| --- | --- |
|
|
320
|
-
| `ctx init` | 初始化 `.context/` |
|
|
321
|
-
| `ctx checkpoint` | 保存 Context Snapshot |
|
|
322
|
-
| `ctx resume` | 恢复完整 Context 详情 |
|
|
323
|
-
| `ctx orient` | 读取有界任务上下文 |
|
|
324
|
-
| `ctx compile` | 生成结构化 Context Manifest |
|
|
325
|
-
| `ctx note add/list` | 记录和查看 Note |
|
|
326
|
-
| `ctx activity` | 查看只读 Note/Snapshot 时间线 |
|
|
327
|
-
| `ctx status` | 查看项目和 Context 索引 |
|
|
328
|
-
| `ctx doctor` | 检查文件和 Snapshot 完整性 |
|
|
329
|
-
|
|
330
|
-
### Knowledge 与 Deadend 治理
|
|
331
|
-
|
|
332
|
-
```text
|
|
333
|
-
ctx learn
|
|
334
|
-
ctx knowledge
|
|
335
|
-
ctx knowledge discover
|
|
336
|
-
ctx knowledge verify
|
|
337
|
-
ctx knowledge deprecate
|
|
338
|
-
ctx knowledge reject
|
|
339
|
-
ctx deadend
|
|
340
|
-
ctx deadends
|
|
341
|
-
ctx deadend verify
|
|
342
|
-
ctx deadend obsolete
|
|
343
|
-
ctx deadend reject
|
|
344
|
-
ctx feedback use
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
`feedback use` 只记录显式的使用信号,用于确定性排序;不会改变 Knowledge/Deadend 的验证状态、confidence、证据或适用性。
|
|
348
|
-
|
|
349
|
-
### 集成入口
|
|
350
|
-
|
|
351
|
-
```text
|
|
352
|
-
ctx integrate claude inspect
|
|
353
|
-
ctx integrate claude install
|
|
354
|
-
ctx integrate claude install --apply
|
|
355
|
-
ctx hook claude-code session-start
|
|
356
|
-
ctx hook claude-code user-prompt
|
|
357
|
-
ctx agent serve
|
|
358
115
|
```
|
|
359
116
|
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
```text
|
|
363
|
-
ctx migrate v1 --dry-run
|
|
364
|
-
ctx migrate v1 --apply
|
|
365
|
-
ctx migrate verify
|
|
366
|
-
ctx journal verify
|
|
367
|
-
ctx runtime enable
|
|
368
|
-
ctx runtime disable
|
|
369
|
-
ctx runtime start
|
|
370
|
-
ctx runtime stop
|
|
371
|
-
ctx runtime status
|
|
372
|
-
ctx filesystem enable
|
|
373
|
-
ctx filesystem disable
|
|
374
|
-
ctx filesystem status
|
|
375
|
-
```
|
|
117
|
+
此后,与支付回调相关的 `ctx inject` 才能把它作为已验证知识检索出来。`verify` 记录的是你或 agent 的核验决定,命令本身不会替你运行测试、证明结论。
|
|
376
118
|
|
|
377
|
-
|
|
119
|
+
“越用越聪明”来自这个循环:**真实工作 → 留下证据 → 核验结论 → 后续任务复用**。当前版本不会自动训练模型,也不会把所有对话自动升级为可信知识。
|
|
378
120
|
|
|
379
|
-
|
|
121
|
+
### 已经有 memory 或 agent 文档?
|
|
380
122
|
|
|
381
|
-
|
|
123
|
+
先预览将导入的内容:
|
|
382
124
|
|
|
383
|
-
```
|
|
384
|
-
ctx
|
|
385
|
-
ctx filesystem status
|
|
386
|
-
ctx filesystem disable
|
|
125
|
+
```sh
|
|
126
|
+
ctx import
|
|
387
127
|
```
|
|
388
128
|
|
|
389
|
-
|
|
129
|
+
检查后再保存:
|
|
390
130
|
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
- `--activity-limit 0` 只关闭单次编译中的 activity 候选,不改变监听策略;
|
|
395
|
-
- v1 fallback 没有等价的文件活动来源,因此 activity section 可能为空。
|
|
396
|
-
|
|
397
|
-
完成 v1 迁移并启用 Runtime 后,Runtime 会服务于当前项目的 v2 journal、Git 观察和可选文件观察。常用控制命令:
|
|
398
|
-
|
|
399
|
-
```bash
|
|
400
|
-
ctx runtime status
|
|
401
|
-
ctx runtime enable
|
|
402
|
-
ctx runtime start
|
|
403
|
-
ctx runtime stop
|
|
404
|
-
ctx runtime disable
|
|
131
|
+
```sh
|
|
132
|
+
ctx import --apply
|
|
133
|
+
ctx knowledge --all
|
|
405
134
|
```
|
|
406
135
|
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
## Claude Code 集成
|
|
410
|
-
|
|
411
|
-
先检查当前项目:
|
|
136
|
+
支持项目内的 `memory/`、`.memory/`、`.claude/`、`.zcode/`、`.cursor/`、`.curcor/`、`.codex/`,以及 `AGENTS.md`、`CLAUDE.md`、`MEMORY.md`、`.cursorrules` 等文本来源。它会记录来源并去重;重复导入相同内容不会创建新知识。
|
|
412
137
|
|
|
413
|
-
|
|
414
|
-
ctx integrate claude inspect
|
|
415
|
-
```
|
|
138
|
+
导入的内容保持候选状态,核验后才进入普通检索。当前采用有限长度的文本行抽取,复杂多段结构可能需要人工整理。
|
|
416
139
|
|
|
417
|
-
|
|
140
|
+
## 查看它是否真的有用
|
|
418
141
|
|
|
419
|
-
|
|
420
|
-
ctx integrate claude install
|
|
421
|
-
```
|
|
142
|
+
使用易读的终端报告:
|
|
422
143
|
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
```bash
|
|
426
|
-
ctx integrate claude install --apply
|
|
144
|
+
```sh
|
|
145
|
+
ctx report --format ascii
|
|
427
146
|
```
|
|
428
147
|
|
|
429
|
-
|
|
148
|
+
报告展示已验证知识、显式复用记录、上下文输入/输出估算、日志体积和事件构成。需要程序处理时,使用默认返回 JSON 的 `ctx report`。
|
|
430
149
|
|
|
431
|
-
|
|
432
|
-
- `.mcp.json`:名为 `fluffy-context` 的 stdio MCP server。
|
|
150
|
+
**检索到不等于采用,字符减少不等于模型账单减少。** 当前 token 使用字符数粗估,尚未接入模型提供商的实际用量;没有对照数据时,报告不能证明任务节省了多少 token 或时间。
|
|
433
151
|
|
|
434
|
-
|
|
152
|
+
## 数据保存在什么地方
|
|
435
153
|
|
|
436
|
-
|
|
154
|
+
- 项目状态和知识保存在本地 `.context/`,核心检索不需要云服务或模型 API key。
|
|
155
|
+
- `.contextignored` 用于配置要忽略的项目路径;默认过滤常见敏感文件。导入也会跳过疑似秘密行,但无法保证识别全部敏感内容,应用前应检查预览。
|
|
156
|
+
- 初始化可能修改项目的 `AGENTS.md`;Claude 集成会修改 `.claude/settings.json` 和 `.mcp.json`。
|
|
157
|
+
- 默认不开启文件监听。日志会分段压缩;可选观察有入库预算,但语义历史没有总容量硬上限。
|
|
437
158
|
|
|
438
|
-
|
|
159
|
+
CI 或不希望启动后台进程、写入宿主配置时,使用:
|
|
439
160
|
|
|
440
|
-
```
|
|
441
|
-
ctx
|
|
161
|
+
```sh
|
|
162
|
+
ctx init --no-start --no-integrations
|
|
442
163
|
```
|
|
443
164
|
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
```text
|
|
447
|
-
context_orient 只读、有界地获取任务上下文
|
|
448
|
-
context_expand 只读地展开 selected compiler candidate
|
|
449
|
-
context_compile 只读地生成确定性 Manifest
|
|
450
|
-
context_resume 恢复 Context(可能更新 lastUsedAt)
|
|
451
|
-
context_note_list 只读地列出 Note
|
|
452
|
-
context_note_add 显式新增 Note
|
|
453
|
-
context_checkpoint 显式保存 Context/Snapshot
|
|
454
|
-
```
|
|
455
|
-
|
|
456
|
-
输入字段与 CLI/Agent API 对齐:
|
|
457
|
-
|
|
458
|
-
- `context_orient`:`path`、`contextId`、`query`、`scope`、`maxChars` 和各 source limit;
|
|
459
|
-
- `context_compile`:编译选项及 `scenario`、`paths`、`activityLimit`、`trigger` 等字段;
|
|
460
|
-
- `context_expand`:`manifestHash`、`candidateId` 或 `itemHash`、`level`、独立 `maxChars` 和原始 `compile` 参数;
|
|
461
|
-
- `context_resume`:`contextId`、`maxChars`、`includeDetails`、`query`、`scope`;
|
|
462
|
-
- `context_note_list`:`contextId`、`openOnly`、`limit`、`maxChars`;
|
|
463
|
-
- `context_note_add`:必填 `message`,以及 Note 的 `kind`、`actor`、关联 Context/Snapshot、`relatedFiles` 和 `status`;
|
|
464
|
-
- `context_checkpoint`:Context 输入字段、`absorbNotes` 和可选的 `lastError`。
|
|
165
|
+
## 遇到问题
|
|
465
166
|
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
167
|
+
| 情况 | 下一步 |
|
|
168
|
+
| --- | --- |
|
|
169
|
+
| 新项目没有可注入的内容 | 先保存一个真实 checkpoint,或导入并核验已有记忆 |
|
|
170
|
+
| 导入后查询不到知识 | 用 `ctx knowledge --all` 查看候选;核验后再执行 verify |
|
|
171
|
+
| agent 没有主动使用 ctx | 检查宿主是否加载项目指引、Hook 或 MCP;重连后确认工具可用 |
|
|
172
|
+
| 找不到项目或需要检查存储 | 执行 `ctx status`、`ctx doctor`;在其它目录操作时传入 `--path` |
|
|
173
|
+
| checkpoint 返回 `rate_limited` | 两次变化写入默认间隔至少 10 秒;到下一阶段再保存,避免循环重试 |
|
|
174
|
+
| 想停止本地运行时 | 临时停止用 `ctx runtime stop`;持续禁用自动启动用 `ctx runtime disable` |
|
|
469
175
|
|
|
470
|
-
|
|
471
|
-
- `context_resume` 使用现有 `loadContext` 语义,可能更新 `lastUsedAt`,但不会创建 Snapshot;
|
|
472
|
-
- `context_note_add` 会写入 Note,但不会创建 Snapshot;
|
|
473
|
-
- `context_checkpoint` 会创建或更新 Snapshot、Context metadata 和 index,并可显式吸收 Note;
|
|
474
|
-
- 任何工具都不会自动创建 Knowledge、Deadend、feedback 或重复 checkpoint;
|
|
475
|
-
- Knowledge/Deadend 的记录和治理暂不提供独立 MCP 工具,继续使用 CLI/Agent API。
|
|
176
|
+
从 0.8.0 升级前,请先阅读[升级步骤](CHANGELOG.md#从-080-升级):停止旧进程并备份 `.context`。新版压缩日志不能与 0.8.0 混用,升级全局包后也需要重启旧 MCP 连接。
|
|
476
177
|
|
|
477
|
-
|
|
178
|
+
完整参数可通过 `ctx --help`、`ctx <command> --help` 查看。`compile` / `expand` 等高级命令用于需要更多来源详情或自行构建 agent 集成的场景,不是首次使用的必做步骤。
|
|
478
179
|
|
|
479
|
-
##
|
|
180
|
+
## 在代码中使用与参与开发
|
|
480
181
|
|
|
481
|
-
|
|
182
|
+
自建 agent 可以通过 npm 包调用相同能力:
|
|
482
183
|
|
|
483
|
-
```
|
|
484
|
-
import {
|
|
485
|
-
contextOrient,
|
|
486
|
-
compileContext,
|
|
487
|
-
contextExpand,
|
|
488
|
-
saveContext,
|
|
489
|
-
loadContext,
|
|
490
|
-
searchContext,
|
|
491
|
-
} from 'fluffy-context';
|
|
184
|
+
```js
|
|
185
|
+
import { injectContext } from 'fluffy-context';
|
|
492
186
|
|
|
493
|
-
const
|
|
494
|
-
query: '
|
|
187
|
+
const context = await injectContext('/absolute/path/to/project', {
|
|
188
|
+
query: '修复支付回调重复处理的问题',
|
|
495
189
|
maxChars: 2400,
|
|
496
190
|
});
|
|
497
|
-
|
|
498
|
-
const manifest = await compileContext(process.cwd(), {
|
|
499
|
-
query: 'payment callback',
|
|
500
|
-
maxChars: 4000,
|
|
501
|
-
});
|
|
191
|
+
console.log(context.text);
|
|
502
192
|
```
|
|
503
193
|
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
```text
|
|
507
|
-
contextOrient
|
|
508
|
-
compileContext
|
|
509
|
-
contextExpand
|
|
510
|
-
saveContext
|
|
511
|
-
loadContext
|
|
512
|
-
searchContext
|
|
513
|
-
recordContextUse
|
|
514
|
-
```
|
|
515
|
-
|
|
516
|
-
Compiler identity 工具也通过公开入口导出:
|
|
517
|
-
|
|
518
|
-
```text
|
|
519
|
-
canonicalJson
|
|
520
|
-
contentHash
|
|
521
|
-
estimateTokens
|
|
522
|
-
rebuildManifestHash
|
|
523
|
-
validateManifestIdentity
|
|
524
|
-
```
|
|
525
|
-
|
|
526
|
-
存储布局不是公开兼容性承诺;调用方应根据返回结果处理 `status`、预算、截断和 fallback 信息。
|
|
527
|
-
|
|
528
|
-
## 安全与隐私边界
|
|
529
|
-
|
|
530
|
-
### `.contextignored`
|
|
531
|
-
|
|
532
|
-
`.contextignored` 使用接近 `.gitignore` 的规则排除不应作为关联文件保存的路径:
|
|
533
|
-
|
|
534
|
-
```gitignore
|
|
535
|
-
private/
|
|
536
|
-
*.generated.ts
|
|
537
|
-
notes/draft-*
|
|
538
|
-
```
|
|
539
|
-
|
|
540
|
-
内置保护规则优先于项目规则,不能通过否定规则绕过。默认排除包括:
|
|
541
|
-
|
|
542
|
-
- `.context/`、`.git/`;
|
|
543
|
-
- `node_modules/`、`dist/`、`build/`、`coverage/` 等依赖和构建目录;
|
|
544
|
-
- `.env`、`.env.*`;
|
|
545
|
-
- `*.pem`、`*.key`、`*.p12`、`*.pfx`;
|
|
546
|
-
- 常见 credential、secret、token 文件;
|
|
547
|
-
- 绝对路径和 `..` 越界路径。
|
|
194
|
+
开发本项目:
|
|
548
195
|
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
- checkpoint、Note、Knowledge 和 Deadend 会保存用户显式提供的结构化任务文本;
|
|
552
|
-
- 文件观察只保存过滤后的相对路径和 metadata,不保存内容或 diff;
|
|
553
|
-
- Claude Hook 不保存原始 prompt,只在具备稳定标识时保存限长、脱敏后的 intent;
|
|
554
|
-
- Runtime 仅绑定 `127.0.0.1`,使用项目本地能力令牌进行 IPC;令牌不会出现在状态输出或事件日志;
|
|
555
|
-
- 集成、Runtime 或 v2 读取失败时,支持回退的宿主流程保持 fail-open。
|
|
556
|
-
|
|
557
|
-
## v1 迁移
|
|
558
|
-
|
|
559
|
-
已有 v1 `.context/` 数据时,先只读检查,再显式导入:
|
|
560
|
-
|
|
561
|
-
```bash
|
|
562
|
-
ctx migrate v1 --dry-run
|
|
563
|
-
ctx migrate v1 --apply
|
|
564
|
-
ctx migrate verify
|
|
565
|
-
```
|
|
566
|
-
|
|
567
|
-
- `--dry-run` 只检查,不创建 v2 数据;
|
|
568
|
-
- `--apply` 才会追加 v1 provenance 事件;
|
|
569
|
-
- 迁移不会重写或修复 v1 文件;
|
|
570
|
-
- v1 与 v2 可以并存;
|
|
571
|
-
- v2 不可用、损坏或尚未同步时,支持回退的读取接口继续使用 v1 行为;
|
|
572
|
-
- `ctx journal verify` 可验证 v2 journal 的 hash chain 和记录完整性。
|
|
573
|
-
|
|
574
|
-
## 常见问题
|
|
575
|
-
|
|
576
|
-
### `ctx orient` 返回 `no_context`
|
|
577
|
-
|
|
578
|
-
项目已初始化,但还没有包含实际内容的有效 checkpoint。运行:
|
|
579
|
-
|
|
580
|
-
```bash
|
|
581
|
-
ctx checkpoint --title "当前任务" --progress "记录当前进度"
|
|
582
|
-
```
|
|
583
|
-
|
|
584
|
-
### checkpoint 返回 `rate_limited`
|
|
585
|
-
|
|
586
|
-
这是默认写入保护,不是保存损坏。查看返回的 `retryAt`,完成更多阶段工作后再保存,不要循环重试。
|
|
587
|
-
|
|
588
|
-
### 为什么文件没有进入 Snapshot 的 `relatedFiles`
|
|
589
|
-
|
|
590
|
-
先检查 `.contextignored` 和内置保护规则。敏感、构建、依赖、绝对路径和越界路径会被排除,即使使用否定规则也不能绕过。
|
|
591
|
-
|
|
592
|
-
### Context 找不到怎么办
|
|
593
|
-
|
|
594
|
-
确认当前项目路径和 Context ID,然后运行:
|
|
595
|
-
|
|
596
|
-
```bash
|
|
597
|
-
ctx status --path path/to/project
|
|
598
|
-
ctx doctor --path path/to/project
|
|
599
|
-
```
|
|
600
|
-
|
|
601
|
-
Git branch/ref 漂移通常是提示,不等于 Context 被删除。
|
|
602
|
-
|
|
603
|
-
### 为什么 `--help` 不能用 JSON.parse
|
|
604
|
-
|
|
605
|
-
输出类型不同:
|
|
606
|
-
|
|
607
|
-
- `ctx --help`:纯文本;
|
|
608
|
-
- `ctx --version`:JSON 字符串;
|
|
609
|
-
- 业务命令:格式化 JSON;
|
|
610
|
-
- 错误:stderr 和非零退出码。
|
|
611
|
-
|
|
612
|
-
### Windows 下从 Node 子进程调用 `ctx`
|
|
613
|
-
|
|
614
|
-
交互式终端通常可以直接运行 `ctx`。从 Node `spawn` 或其他程序调用时,Windows npm 可能需要使用 `ctx.cmd`;不要把未经转义的用户输入拼接进 shell 命令。
|
|
615
|
-
|
|
616
|
-
## 开发与验证
|
|
617
|
-
|
|
618
|
-
```bash
|
|
619
|
-
npm install
|
|
620
|
-
npm run build
|
|
196
|
+
```sh
|
|
197
|
+
npm ci
|
|
621
198
|
npm test
|
|
622
199
|
npm run pack:check
|
|
623
|
-
npm pack --dry-run --json
|
|
624
200
|
```
|
|
625
201
|
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
## 未来方向
|
|
629
|
-
|
|
630
|
-
以下方向属于后续版本,不是 0.7.7 的当前能力:
|
|
631
|
-
|
|
632
|
-
| 方向 | 目标 |
|
|
633
|
-
| --- | --- |
|
|
634
|
-
| Context expansion | 在现有 `context_expand` 基础上继续完善更丰富的分层内容 |
|
|
635
|
-
| Decision Graph | 将决策变成可治理、可追溯的一等对象 |
|
|
636
|
-
| Knowledge Evolution | 支持知识合并、替代、范围演化和 review-needed 信号 |
|
|
637
|
-
| Journal maintenance | 提供安全的清理、归档和长期运行维护能力 |
|
|
638
|
-
| Usage reporting | 统计估算 token、编译、展开、检索和反馈覆盖情况(`ctx report`) |
|
|
639
|
-
| 外部协作 | 远程同步、多人协作和团队权限 |
|
|
640
|
-
|
|
641
|
-
这些方向不会改变当前的边界:Git、项目文档和宿主规则继续由各自系统负责;Candidate 仍需要显式治理;模型调用和远程服务不是核心 Runtime 的隐式依赖。
|
|
642
|
-
|
|
643
|
-
## License
|
|
644
|
-
|
|
645
|
-
MIT
|
|
202
|
+
本地全局验收使用 `npm run install:local`:构建 tarball、安装全局 ctx、核对文件哈希并保存安装回执。该命令会更新全局安装并初始化本仓库,不会发布到 npm。
|