fluffy-context 0.7.2 → 0.7.7

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,316 +1,535 @@
1
1
  # fluffy-context
2
2
 
3
- `fluffy-context` 是一个本地优先、Agent 无关的 Context 与 Knowledge Runtime。它帮助 AI 编程 Agent 在新会话中恢复任务状态、检索已验证共识、避开已验证死路,并将结果编译成有界、可追溯的上下文。
3
+ 本地优先、Agent 无关的 Context 与 Knowledge Runtime,帮助 AI 编程 Agent 保存任务状态、恢复工作上下文、复用已验证共识,并生成有界且可追溯的上下文输入。
4
+
5
+ **当前版本:0.7.7**
4
6
 
5
7
  ```text
6
- 项目代码与 Git → Context Runtime → Context Compiler → Agent / MCP / Hook
8
+ checkpoint → orient → compile → expand → feedback → Agent continues
7
9
  ```
8
10
 
9
- 它不替代 Git、Issue 系统、项目文档、`CLAUDE.md`、`AGENTS.md` 或宿主 Skills:Git 仍是代码和文件变更的权威,文档仍负责设计,`fluffy-context` 只维护任务认知及其来源。
11
+ `compile` 先返回有界的 summary 候选;Agent 只对需要的候选调用 `expand` 获取 structured 或 evidence 层。`feedback` 仍必须由调用方显式记录。
10
12
 
11
- ## 你可以用它做什么
13
+ `fluffy-context` 保存的是任务认知,不是项目代码备份。Git 仍是代码和文件变更的权威;Issue 系统、项目文档、`CLAUDE.md`、`AGENTS.md`、Skills 和 MCP 仍由各自系统维护。
12
14
 
13
- - 保存和恢复进行中的任务、进度、待办、决策与风险。
14
- - 让 Agent 只读取已验证的 Knowledge 和 Deadend,减少重复试错。
15
- - 使用 `ctx compile` 生成带 provenance、纳入/排除原因和字符预算的 provider-neutral Manifest。
16
- - 通过 MCP 或 Claude Code Hook 在会话开始时注入有界上下文。
17
- - 可选记录经过 `.contextignored` 过滤的文件变化 metadata;默认关闭,不记录文件内容或 diff。
15
+ ## 30 秒了解
18
16
 
19
- 0.6.0 在 branch-aware 注入闭环上补齐了可治理的确定性检索:迁移并启用 Runtime 后,Orient 从 v2 journal 的可重建索引检索已验证、适用的 Knowledge 与 Deadend,并返回有界的选择、排除与截断说明。v1 的 checkpoint、Note、Knowledge 与 Deadend 写入仍会最佳努力镜像为 v2 事件;Runtime 也会协调检测到的外部 v1 变更。自动产物默认仍仅进入 Candidate,Verified Knowledge 仍需治理确认。0.6.6 已在此基础上完成无感 Runtime 生命周期的首个闭环:已迁移项目默认自动启动,Claude Hook、MCP 与 CLI Orient 可幂等唤醒 Runtime,显式 disable 仍保持永久禁用,启动失败继续 fail-open。
17
+ 最常用的四类操作:
20
18
 
21
- ## 版本演进
19
+ - `ctx checkpoint`:保存进度、完成项、待办、决策、风险和关联文件。
20
+ - `ctx orient`:只读恢复当前任务,并检索匹配的已验证 Knowledge、Deadend 和 open Note。
21
+ - `ctx compile`:生成带预算、来源和排除原因的 provider-neutral Context Manifest。
22
+ - `ctx learn` / `ctx deadend`:记录可复用结论和失败方案,之后显式验证再用于普通检索。
22
23
 
23
- | 版本 | 主要能力 | 关键特点 |
24
- | --- | --- | --- |
25
- | 0.1.0 | 本地 Context CLI、baseline/patch Snapshot、resume、Note、Candidate Knowledge/Deadend | Git 继续作为代码权威;Context 只保存有界任务状态,不复制项目文件;checkpoint 显式触发且支持 no-op、限流与敏感路径过滤。 |
26
- | 0.2.0 | 确定性 Knowledge Discovery、Agent TypeScript API、可安装 Skill | Candidate 与 Verified 分离;默认只注入已验证共识;不依赖向量库、模型或远端服务。 |
27
- | 0.3.x | MCP `context_orient`、Claude Code Hook 与集成配置生成 | 通过 stdio MCP 和 fail-open Hook 降低 Agent 主动调用成本;集成安装仅在 `--apply` 时写入项目配置。 |
28
- | 0.4.0 | v2 事件 journal、v1 显式迁移、可重建投影、本地 Runtime、Git 观察 | v2 与 v1 并存;NDJSON hash chain 是 v2 权威;Runtime 仅监听 loopback 并记录分支、ref 与 HEAD 元数据。 |
29
- | 0.5.0 | branch-aware Orient、v1 写入镜像、Runtime 协调、宿主事件捕获 | Context 按当前 worktree/ref 选择,避免跨分支任务状态泄漏;稳定宿主 ID 才会写入限长、脱敏后的 session/prompt intent。 |
30
- | 0.6.0 | journal 派生的确定性检索、治理终态、可解释 Orient、显式使用反馈 | 启用 v2 后直接从可重建索引检索已验证且适用的共识;使用反馈只影响稳定排序,绝不自动验证或提升 Candidate。 |
31
- | 0.6.5 | Runtime 活跃度修复与 Hook 保活 | Git 真实状态变化、宿主 Hook 活动和认证 IPC 会刷新 Runtime;heartbeat 与无变化轮询不会伪装成活跃,Runtime 在不可用时保持 fail-open。 |
32
- | 0.6.6 | 无感 Runtime 生命周期 | 通过 `ensureRuntimeForSession()` 在已迁移项目的首次会话、Claude Hook、MCP 握手或 CLI Orient 时幂等拉起 Runtime;显式 disable 保持禁用,启动失败继续 fail-open。 |
33
- | 0.7.0 | Context Compiler 与文件活动基础能力 | 提供 `compileContext()`、`ctx compile`、provider-neutral `ContextManifest`、确定性候选排序、来源 provenance、纳入/排除说明、字符预算、v1/v2 来源和默认关闭的文件活动观察器。 |
34
- | 0.7.1 | Correctness hardening 与显式文件监听开关 | 强化 policy 校验、journal schema/hash/幂等性验证、Runtime 清理、候选 ID 稳定性,并提供 `ctx filesystem enable|disable|status`;文件观察严格复用 `.contextignored` 过滤规则。 |
35
- | 0.7.2 | 文件活动进入 Context Compiler | 将当前 branch/worktree/ref 的 `workspace.paths.changed` 活动作为有界 `activity` section 编译;支持 `--activity-limit`,再次执行 `.contextignored` 和内置敏感路径过滤,不记录内容或 diff。 |
24
+ ## 0.7.7 当前能力与边界
36
25
 
