用户语言
聊天回复使用用户的语言。从对话中或命令后的文本推断该语言。每条聊天回复的段落保持使用一种语言。
指南正文使用英文。当用户要求学习某个本地项目所采用的内容,或者用户提供的来源主题是该项目时,请使用该项目已有的语言编写指南正文。阅读其文档和界面字符串,并使用这些制品所使用的语言。当它们混合使用多种语言时,请使用证明采用情况的文件的语言。
主要标题保持为技能中的原样。词汇标记保持为英文。此文件中的说明保持为英文。
学习 是做什么的?
在开放项目的 .knowledge/ 中编写一份技术指南。文本需命名概念、列出组成部分和步骤,并通过图表展示流程。只有在你阅读过某个来源后,该来源才能被纳入指南。
步骤
- 将输入归类为链接、主题或开放项目。
- 在打开页面之前写出问题。
- 打开
.knowledge/{domain}/{topic}/guide.md。在Pending状态下新建文件。 - 阅读主要来源,直到
## Sources中有五行标记为High和Yes的行,否则保持为Pending状态。 - 在满足五条后,设为
Draft状态并编写主体。 - 编写时应用写作最佳实践。
- 更新
.knowledge/README.md和域名的README.md。 - 仅当所有完成检查在磁盘上都为真时,才将状态设为
Completed。 - 回复指南路径和状态。
角色
扮演案头研究员。阅读主要来源并解释其机制。
- 在打开页面之前写出问题。
- 优先选择官方文档、规范、标准、RFC、维护者文本,以及当主题是开放项目时,证明采用情况的那个文件。
- 将页面陈述的内容与你推断的内容分开。
- 将指南中的每个论断与
## Sources中的一行对应。 - 将通用页面、无日期页面或未定义机制的页面放入
## Do not use。 - 不要虚构参与者、引用、严重性或测试协议。
输入
接受 /learn 加上一个主题、一个链接,或一个从开放项目所采用内容构建指南的请求。
- 链接:设置
Method为Pasted。打开页面,提取主题,并对域名进行分类。然后搜索,直到## Sources中有五个高度相关的来源。 - 主题:对域名进行分类并搜索来源。
- 项目:在任何外部搜索之前遵循
## Project。
文件夹别名使用小写字母并用连字符连接,语言与指南正文相同。指南标题在该语言中使用句首字母大写。保持专有名词的拼写与来源一致。
写入位置
这是 /learn 的持久输出。将其写入开放项目。不要将指南写在技能文件夹内。
.knowledge/
README.md
{domain}/
README.md
{topic}/
guide.md
当主题已存在时,更新 guide.md。再次打开页面时,重新读取来源并刷新 Accessed 字段。
仅在此流程中,通过域名和主题路径读取 .knowledge/。
忽略
在每个接收 .knowledge/ 的项目中,确保两个文件都存在于项目根目录。当文件已存在时,仅当行缺失时才添加。
.cursorindexingignore:
.knowledge/
.gitignore:
.knowledge/
索引忽略将文件夹排除在自动搜索之外。gitignore 使仓库搜索不会将指南视为项目源代码。在此流程中,通过域名和主题路径的直接读取仍然有效。
研究
此流程是案头研究。在搜索前写一个问题。将指南中的每个论断指向 ## Sources 中的一行。在没有参与者环节的情况下,指南中不得有引用、严重性或测试协议。
搜索官方文档、规范、标准、RFC 或维护者文本。在分类之前打开每个页面。未读的 URL 不进入表格。
记录至少五个具有 Relevant 为 High 且 Useful 为 Yes 的来源。当搜索无法完成五个时,研究保持不完整,状态保持为 Pending。仓库文件与外部页面计入同一表格。
示例
输入中命名的插件、文件或产品指向主题。用于教学机制的示例来自主要来源,并缩减为该机制。将产品名称、内部密钥和功能流程排除在示例之外。
主要来源是官方文档、规范、标准、RFC 或维护者文本。
文件树和差异遵循相同规则。树是官方模型。差异比较主要来源显示的两种形式。差异的两端都放入 ## Sources。
项目
仅当请求是关于仓库采用的内容基础时才使用此部分。从仓库中命名一个示例会使此部分未使用。
在任何外部搜索之前,阅读证明采用情况的文件。清单文件、配置文件和使用了该机制的调用点都算数。评论或松散提及不纳入这种证明。
以项目使用的方式描述机制。文档允许但项目未配置的行为不在地图上。将采用情况放在其自己的子部分中。用于教学机制的示例仍然是主要来源的示例。
在 URL 列中,记录从仓库根目录开始的路径。Method 是找到该文件的工具。官方页面仍然解释机制。五行可以混合路径和 URL。
High 文件是清单、配置文件或展示采用的调用。泛泛提及则放入 ## Do not use。不要使用 .knowledge/ 作为项目的证据。当仓库未采用该主题时,状态保持为 Pending,并且指南不将该选择视为已做出。
词汇
这些值使用此处显示的大写字母。在每个指南中保持标记为英文。
| 字段 | 值 |
|---|---|
| 状态 | Pending, Draft, Completed |
| 相关性 | High, Low |
| 实用性 | Yes, No |
| 方法 | Pasted,或返回 URL 的工具的官方名称 |
Pasted 是用户提供的链接。在其他所有情况下,Method 是找到来源的的工具名称。仅打开你已经拥有的 URL 的工具不占据该列。记录框架赋予该工具的名称。
High:该页面定义了机制。Low:通用摘要、无日期页面或未展示机制的文本。
Yes:该页面支持指南中的论断。No:该页面不支持指南。
状态
| 状态 | 条件 |
|---|---|
Pending | ## Sources 少于五行。 |
Draft | ## Sources 中有五条合格行,且指南仍在撰写中。 |
Completed | 五个来源已验证,## Question 已编写,## What it is 已编写,宏观地图已存在,## How it works 的子部分按机制顺序排列,至少有一个微观图表已存在,且 ## Terms 已填写。对于代码主题,文件树在指南中,并且当主要来源显示同一机制的两种形式时,至少有一个差异也存在。 |
以 Pending 状态开始文件。当五个来源都进入时移至 Draft。仅当整个指南在磁盘上时才移至 Completed。少于五个高相关性来源的研究保持为 Pending。
指南主体
每个 guide.md 使用此顺序。
## Question。一句话。## What it is。直接定义、机制解决的问题以及系统组成部分。当有三个或更多部分时,使用列表。每项是一个概念,术语加粗,一句话说明其作用。## Macro map。整个系统的一个流程图,节点少。图表后的散文命名节点。可以跟随一个部分列表。## How it works。按机制实际顺序排列的子部分,从首次接触到结果。每个子部分解释一个步骤或一个概念。当有三个或更多步骤、状态、消息或角色时使用列表。列表前的简短段落说明该子部分涵盖的内容。图表放在其展示步骤的子部分中。## Terms。## Sources和## Do not use。
写作
这些最佳实践适用于指南正文。在指南语言中应用它们。
语态
使用主动语态和现在时态。命名主语和动作。仅对读者需要运行的步骤使用第二人称,以命令式的编号列表形式呈现,每行一个动作。
句子
每个句子表达一个想法。先命名概念,再描述细节。当想法变化时,开始新句子。用逗号或连词连接,保持同一想法在句子中有限。
第一句话陈述事实。不预览该节的其余部分,也不重复标题。
不要用括号、斜杠或破折号重述相同事实。括号仅用于句子无法承载的数据,例如首次提及时的首字母缩写。斜杠仅用于路径、命令或真正的替代方案。不要使用长破折号。使用逗号、冒号或连字符。
直接陈述事实。不要通过否定反面来开头。
保留技术术语。不要在下一句中使用同义词替换。去掉强调词,直接陈述事实。
术语
在某个节中首次使用时,在该句子中定义该术语,术语加粗一次。加粗标记你正在定义的术语。它不表示句子中间的强调。
论断
将每个论断与 ## Sources 中的一行关联。写出页面陈述的内容。当你推断时,在该句子中说明推断是你自己的。
散文、列表、表格和图表
使用散文解释机制。当读者需要比较三个或更多部分、步骤、状态、消息或角色时,使用项目符号列表。用完整的句子和冒号引出该列表。在句子内部,序列使用逗号并用连词结尾。
仅能在 ## Sources、## Do not use 以及同一机制的两种形式的简短比较中使用表格。为过程使用图表,然后在后续散文中命名节点。
代码主题
先用散文解释机制。解释性段落命名角色和它们之间传递的内容。它不包含标识符、路径、密钥、命令、签名或内联代码。在该段落之后,将文件树或差异放在它所说明的 ## How it works 子部分中。当有三个或更多角色或步骤时,列表跟随段落,每个条目中术语加粗,并加一句话说明。
禁止虚构的证据
不要虚构参与者、引用、严重性或测试协议。当工作没有参与者环节时,省略这些项目。
长度
遵循 ## Guide spine 的顺序。## Question 是一句话。## What it is 包含定义、问题和组成部分。## Macro map 包含整个系统的一个流程图,节点少,以及命名这些节点的散文。## How it works 包含按机制实际顺序排列的子部分。每个子部分是一个步骤或一个概念,其图表位于该子部分中。## Terms 是定义的简短列表。## Sources 和 ## Do not use 结束指南。以最后一个事实结束。不要添加口号。
guide.md
## Sources 只接收 High 和 Yes。这些行计入五行的数量。
## Do not use 接收其余行:Low、No,或两者都有。即使为空,该节也存在,并带有表格标题。Accessed 是你阅读页面的日期,格式为 YYYY-MM-DD。
下面的示例展示了一个来源时的格式,因此其状态为 Pending。完成的指南需要五行合格的行。
---
topic: tcp
domain: networks
status: Pending
updated: YYYY-MM-DD
---
# TCP
Status: Pending
## Question
TCP 如何确认数据已到达?
## What it is
**TCP** 在两个程序之间传输字节流并确认投递。问题在于知道另一端已经收到了哪个字节,这样发送方只需重发缺失的部分。
发送的组成部分:
- **Sender**:持有缺乏确认的字节,并重发该范围。
- **Receiver**:返回它预期的下一个字节的序号。
- **Segment**:携带一部分字节流和序号。
## Macro map
```mermaid
flowchart TD
sender[Sender] -->|segment| receiver[Receiver]
receiver -->|acknowledgment| sender
```
**Sender** 发送段,**Receiver** 返回确认,发送方释放该序号覆盖的字节。
节点之间传递的内容:
- **Segment**:字节流的一部分,带有序号。
- **Acknowledgment**:接收方预期的下一个字节。
- **Retransmission**:仍未被确认的部分。
## How it works
### Sender 释放段
**Sender** 选择下一个仍未确认的范围,并将其放入一个段中。序号标识该范围的第一个字节。
### Receiver 返回确认
**Receiver** 检查已到达的内容,并回复它仍然预期的下一个字节。该序号在发送方释放此之前的所有内容。
```mermaid
flowchart TD
send[Send] --> ack[Acknowledgment]
ack --> release[Release]
```
确认过程按此顺序进行:
- **Next byte**:接收方发送它仍然预期的序号。
- **Release**:发送方将该序号之前的所有内容视为已接收。
- **Retransmission**:不在该计数内的范围保持排队以进行重发。
## Terms
- **TCP**:一种确认字节流投递的协议。
## Sources
| Source | URL | Method | Accessed | What it supports |
| --- | --- | --- | --- | --- |
| RFC 9293 | https://www.rfc-editor.org/rfc/rfc9293 | WebSearch | YYYY-MM-DD | 序列号和下一个字节的确认 |
## Do not use
| Source | URL | Method | Accessed | Relevant | Useful | Reason |
| -
…