Skip to content

01.3 Projects 项目与知识库

[Projects] (项目) 是网页端唯一的持久化上下文机制。用好它,等于给 Claude 装了长期记忆。

读完你能做什么:设计出一个不会随着资料增多而变笨的项目知识库,并知道什么内容绝不该放进去。


一、Project 是什么

一个 [Projects] (项目) = 一组共享同一份背景知识与指令的对话集合

text
Project「支付系统重构」
├── [Custom Instructions] (自定义指令)   ← 每次对话自动注入
├── [Project Knowledge] (项目知识库)     ← 上传的文件,按需检索
└── 对话
    ├── 对话 1:梳理现有架构
    ├── 对话 2:设计新方案
    └── 对话 3:评审风险

三个对话彼此不共享聊天记录,但共享指令与知识库。


二、[Custom Instructions] (自定义指令) 怎么写

这是 Project 里价值最高的一栏,因为它每次对话都会加载

2.1 结构模板

text
<role>
你是本项目的资深技术顾问,熟悉支付领域的合规要求与高并发架构。
</role>

<project_context>
- 系统:某电商平台的支付网关,日均 200 万笔交易
- 技术栈:Java 17 + Spring Boot 3 + PostgreSQL 15 + Kafka
- 当前痛点:对账模块耦合严重,扩展新支付渠道需要改 12 个文件
- 团队:4 名后端,无专职测试
</project_context>

<rules>
- 所有方案必须给出「改动范围」与「回滚方案」两栏
- 涉及金额计算一律使用 BigDecimal,禁止 double
- 引用知识库内容时必须注明来源文件名
- 知识库中没有的信息,明确说「知识库未涵盖」,不要基于通用经验推测本项目的实现
</rules>

<output_format>
技术方案统一按以下结构输出:
1. 问题定义
2. 方案(含改动范围、回滚方案)
3. 风险与未知项
</output_format>

2.2 三条硬规则

规则原因
控制在 300 字以内的核心事实每次对话都要消耗这些 token,而且指令越长,单条指令的权重越被稀释(见 04.2
写"必须/禁止",不写"尽量/最好"模糊约束等于没有约束
定期删除过时内容矛盾的指令会让模型随机选一条执行

三、[Project Knowledge] (项目知识库) 的检索机制

这是最多人误解的地方。

3.1 它不是「全部塞进上下文」

知识库里的文件不会在每次对话时全量进入上下文窗口。系统会根据你的提问做相关性检索,只把相关片段拉进来。

这意味着三件事

  1. 文件命名极其重要 —— payment-reconciliation-design-v3.md 远好过 文档3.md。检索时文件名是重要信号。
  2. 单个文件内部要有清晰的标题结构 —— 便于切分与定位。
  3. 无关文件会稀释检索质量 —— 传 50 个文件里有 40 个过时,命中率必然下降。

3.2 什么该放,什么不该放

✅ 适合放进知识库❌ 不适合
架构设计文档、ADR完整的源代码仓库(用 Claude Code)
API 规范、数据字典每天变化的日志、监控数据
领域知识、业务规则含密钥、Token、生产数据库连接串的配置
团队编码规范超大的二进制文件
历史决策记录与其理由与本项目无关的通用技术文章
关键的会议纪要摘要未脱敏的客户 PII 数据

⚠️ 安全提醒:上传前做一次密钥扫描。一个简单的本地检查:

bash
grep -rIn -E "(api[_-]?key|secret|password|token|BEGIN (RSA|OPENSSH) PRIVATE KEY)" ./docs-to-upload/

四、知识库的组织范式

4.1 推荐:一份「索引文件」+ 若干主题文件

在知识库里放一个 00-INDEX.md

markdown
# 项目知识库索引

## 架构类
- `arch-overview.md` —— 系统全局架构与模块边界
- `arch-payment-flow.md` —— 支付主流程时序
- `arch-reconciliation.md` —— 对账模块现状(问题最集中的地方)

## 规范类
- `spec-api-conventions.md` —— REST API 命名与错误码规范
- `spec-coding-style.md` —— Java 编码规范

## 决策类
- `adr-001-why-kafka.md` —— 为什么选 Kafka 而不是 RabbitMQ
- `adr-002-bigdecimal.md` —— 金额精度处理决策

## 已废弃(勿参考)
-

然后在 [Custom Instructions] (自定义指令) 里加一句:

text
知识库中的 00-INDEX.md 是全部资料的索引,回答前先确认相关文件。

这一招显著提升检索命中率 —— 它把「模糊语义检索」变成了「先查目录再定位」。

4.2 反模式:把所有东西倒进去

症状:上传了 80 个文件后,Claude 开始给出前后矛盾的答案,或者引用了三个版本前的设计。

根因:新旧文档并存,检索时命中了旧版本。

修复

  • 建立 已废弃 分区,或直接删除旧文件(保留在别处)
  • 在每个文件顶部标注 > 状态:现行 / 已废弃(被 xxx.md 取代) · 更新日期:2026-06-15

五、Project vs 其他持久化方案

方案持久化什么适合
[Projects] (项目) 知识库参考资料网页端,非代码型知识
[Custom Instructions] (自定义指令)行为规则网页端,每次都要遵守的规则
CLAUDE.md项目事实与规范Claude Code,代码仓库
Skill可复用流程Claude Code / CoWork,多步操作
MCP Server实时数据接入需要查询活数据(数据库、工单系统)

关键判断:知识库适合静态、低频变化的内容。如果资料每天都变,你需要的是 MCP 连接器,不是知识库。见 07.1 MCP 协议原理


六、一个完整的 Project 搭建流程

以「接手一个陌生业务系统」为例:

第 1 步:建 Project,先只写最小指令

text
<role>你是本项目的技术顾问。</role>
<rules>
- 知识库未涵盖的内容,明确说明「知识库未涵盖」,不要推测
- 引用时注明来源文件名
</rules>

第 2 步:上传 3-5 份核心文档(不要一次传满)

第 3 步:用一轮对话验证检索质量

text
不要回答任何业务问题。先做一件事:
列出你在知识库中实际能检索到的所有文件名,以及每份文件的一句话摘要。
如果某个文件你无法定位内容,也明确指出。

这一步能立刻暴露「文件传上去了但检索不到」的问题。

第 4 步:根据检索结果补充 00-INDEX.md,完善 [Custom Instructions] (自定义指令)

第 5 步:再逐步补充剩余资料,每次补充后重复第 3 步验证。


延伸阅读

基于 VitePress 构建 · 内容采用原作者授权