37
- 所有版本均保持本地优先、显式治理与 fail-open 集成原则。v1 数据不会在迁移过程中被重写;当 v2 未启用、不可用、损坏或尚未同步时,支持回退的读取接口会回退到兼容的 v1 行为。0.7.x 的 `ctx compile`、journal verify 和 Runtime 文件观察均保留明确的来源、验证或过滤边界。
26
+ | 能力 | 当前支持 |
27
+ | --- | --- |
28
+ | Context | 初始化、结构化 checkpoint、baseline/patch Snapshot、resume |
29
+ | 检索 | `orient`、已验证 Knowledge/Deadend 检索、当前 Context 的 open Note |
30
+ | Compiler | 确定性排序、字符预算、截断信息、provenance、纳入/排除原因 |
31
+ | Manifest identity | `level`、`itemHash`、`manifestHash`、estimated token |
32
+ | 文件活动 | 可选记录经过过滤的文件 metadata,并编译为 `activity` section |
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 投入 |
38
37
 
39
- ## 产品愿景与 1.0 前路线图
38
+ 以下能力**不属于 0.7.7**:
40
39
 
41
- `fluffy-context` 的目标不是成为另一套规则、Memory 或 Agent 能力系统,而是成为本地优先、Agent 无关的 **Context Orchestrator(上下文编排层)**:在理解当前任务、项目、worktree/ref、工作状态与 Token Budget 后,选择并编译最适合当前 Agent 的有界上下文。
40
+ - 没有 `ctx clean`;`ctx usage report` 是当前支持的只读观测命令。
41
+ - 不自动创建 checkpoint、Note、Knowledge 或 Deadend。
42
+ - 不自动把 Candidate 提升为 Verified。
43
+ - 不提供模型总结、Embedding/向量检索、远程同步、多人协作或 Context merge。
42
44
 
