核心组件
整体数据路径
数据链中的三类对象承担不同职责:- 项目证据包括当前仓库中的源码、配置、测试、文档和验证结果,是项目事实的直接来源;
- Project Knowledge Record 是从证据建立的规范化项目模型或项目策略;
- SQLite FTS 索引是可重建的检索读模型,用于提高候选召回效率。
Corpus:项目语料范围
Corpus(项目语料)定义 Local Provider 可以读取、拆分和建立索引的来源。默认来源包括:- Native 当前 Spec 与 Archive;
- Classic 当前 Spec 与 Archive;
- Comet 支持的工作流产物;
- 可确定识别的项目结构、manifest 和配置;
- 配置中明确加入的 Markdown 路径。
knowledge.local.include 扩展语料范围:
include 使用相对项目根目录的 glob。系统会将文档拆分为带路径和 section(章节)信息的来源单元,供检索和来源状态检查使用。
默认语料范围只包含 Comet 可以明确识别的来源。目标平台支持的 Rule 文件或规则目录由宿主管理;需要将其中的 Markdown 同时作为知识语料时,请通过 include 明确加入。
Corpus 规定允许读取的来源范围,不代表 Comet 会把其中全部内容转换为长期知识。Builder 只选择能够形成项目模型、项目策略或后续任务线索的内容。
形成逻辑:基础模型与执行沉淀
Project Model Builder
项目首次使用时,Project Model Builder 从 manifest、配置、目录结构、有限源码关系和自定义 Markdown 中建立基础项目模型。后续repository.changed、verification.completed 和 change.archived 事件会更新这些记录。
Project Model 只保存可以确定提取的结构信息:
topology:目录、模块和工作区拓扑;fact:可以从当前项目核对的事实;dependency:模块、包和组件关系。
proven(已确认)状态,并保留来源供任务使用前复核。它由结构化知识记录组成,不生成目录式或章节式的完整项目 Wiki。
Project Policy Learner
Project Policy Learner 在任务执行过程中处理已经形成项目意义的工程经验:
需要语义归纳且尚未经过复用的候选先进入
trial(试用)状态。用户明确提出的项目约定、已有项目指令、确定性项目事实和经过成功复验的执行结果可以进入 proven。trial 成功帮助后续任务后也可以晋升为 proven。
Record:可追溯知识单元
Project Knowledge Record(项目知识记录)至少包含以下信息:
系统使用语义 identity(内容身份)识别同一知识单元。新证据会更新已有 Record 并保留版本关系,减少近义重复。用户明确纠正的正文具有更高权威,自动提炼只能补充证据或形成待确认版本。
Policy Compiler:策略激活
Policy Compiler(策略编译器)根据内容确定性和使用方式,为 Project Policy 选择以下激活形式:- Context:decision、pattern、procedure 或 constraint 需要 Agent 结合任务判断,以完整策略或 Context Manifest 提供;
- Verification:constraint 已绑定可运行、可判断成功或失败的项目命令,作为验证策略提供;
- Skill candidate:procedure 跨任务稳定、包含多步且可以组合时,生成带证据的 Skill 候选摘要。
enforced,并且需要绑定当前存在、已经成功执行的确定性验证入口。enforced 表示该策略具备可运行的验证关联,不扩大模型权限或系统权限。
混合检索
项目任务包含多种检索信号:- 精确路径、命令、错误码和标识符适合强字符串匹配;
- 中文描述、章节标题和工程语义适合全文检索;
- 模块职责和跨文件影响适合结构过滤与有限关系扩展;
- 当前分支变化和来源失效需要现场核对。
来源有效性检查
记录进入上下文前,系统会核对 project-relative source(项目相对来源)、anchor、digest(内容摘要)或版本:- 来源存在且内容一致时,记录继续参与检索;
- 来源发生变化时,旧记录停止作为当前结论使用;
- 来源删除、selector 失效或验证命令消失时,记录进入
superseded; - 新证据形成新版本,并保留与旧版本的替代关系。
Context Director:任务上下文控制
Provider 查询返回候选集合。Context Director 再执行第二层选择:- 过滤与当前 project、path、task、operation、phase 不匹配的候选;
- 排除
superseded; - 将
proven和enforced排在trial之前; - 将 repository 和用户明确权威排在自动推断之前;
- 提高具体范围和最近成功应用内容的排序;
- 降低被纠正或参与失败内容的排序。
trial Policy、长 Procedure 和 evidence 通常进入 Context Manifest。
Manifest 使用稳定 ID,并携带:
- 标题和摘要;
- 知识类型和生命周期;
- 来源类型;
whyApplied;- application ID。
expand 获取完整正文、来源和 verification。单次字符预算只限制当前任务的常驻内容,不限制 Provider 的记录总量。
主工作区与 linked worktree
Local Provider 使用稳定 repository identity(仓库身份)区分项目:- 主工作区与同一仓库的 linked worktree 共享规范化 Record;
- 文档 section 和全文索引按 workspace 隔离;
- 分支或 worktree 中的文件变化只影响对应 workspace 的来源快照;
- 不同仓库相互隔离。
Local 与 Remote Provider
Project Knowledge 领域通过统一的status / query / apply 契约访问 Provider。
Local Provider
- 使用用户数据目录中按 repository ID 隔离的 SQLite;
- Record 保存规范化机器状态;
- section 和 FTS 索引可以重建;
- 有限 ripgrep 负责强匹配、变化文件补充和故障回退。
Remote Provider
- 配置启用 Remote 后,不再同时读取 Local;
- 查询只发送有界的 task、path、phase、operation 和 ID selector;
- apply 只发送规范化 Record 与 evidence;
- 完整仓库、完整 diff、日志、个人记忆和凭据不会进入请求;
- Remote 失败时返回实际状态,不切换到 Local。
与 Rule、Hook 和工程检查的执行边界
你可以继续通过目标平台支持的 Rule 载体编写项目约束,宿主仍负责加载。Codex 的
AGENTS.md、Claude Code 的 CLAUDE.md 和 Cursor 的 .cursor/rules 都只是具体示例。Comet 复用这些 Rule 和项目现有检查;项目知识记录约束存在的依据、适用路径和验证命令,确定性判断仍由对应执行器完成。
失败行为
召回诊断
诊断一次项目知识召回时,按照Provider → Record → Query → Context 的顺序检查:
- 来源已经进入默认 Corpus 或
knowledge.local.include; - Record 的 project、path、operation、phase 和 lifecycle 与任务匹配;
- 来源版本仍然有效;
- Query 已返回相关候选;
- Context Manifest 中的
whyApplied和 application history 符合预期。

