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