43
- ```text
44
- project → knowledge runtime → context compiler → LLM
45
+ 0.7.7 已支持 `context_expand`,用于按需取得已选候选的 `structured` 或 `evidence` 层;它是无状态、只读操作,不读取项目文件内容,也不自动记录 feedback。
46
+
47
+ ## 快速开始
48
+
49
+ ### 1. 安装
50
+
51
+ 要求 Node.js `>=20.19.0`。Git 可选;在 Git 项目中,Runtime 会记录当前 branch、ref 和 commit 等 metadata。
52
+
53
+ ```bash
54
+ npm install --global fluffy-context
55
+ ctx --version
45
56
  ```
46
57
 
47
- Git 继续是代码与文件变更的权威,Issue 系统继续负责工作项,项目文档继续承载设计;`AGENTS.md`、`CLAUDE.md`、`.cursor/rules`、宿主 Memory、Skills 与 MCP 工具也继续由各自宿主和原生格式维护。`fluffy-context` 不复制、改写或同步这些外部主体;它只维护任务感知的选择所需元数据、引用与按输出需要截取的有界片段,并给出来源、优先级、纳入/排除原因与 Token 分配。
58
+ 在源码工作树中开发时:
48
59
 
49
- CLI 是 Runtime 面向用户的 console pane / frontend:它用于初始化、检视、治理、诊断与调试编译结果,而非产品认知本体。Claude、Cursor、MCP 和未来 IDE/Agent 集成同样只是可选适配器,不应成为核心 Runtime 的依赖。
60
+ ```bash
61
+ npm install
62
+ npm run build
63
+ npm install --global .
64
+ ```
50
65
 
51
- | 计划版本 | 核心目标 | 主要能力 | 明确边界 |
52
- | --- | --- | --- | --- |
53
- | 0.7.0 | Context Compiler 基础 | 提供版本化 `ContextSourceDescriptor`、`ContextIntent`、`ContextManifest`,将当前 Context、checkpoint、Note、v2 journal 派生来源和已验证 Knowledge/Deadend 统一编译为可追溯输入;按字符预算确定性选择、排序、截断并生成纳入/排除理由。 | 不自动把原始事件提炼为 Verified Knowledge;不重写、合并或同步外部规则;不做模型调用、向量/Embedding、远程注册表或 provider-specific Renderer。 |
54
- | 0.8.0 | Decision Graph | 将 Decision 升级为可治理、可追溯的一等 journal 对象,记录结果、理由、备选方案、证据、适用性与生命周期;通过 `depends-on`、`supersedes`、`contradicts`、`supported-by`、`rejected-alternative`、`implemented-by` 等边构成确定性投影图;Compiler 只注入当前任务所需的有界决策子图。 | 不自动从代码或模型输出推断决策;不自动解决冲突;不自动提升 Candidate。 |
55
- | 0.9.0 | Knowledge Evolution | 以受治理事件支持 Knowledge 的合并、拆分、替代、适用范围收窄/扩展、退役、归档,以及作为新记录的复活;根据 Git/path 事件、source anchor、Decision Graph 依赖、重复/冲突和适用性漂移生成确定性的 `review-needed` 信号;Compiler 优先选择新鲜、适用且已验证的认知。 | 自动机制只能提出待审查候选,不能自动验证、降级、归档或作出真实性结论;不引入远程同步、团队权限、强制模型提供方或语义向量依赖。 |
66
+ ### 2. 初始化项目
56
67
 
57
- ### 0.6.6 Runtime 生命周期
68
+ 在项目根目录运行:
58
69
 
59
- 0.6.6 的目标是消除用户反复执行 `ctx runtime start` 的负担。Runtime 已成为本地后台基础设施,而不是用户或 Agent 必须理解和操作的功能。核心 Runtime 保持 Agent 无关;Claude Code、MCP、CLI、IDE Extension 和其他宿主都只能通过可选 adapter 发出统一的活动信号。
70
+ ```bash
71
+ ctx init
72
+ ```
60
73
 
61
- 已迁移项目默认启用自动启动。首次会话、Claude Hook、MCP 握手或 CLI Orient 到达时,会通过幂等的 `ensureRuntimeForSession()` 检查 v2 policy 与有效 lease,复用启动锁避免重复进程,并在严格短超时内尽力拉起 Runtime。启动失败、宿主没有对应 hook 或 Runtime 暂时不可用时,宿主工作流仍继续,保持 fail-open;后续用户或 Agent 活动可再次唤醒,而不要求手动重复启动。显式执行 `ctx runtime disable` 会持久化禁用状态,直到再次执行 `ctx runtime enable`。
74
+ 也可以显式指定路径:
62
75
 
63
- 当前 Runtime 使用 `active` 与 inactivity stop 的轻量模型:认证 IPC、Hook、MCP、CLI 和真实 Git 状态变化会刷新活跃度;heartbeat 与无变化轮询只维护健康状态,不会伪装成用户活动。更完整的 `limited`、`idle`、`sleep`、`destroyed` 生命周期状态机,以及统一的 session、tool、file 和 explicit-end 信号,属于后续版本设计。
76
+ ```bash
77
+ ctx init --path path/to/project
78
+ ```
64
79
 
65
- 生命周期适配器不绑定某个 Agent 的内部实现:适配器只负责归一化宿主事件,Runtime 核心不把 inactivity 超时推断当作可靠的 agent-end 事实。当前可可靠捕获的 Claude 事件仍受宿主提供的 Hook 和稳定标识限制。
80
+ 初始化会创建本地 `.context/` 存储和 `.contextignored` 规则文件。重复执行是幂等的,不会覆盖已有 Context 或忽略规则。
66
81
 
67
- 低开销、隐私优先的 Git/file activity summary 仍属于后续版本范围:只记录经过过滤的相对路径、计数、状态变化和摘要 metadata,不记录原始命令、stdout、diff 或文件内容;事件必须 debounce/coalesce,并作为后续 Context Compiler 的候选证据,而不是自动验证的 Knowledge。
82
+ ### 3. 保存第一个工作状态
68
83
 
69
- ### 1.0 发布门槛
84
+ ```bash
85
+ ctx checkpoint \
86
+ --title "支付回调修复" \
87
+ --progress "已定位签名校验失败原因" \
88
+ --completed "复现问题,确认失败边界" \
89
+ --pending "补充回归测试,运行集成测试" \
90
+ --decisions "在回调入口统一执行签名校验" \
91
+ --risks "第三方回调可能重复到达" \
92
+ --files "src/payment/callback.ts,test/payment/callback.test.ts"
93
+ ```
70
94
 
71
- 1. **稳定契约**:Context Source Descriptor、Context Manifest/Compiler、Decision Graph、Knowledge Evolution、只读 MCP 与 Agent API 具有明确的版本化兼容契约。
72
- 2. **正确性与恢复**:编译与 journal replay 可确定性复现;hash chain 验证、投影 rebuild/repair、迁移一致性、损坏回退与 Windows/macOS/Linux 支持完善。
73
- 3. **治理与隐私**:外部来源始终保持原生权威;持久化和输出前均应用敏感信息过滤;每个注入的项目认知都可追溯、适用且具有受治理生命周期。
74
- 4. **集成中立**:Claude、Cursor 与未来宿主均为可选适配器;核心不依赖特定模型、IDE、SaaS、网络或向量数据库。
75
- 5. **运行质量**:延迟与存储有界,Runtime 健康状态可观测,选择与截断可解释,适配器不可用时保持 fail-open。
76
- 6. **产品表达一致**:文档与 API 明确 `ctx` 是 Runtime 的前端;`fluffy-context` 是对上下文进行编排的 Runtime,而不是仓库规则、Memory、Skills 或 MCP 能力的替代品。
95
+ 第一次包含实际结构化内容的 checkpoint 会创建 baseline Snapshot;后续变化会创建 patch Snapshot。
77
96
 
78
- 上述路线图描述的是 `0.6.6` 及之后的演进方向。0.6.5 提供 Runtime 活跃度修复与 Hook 保活;0.6.6 已提供已迁移项目的无感自动启动与 fail-open 唤醒。更完整的生命周期状态机、Git/file activity summary 和被动学习仍属于后续版本范围。
97
+ - 内容没有变化时返回 `status: "no_change"`。
98
+ - 默认两次实际写入之间至少间隔约 10 秒;变化过快时返回 `status: "rate_limited"` 和 `retryAt`。
99
+ - 只有标题、没有实际结构化内容的 checkpoint 不会创建无意义 Snapshot。
100
+ - `--last-error ""`、空列表等显式输入可以清理已有字段。
79
101
 
80
- ## 适用场景
102
+ 查看当前状态:
81
103
 
82
- - 下班前保存当前任务状态,下一次会话继续工作。
83
- - 以有界摘要恢复进行中的任务,降低重复阅读和 Token 消耗。
84
- - 让 Agent 在开始任务时获得已验证 Knowledge、匹配 Deadend 与未吸收 Note。
85
- - 通过 MCP 或 Claude Code Hooks 降低 Agent 主动调用 Context 工具的决策成本。
86
- - 记录完成项、待办、阻塞、决策、风险与已验证不可行的方案。
104
+ ```bash
105
+ ctx status
106
+ ctx resume --max-chars 2000
107
+ ```
87
108
 
88
- ## 环境要求
109
+ ### 4. 在下一次会话开始时恢复
89
110
 
90
- - Node.js `>=20.19.0`
91
- - Git 可选。项目在 Git 仓库内时,CLI 会记录分支与 commit。
111
+ ```bash
112
+ ctx orient "支付回调签名校验" --max-chars 4000
113
+ ```
92
114
 
93
- ## 安装
115
+ 不带查询时只恢复当前任务和 open Note:
94
116
 
95
117
  ```bash
96
- npm install --global fluffy-context
97
- ctx --help
118
+ ctx orient
98
119
  ```
99
120
 
100
- 也可以在项目目录中使用:
121
+ ## 推荐工作流
122
+
123
+ ```text
124
+ Orient → Plan → Implement → Verify → Handoff
125
+ ```
126
+
127
+ 1. **Orient**:开始任务时读取当前 Context 和已验证共识。
128
+ 2. **Plan**:先形成可执行的实现计划。
129
+ 3. **Implement**:遇到重要观察、阻塞或临时决策时记录 Note。
130
+ 4. **Verify**:运行适用的测试、构建或其他检查。
131
+ 5. **Handoff**:阶段结束时显式执行一次 checkpoint,记录完成项、待办、决策和风险。
132
+
133
+ Hook 只提供有界、只读的阶段提示,不会自动创建 Note 或 checkpoint。Runtime 捕获文件和 Git metadata,也不能替代 Agent 主动记录任务认知。
134
+
135
+ ## 核心命令
136
+
137
+ ### `ctx orient`
138
+
139
+ `orient` 是新会话和新任务的快速恢复入口:
101
140
 
102
141
  ```bash
103
- npx fluffy-context --help
142
+ ctx orient "身份认证回调" \
143
+ --scope project \
144
+ --max-chars 4000 \
145
+ --knowledge-limit 5 \
146
+ --deadend-limit 5 \
147
+ --note-limit 10
104
148
  ```
105
149
 
106
- ## 快速开始
150
+ 它返回:
151
+
152
+ - 当前 Context 和 Snapshot 的有限 metadata;
153
+ - 受字符预算限制的进度、错误、完成项、待办、决策、风险和关联文件;
154
+ - 匹配且适用的已验证 Knowledge 和 Deadend;
155
+ - 当前 Context 尚未吸收的 open Note;
156
+ - v1/v2 选择方式、排除计数和截断说明。
157
+
158
+ `orient` 是只读操作:不会创建 Snapshot、不会写入 Context、不会更新 `lastUsedAt`,也不会隐式记录 usage feedback。
107
159
 
108
- 在项目根目录初始化:
160
+ 返回 `status: "no_context"` 表示项目已初始化,但还没有可恢复的有效 Context;这不是系统错误。
161
+
162
+ ### `ctx compile`
163
+
164
+ `compile` 面向需要结构化输入的 Agent、适配器和集成方,返回 provider-neutral JSON Manifest:
109
165
 
110
166
  ```bash
111
- ctx init
167
+ ctx compile "修复支付回调" --max-chars 4000
168
+ ctx compile "验证签名逻辑" --scenario verification --paths src/payment/callback.ts
169
+ ctx compile "查看最近修改" --activity-limit 10 --max-chars 4000
112
170
  ```
113
171
 
114
- 这会创建本地 `.context/` 存储和 `.contextignored` 规则文件。保存阶段性工作:
172
+ Manifest 主要包含:
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
+ ```
192
+
193
+ 当前实际生成的候选项默认是 `summary` 层。`itemHash`、`manifestHash` 和 estimated token 可用于缓存、去重、审计和结果校验;token 是按字符估算的 provider-neutral 数值,不是真实 Provider 计费结果。
194
+
195
+ ### `ctx expand`
196
+
197
+ `expand` 只接受本次 `compile` 返回的 selected candidate,并重新使用原始编译参数校验 `manifestHash`。调用方至少提供 `--candidate-id` 或 `--item-hash`,并选择 `--level structured|evidence`:
115
198
 
116
199
  ```bash
117
- ctx checkpoint \
118
- --title "订单状态机重构" \
119
- --progress "完成状态流转梳理,正在补充异常路径测试" \
120
- --completed "梳理状态转移,确认幂等策略" \
121
- --pending "补充异常路径测试,运行集成测试" \
122
- --decisions "订单状态由服务端状态机统一维护" \
123
- --risks "第三方回调可能重复到达" \
124
- --files "src/order/state-machine.ts,src/order-state-machine.test.ts"
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 "修复支付回调"
125
203
  ```
126
204
 
127
- 新会话中,Agent 或宿主优先使用:
205
+ `--compile-max-chars` 必须与原始 compile 的预算一致;`--max-chars` 是独立的展开输出预算。展开返回 `complete` 时包含完整 structured content,超过预算则返回有界文本、`content: null` 和 `status: partial`。它不缓存 Manifest、不写入 Context/journal/projection、不执行 usage feedback,也不读取文件正文、diff、命令或 stdout/stderr。
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:
128
219
 
129
220
  ```bash
130
- ctx orient "订单状态机异常路径" --max-chars 4000
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
131
227
  ```
132
228
 
133
- `ctx orient` 只读地聚合当前 Context 摘要、与查询匹配的**已验证** Knowledge 和 Deadend,以及当前 Context 尚未吸收的 Note。它不更新 `lastUsedAt`、不创建 Snapshot,也不会记录 usage 噪声。省略查询时可只恢复当前任务和 open Notes:
229
+ 默认输出稳定 JSON;`--format ascii` 仅输出终端仪表盘。报告展示资产总量和窗口增量、verified Knowledge/Deadend、显式 `record.used` reuse、orient/compile/expand/resume 操作统计、趋势以及上下文输出投入。
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:记录可复用认知
134
236
 
135
237
  ```bash
136
- ctx orient
137
- ctx orient --context <context-id> --note-limit 10
238
+ ctx learn "支付回调必须验证网关签名" \
239
+ --scope project \
240
+ --evidence "src/payment/callback.ts,回归测试"
138
241
  ```
139
242
 
140
- ### 0.7.x Context Compiler
243
+ 新记录默认是 `candidate`,不会进入普通检索。确认后才会进入默认发现:
244
+
245
+ ```bash
246
+ ctx knowledge verify <knowledge-id>
247
+ ctx knowledge discover "支付回调"
248
+ ```
141
249
 
142
- `ctx orient` 面向快速恢复,`ctx compile` 面向需要结构化输入的 Agent 或适配器。Compiler 只读当前 Context、Snapshot、open Note、已验证 Knowledge/Deadend 及可用的 v2 来源,返回 JSON Manifest:
250
+ 治理已有记录:
143
251
 
144
252
  ```bash
145
- ctx compile "修复支付回调" --max-chars 4000
146
- ctx compile "验证签名逻辑" --scenario verification --paths src/auth.ts
147
- ctx compile "查看最近修改" --activity-limit 10 --max-chars 4000
253
+ ctx knowledge deprecate <knowledge-id> --reason "已被新的签名校验流程取代"
254
+ ctx knowledge reject <knowledge-id> --reason "证据不足"
148
255
  ```
149
256
 
150
- Manifest 包含 `intent`、`selected`、`sections`、`excluded`、`provenance`、`budget` 和最终 `text`。`maxChars` 使用 JavaScript UTF-16 字符串长度;Compiler 不调用模型、不写入 Context 或 journal,重复输入会得到确定性结果。普通查询默认只纳入已验证 Knowledge 和 Deadend,Candidate、deprecated、rejected、obsolete 等记录会明确排除。
257
+ 普通 `orient` 和 `discover` 默认只使用 `verified` 且适用的 Knowledge。需要审查候选或其他状态时,使用 `--all` 或显式 `--status`。
151
258
 
152
- 0.7.2 新增的 `activity` section 来自已记录的 `workspace.paths.changed` 事件,只包含近期当前 branch/worktree/ref 的相对路径和有限 metadata。它表示“观察到文件发生变化”,不表示文件已被读取、理解或测试;不包含内容、diff、命令或输出。`--activity-limit 0` 可在单次编译中关闭 activity 候选,且不会修改 Runtime 的文件监听策略。v1 fallback 没有等价的文件活动来源,因此返回空的 `activity` section。
259
+ ### Deadend:记录已验证不可行方案
153
260
 
154
- ### 文件变化观察
261
+ ```bash
262
+ ctx deadend \
263
+ --attempt "绕过回调签名验证" \
264
+ --reason "回归测试失败且会引入安全风险" \
265
+ --scope project \
266
+ --evidence "test/payment/callback.test.ts"
267
+ ```
155
268
 
156
- 文件监听是可选能力,默认关闭。要显式开启:
269
+ 确认和治理:
157
270
 
158
271
  ```bash
159
- ctx filesystem enable
160
- ctx filesystem status
272
+ ctx deadend verify <deadend-id>
273
+ ctx deadend obsolete <deadend-id> --reason "当前架构已不再适用"
274
+ ctx deadend reject <deadend-id> --reason "失败证据不足"
161
275
  ```
162
276
 
163
- 关闭监听:
277
+ Deadend 默认也是 `candidate`;只有 `verified` Deadend 才会进入普通检索。终态记录会保留治理原因,但不会默认注入。
278
+
279
+ ### Note:低成本记录过程信息
280
+
281
+ Note 不创建 Snapshot,适合开发过程中记录短期观察、问题、行动和决策:
164
282
 
165
283
  ```bash
166
- ctx filesystem disable
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>
167
292
  ```
168
293
 
169
- 如果 Runtime 已在运行,enable/disable 会自动按新策略重启 Runtime;如果 Runtime 尚未运行,只更新 policy。观察器只记录项目相对路径、文件类型、大小和修改时间等有限 metadata,不记录文件内容、diff、命令或输出。
294
+ 查看 Note 和只读 Activity:
170
295
 
171
- 文件路径会经过与 Context 关联文件相同的 `.contextignored` 规则过滤。被 `.contextignored` 排除的文件,即使发生创建、修改或删除,也不会写入 `workspace.paths.changed` 事件;即使历史事件中存在这类路径,Compiler 也会再次过滤。内置保护规则仍然优先排除 `.context/`、`.git/`、依赖/构建目录、环境变量、密钥和越界路径。
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
+ ```
172
309
 
173
- ## Agent 工作流
310
+ 只有真正保存了新 Snapshot 时 Note 才会被标记为已吸收;`no_change` 和 `rate_limited` 不会改变 Note。
174
311
 
175
- 推荐阶段:
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 治理
176
331
 
177
332
  ```text
178
- Orient → Plan → Implement → Verify → Handoff
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
179
345
  ```
180
346
 
181
- 1. **Orient**:调用 `ctx orient` 或 MCP `context_orient`,读取有界任务上下文。
182
- 2. **Plan**:在广泛改动前先形成可执行计划。
183
- 3. **Implement**:用 `ctx note add` 记录有价值的观察、决策、阻塞或行动;不要为每条记录创建 Snapshot。
184
- 4. **Verify**:执行适用的构建和测试,并把有意义的失败记录为 Note。
185
- 5. **Handoff**:任务阶段结束时显式运行一次 `ctx checkpoint`,记录完成项、待办、决策和风险;Hook 不会自动 checkpoint。
347
+ `feedback use` 只记录显式的使用信号,用于确定性排序;不会改变 Knowledge/Deadend 的验证状态、confidence、证据或适用性。
186
348
 
187
- ## 常用命令
349
+ ### 集成入口
188
350
 
189
- 业务命令默认输出格式化 JSON;帮助输出为纯文本。错误写入标准错误并返回非零退出码。`ctx --version` 输出一个 JSON 字符串。
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
+ ```
190
359
 
191
- ```bash
192
- ctx init
193
- ctx checkpoint --title "修复支付回调" --progress "已定位签名校验失败原因"
194
- ctx resume --max-chars 2000
195
- ctx orient "支付回调" --knowledge-limit 5 --deadend-limit 3
196
- ctx note add "测试环境缺少回调凭据" --kind problem --context <context-id>
197
- ctx activity --context <context-id> --open
198
- ctx knowledge discover "支付回调"
199
- ctx knowledge verify <knowledge-id>
200
- ctx knowledge deprecate <knowledge-id> --reason "已被新的结论取代"
201
- ctx deadend verify <deadend-id>
202
- ctx deadend obsolete <deadend-id> --reason "当前架构已不再适用"
203
- ctx feedback use knowledge <knowledge-id> --event-id <stable-id>
204
- ctx journal verify
360
+ ### 高级维护
361
+
362
+ ```text
205
363
  ctx migrate v1 --dry-run
206
364
  ctx migrate v1 --apply
207
365
  ctx migrate verify
366
+ ctx journal verify
208
367
  ctx runtime enable
368
+ ctx runtime disable
209
369
  ctx runtime start
210
- ctx runtime status
211
370
  ctx runtime stop
212
- ctx status
213
- ctx doctor
371
+ ctx runtime status
372
+ ctx filesystem enable
373
+ ctx filesystem disable
374
+ ctx filesystem status
214
375
  ```
215
376
 
216
- ### v2 迁移与本地 Runtime
377
+ CLI 业务命令默认输出 JSON;`--help` 是面向终端用户的纯文本;错误写入 stderr 并返回非零退出码;`ctx --version` 输出 JSON 字符串。
378
+
379
+ ## 文件活动与 Runtime
217
380
 
218
- v2 与既有 `.context/` 数据并存,迁移绝不会重写或修复 v1 文件。先执行只读检查,再显式导入并验证投影一致性:
381
+ 文件观察默认关闭,需要显式开启:
219
382
 
220
383
  ```bash
221
- ctx migrate v1 --dry-run
222
- ctx migrate v1 --apply
223
- ctx migrate verify
384
+ ctx filesystem enable
385
+ ctx filesystem status
386
+ ctx filesystem disable
224
387
  ```
225
388
 
226
- 迁移成功后,Runtime 默认已启用自动启动;以下命令用于显式诊断、手动控制或持久化选择退出:
389
+ 观察器只记录经过过滤的项目相对路径和有限 metadata,例如文件类型、大小和修改时间:
390
+
391
+ - 不记录文件内容、diff、命令或 stdout;
392
+ - 使用与 Context 关联文件相同的 `.contextignored` 和内置保护规则;
393
+ - `ctx compile` 的 `activity` 只表示“观察到文件发生变化”,不表示文件已被读取、理解或测试;
394
+ - `--activity-limit 0` 只关闭单次编译中的 activity 候选,不改变监听策略;
395
+ - v1 fallback 没有等价的文件活动来源,因此 activity section 可能为空。
396
+
397
+ 完成 v1 迁移并启用 Runtime 后,Runtime 会服务于当前项目的 v2 journal、Git 观察和可选文件观察。常用控制命令:
227
398
 
228
399
  ```bash
400
+ ctx runtime status
229
401
  ctx runtime enable
230
402
  ctx runtime start
231
- ctx runtime status
232
403
  ctx runtime stop
233
404
  ctx runtime disable
234
405
  ```
235
406
 
236
- Runtime 是单项目、按需启动的本地守护进程。它只绑定 `127.0.0.1` 的动态端口,并要求存储在项目本地 `.context/v2/runtime/secret` 中的能力令牌;令牌不会显示在 CLI 状态输出或写入事件日志。启动后,Runtime 持续观察当前 worktree 的 Git 状态:初始状态会记录 `git.state.observed`,分支/ref 切换记录 `git.branch.changed`,HEAD 更新记录 `git.head.changed`。这些事件会重建 branch workspace 投影,但不会自动创建 checkpoint 或将候选信息提升为已验证共识。
237
-
238
- 完成迁移且未显式 disable 时,`ctx orient`、MCP `context_orient` 与 Claude Hook 会在严格短超时内幂等确保 Runtime 可用,并优先选择当前 worktree/ref 的 v2 workspace;它不会借用其他分支的 Context。v2 可用时,Knowledge 与 Deadend 由 journal 重放出的确定性倒排索引直接检索,默认仅返回已验证且适用的记录;无匹配 workspace、v2 状态不可用、journal 损坏、v1 尚未同步或 Runtime 已禁用时,接口会安全回退到既有 v1 选择逻辑。Runtime 停止时仍可读取已验证的 v2 状态,但运行中的 Runtime 负责持续 Git 观察和 v1 写入镜像。
407
+ 已启用项目的 CLI Orient、MCP 和 Claude Hook 会尽力自动唤醒 Runtime;启动失败不会阻塞基础读取流程。`runtime disable` 会持久化关闭自动启动,直到再次执行 `runtime enable`。
239
408
 
240
- Claude Hook 仅在宿主提供稳定的 session 与 event 标识时记录 `host.session.started` 或 `host.prompt.submitted`。提示只保存按 `promptIntentMaxChars` 截断并经过敏感值脱敏后的 intent,绝不保存原始提示;缺少稳定标识时不写入事件。SessionStart 与 UserPromptSubmit 都会在严格短超时内尽力确保已迁移、未显式 disable 的项目 Runtime 可用;稳定标识仅影响宿主事件是否写入。启动或读取失败始终 fail open,不阻塞宿主工作流。
409
+ ## Claude Code 集成
241
410
 
242
- ### `ctx checkpoint` 和 `ctx resume`
411
+ 先检查当前项目:
243
412
 
244
- 第一次 checkpoint 创建 baseline,后续变化创建 patch。相同内容返回 `no_change`;短时间内的变化可能返回 `rate_limited`,应在完成更多阶段工作后再保存。`ctx resume` 返回轻量摘要和按需使用的完整 details,并会保留其既有的 `lastUsedAt` 更新语义。
413
+ ```bash
414
+ ctx integrate claude inspect
415
+ ```
245
416
 
246
- ### `ctx note` 和 `ctx activity`
417
+ 默认安装命令只输出预览,不写文件:
247
418
 
248
- `ctx note add` 是开发过程中的低成本记录入口,不创建 Snapshot。阶段性 checkpoint 可通过 `--absorb-notes` 吸收当前 Context 的 open Note。`ctx activity` 提供只读的 Note 与 Snapshot 时间线,适合人类查看 Agent 的进度。
419
+ ```bash
420
+ ctx integrate claude install
421
+ ```
249
422
 
250
- ### Knowledge 与 Deadend
423
+ 确认后显式应用:
251
424
 
252
- `ctx learn` 和 `ctx deadend` 默认创建 `candidate` 项。普通发现与 `ctx orient` 只使用已验证项目共识;候选项需要通过 `ctx knowledge verify` 或 `ctx deadend verify` 显式确认,或以 `--all` 审查。验证后的 Knowledge 可用 `ctx knowledge deprecate` 退役,候选项可用 `ctx knowledge reject` 拒绝;验证后的 Deadend 可用 `ctx deadend obsolete` 退役,候选项可用 `ctx deadend reject` 拒绝。终态记录保留证据与治理原因,但不会被默认注入。
425
+ ```bash
426
+ ctx integrate claude install --apply
427
+ ```
253
428
 
254
- 新记录默认具有 `global` 适用性。需要限制到当前 worktree/ref 时,可使用 `--branch-mode exact`;`--paths` 只保存精确项目相对路径约束,当前版本不会推断目录前缀、Git 祖先关系、依赖关系或语义相似路径。`ctx orient` 的 `explanation` 字段会有界地给出 v2/v1 选择方式、排除计数和各类别截断原因。
429
+ 集成会幂等合并项目本地:
255
430
 
256
- `ctx feedback use knowledge|deadend ... --event-id <stable-id>` 只记录一个幂等的 v2 使用信号。它只作为同等词法相关性结果的确定性排序因素,永不改变验证状态、confidence、evidence 或适用性;Orient、MCP 与 Hook 不会隐式写入该信号。
431
+ - `.claude/settings.json`:`SessionStart` 和 `UserPromptSubmit` Hook;
432
+ - `.mcp.json`:名为 `fluffy-context` 的 stdio MCP server。
257
433
 
258
- ```bash
259
- ctx learn "订单取消后不能再次进入支付中状态" --scope project
260
- ctx deadend --attempt "使用共享可变单例保存订单状态" --reason "并发测试出现跨用例状态泄漏"
261
- ctx knowledge discover "订单取消"
262
- ```
434
+ 它会保留无关的 Hook、权限和 MCP server;遇到无效 JSON、无效结构或同名冲突时拒绝覆盖。Hook 是 fail-open 的只读提示,不会自动创建 checkpoint 或 Note。
263
435
 
264
436
  ## MCP 集成
265
437
 
266
- `ctx agent serve` 启动一个 MCP stdio server,暴露一个工具:`context_orient`。该 server 的标准输入和输出均属于 MCP 协议,不能在交互式终端直接使用或混入日志。
438
+ 启动 MCP stdio server:
267
439
 
268
440
  ```bash
269
441
  ctx agent serve
270
442
  ```
271
443
 
272
- `context_orient` 接受可选的 `path`、`contextId`、`query`、`scope`、`maxChars`、`knowledgeLimit`、`deadendLimit` 和 `noteLimit`。它的结果与 `ctx orient` 相同:`ready` 是成功的任务定位结果,初始化但没有可恢复 Context 时返回成功的 `no_context`。输入验证或 Runtime 错误为单次工具错误,不会终止 server。
273
-
274
- ## Claude Code 集成
275
-
276
- 先查看项目是否需要安装集成:
444
+ 0.7.7 当前暴露以下工具:
277
445
 
278
- ```bash
279
- ctx integrate claude inspect
280
- ctx integrate claude install
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
281
454
  ```
282
455
 
283
- `install` 默认只输出预览,不创建或修改文件。确认后才显式写入:
456
+ 输入字段与 CLI/Agent API 对齐:
284
457
 
285
- ```bash
286
- ctx integrate claude install --apply
287
- ```
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`。
465
+
466
+ 成功调用同时返回 JSON `content` 和 `structuredContent`。结果分别对应 CLI/Agent API 的 Manifest、load result、Note 列表、单个 Note 或 checkpoint result。Checkpoint 保留 `saved`、`no_change` 和 `rate_limited` 状态,MCP 不自动重试,也不暴露绕过限流的参数。
288
467
 
289
- 安装会以幂等方式合并项目本地配置:
468
+ 读写边界如下:
290
469
 
291
- - `.claude/settings.json`:`SessionStart` 与 `UserPromptSubmit` Hook,分别调用 `ctx hook claude-code session-start` 和 `ctx hook claude-code user-prompt`。
292
- - `.mcp.json`:名为 `fluffy-context` 的 stdio MCP server,调用 `ctx agent serve`。
470
+ - `context_orient`、`context_expand`、`context_compile` 和 `context_note_list` 是只读操作;
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。
293
476
 
294
- 安装会保留无关的 Hook、权限和 MCP server;遇到无效 JSON、无效相关结构或同名冲突配置会拒绝覆盖。Hook 仅注入有界的 Orient/Plan/Implement/Verify/Handoff 指引,输入损坏、项目未初始化或查询失败时会 fail open,不阻塞 Claude Code 任务,也不会自动创建 checkpoint。
477
+ MCP 的 stdin/stdout 属于协议通道,不能混入日志或交互文本。调用错误(包括输入验证、缺失 Context、空 Note message 和 stale Manifest hash)返回单次工具错误,server 继续运行。`context_expand` 与 CLI/Agent API 使用相同的无状态 Manifest hash 校验和 partial 预算语义。
295
478
 
296
479
  ## TypeScript Agent API
297
480
 
298
- 使用公开包入口,不要导入内部 `dist/...` 文件:
481
+ 使用公开包入口,不要导入内部 `dist/...` 路径,也不要直接读写 `.context`:
299
482
 
300
483
  ```ts
301
- import { contextOrient, loadContext, saveContext, searchContext } from 'fluffy-context';
484
+ import {
485
+ contextOrient,
486
+ compileContext,
487
+ contextExpand,
488
+ saveContext,
489
+ loadContext,
490
+ searchContext,
491
+ } from 'fluffy-context';
302
492
 
303
493
  const orientation = await contextOrient(process.cwd(), {
304
494
  query: 'payment callback',
305
495
  maxChars: 2400,
306
496
  });
497
+
498
+ const manifest = await compileContext(process.cwd(), {
499
+ query: 'payment callback',
500
+ maxChars: 4000,
501
+ });
502
+ ```
503
+
504
+ `fluffy-context/agent` 提供相同的公开入口。当前主要 API 包括:
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
307
524
  ```
308
525
 
309
- `fluffy-context/agent` 提供相同的 Agent API。公开类型声明随包发布。Runtime 的存储布局与内部模块不是兼容性承诺。
526
+ 存储布局不是公开兼容性承诺;调用方应根据返回结果处理 `status`、预算、截断和 fallback 信息。
310
527
 
311
- ## `.contextignored` 与安全边界
528
+ ## 安全与隐私边界
312
529
 
313
- `.contextignored` 语法接近 `.gitignore`,用于排除不应作为关联文件保存的项目路径:
530
+ ### `.contextignored`
531
+
532
+ `.contextignored` 使用接近 `.gitignore` 的规则排除不应作为关联文件保存的路径:
314
533
 
315
534
  ```gitignore
316
535
  private/
@@ -318,9 +537,83 @@ private/
318
537
  notes/draft-*
319
538
  ```
320
539
 
321
- 内置保护规则优先,不能被否定规则绕过:`.context/`、`.git/`、依赖和构建目录、`.env` 文件、密钥、常见 credential/token 文件、绝对路径和 `..` 越界路径都不会被作为 Context 关联文件保存。
540
+ 内置保护规则优先于项目规则,不能通过否定规则绕过。默认排除包括:
541
+
542
+ - `.context/`、`.git/`;
543
+ - `node_modules/`、`dist/`、`build/`、`coverage/` 等依赖和构建目录;
544
+ - `.env`、`.env.*`;
545
+ - `*.pem`、`*.key`、`*.p12`、`*.pfx`;
546
+ - 常见 credential、secret、token 文件;
547
+ - 绝对路径和 `..` 越界路径。
548
+
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
+ ## 常见问题
322
575
 
323
- ## 开发与发布验证
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
+ ## 开发与验证
324
617
 
325
618
  ```bash
326
619
  npm install
@@ -330,10 +623,23 @@ npm run pack:check
330
623
  npm pack --dry-run --json
331
624
  ```
332
625
 
333
- 运行时依赖 `@modelcontextprotocol/server` 与 `zod` 以提供 MCP 适配;核心 Context 存储仍然保持本地优先。`prepack` 会重新构建发布产物,`prepublishOnly` 在未来手动发布前运行测试;这些命令不会发布 npm 包。
626
+ 发布包通过 `fluffy-context` 和 `fluffy-context/agent` 提供公开 Agent API,并包含 CLI、类型声明、README、LICENSE 和 `skills/fluffy-context/SKILL.md`。
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
+ | 外部协作 | 远程同步、多人协作和团队权限 |
334
640
 
335
- ## 当前范围
641
+ 这些方向不会改变当前的边界:Git、项目文档和宿主规则继续由各自系统负责;Candidate 仍需要显式治理;模型调用和远程服务不是核心 Runtime 的隐式依赖。
336
642
 
337
- 0.6.0 聚焦单项目、本地优先、可治理的 branch-aware Knowledge Runtime MVP:有界且可解释的 Orient、显式 checkpoint、journal 派生的确定性 Knowledge/Deadend 检索、终态治理、显式使用反馈、MCP `context_orient`、可选 Claude Code Hook,以及 v1 到 v2 的显式事件日志迁移和 Git-aware 本地 Runtime。完成迁移并启用 Runtime 后,Orient、MCP 与 Hook 使用当前 worktree/ref 的 workspace 选择分支正确的 Context,并在 v2 不可用时保持 v1 回退;Runtime 负责可靠捕获生命周期、Git 元数据与后续 v1 写入镜像。带稳定宿主标识的 Hook 事件仅以脱敏、限长 intent 进入 journal。
643
+ ## License
338
644
 
339
- 远程同步、多人协作、复杂语义检索、自动模型总结、自动 checkpoint、Context merge、自动验证候选共识,以及更多状态变更型 MCP 工具不属于当前版本范围。
645
+ MIT