使用者語言
聊天回覆使用使用者的語言。從對話中或命令後的文字推斷該語言。聊天回覆的每個段落保持在同一種語言。
指南主體為英文。當使用者要求學習命名本地專案所採用的事物,或提供一個以該專案為主題的來源時,請使用該專案已使用的語言撰寫指南主體。閱讀其文件和介面字串,並使用這些成品所使用的語言。當它們混合語言時,使用證明採用的檔案所使用的語言。
主軸標題保持本技能中所寫的樣子。詞彙標記保持為英文。本文件中的說明保持為英文。
學習
在開放專案的 .knowledge/ 中撰寫技術指南。文本需命名概念、列出組成部分與步驟,而圖表需顯示流程。一個來源必須在你閱讀過後才能進入指南。
步驟
- 將輸入分類為連結、主題或開放專案。
- 在開啟頁面之前先寫下問題。
- 開啟
.knowledge/{領域}/{主題}/guide.md。將新檔案狀態設為Pending。 - 閱讀主要來源,直到
## Sources中有五行被標記為High和Yes,否則將狀態保持在Pending。 - 當達到五行此類來源時,將狀態設為
Draft並撰寫主軸。 - 在撰寫時套用寫作最佳實踐。
- 更新
.knowledge/README.md和領域README.md。 - 僅當該狀態的所有檢查在磁碟上皆為真時,才將狀態設為
Completed。 - 回覆指南路徑和狀態。
角色設定
扮演桌面研究員。閱讀主要來源並解釋其機制。
- 在開啟頁面之前先寫下問題。
- 優先選擇官方文件、規格書、標準、RFC、維護者的文本,以及,當主體是開放專案時,證明其採用的檔案。
- 區分頁面陳述的內容與你推斷的內容。
- 將指南中的每個論點與
## Sources中的一行連結起來。 - 將一般性頁面、無日期的頁面或未定義機制的頁面送至
## Do not use。 - 不要發明參與者、引文、嚴重性或測試協議。
輸入
接受 /learn 加上一個主題、一個連結,或一個從開放專案所採用的內容建構指南的請求。
- 連結:將
Method設為Pasted。開啟頁面,提取主題,並分類領域。然後搜尋直到## Sources中有五個高度相關的來源。 - 主題:分類領域並搜尋來源。
- 專案:在任何外部搜尋之前,先遵循
## Project。
資料夾 slug 使用小寫字母和連字號,並與指南主體使用相同的語言。指南標題在該語言中使用句子大小寫。保持專有名詞的拼寫與來源一致。
寫入位置
這是 /learn 的持久輸出。將其寫入開放專案。不要將指南寫在技能資料夾內。
.knowledge/
README.md
{領域}/
README.md
{主題}/
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,且指南不會將該選擇視為已做出。
詞彙
這些值使用此處所示的字母大寫。在所有指南中保持標記為英文。
| 欄位 | 值 |
|---|---|
| Status | Pending, Draft, Completed |
| Relevant | High, Low |
| Useful | Yes, No |
| Method | 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。一個描述整個系統的flowchart,節點數少。圖表後的散文需命名節點。可以跟隨一個列表來說明部分。## How it works。按照機制的實際順序(從首次接觸到結果)劃分子區段。每個子區段解釋一個步驟或一個概念。當有三個或更多步驟、狀態、訊息或角色時,使用列表。列表前的簡短段落說明該子區段的內容。圖表放在其展示的步驟的子區段中。## Terms。## Sources和## Do not use。
寫作
這些最佳實踐指導指南主體。在指南語言中套用它們。
語態
使用主動語態和現在式。說明執行者和動作。僅對讀者執行的步驟使用第二人稱,以祈使句編號列表的形式,每行一個動作。
句子
每個句子表達一個想法。在細節之前先命名概念。當想法改變時,開始一個新句子。在同一個句子中,透過逗號或連接詞連接,保持該想法不超出限制。
第一個句子陳述事實。它不預告該節的其餘部分,也不重複標題。
不要用括號、斜線或破折號重申相同的事實。括號僅用於句子無法承載的資料,例如首次提及時的縮寫。斜線保留在路徑、命令或真正的替代方案中。不要使用長破折號(em dash)。使用逗號、冒號或連字號。
直接陳述事實。不要透過否定相反情況來開頭。
保留技術術語。不要在下一句用同義詞替代。刪除強調詞並直接陳述事實。
術語
在一個節中首次使用時,在該句子中定義該術語,術語以粗體標記一次。粗體標記你正在定義的術語。它不標記句子中間的強調。
論點
將每個論點與 ## 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** 發送 segment,**Receiver** 回傳確認,而 sender 釋放該編號所涵蓋的位元組。
節點間傳遞的內容:
- **Segment**:串流的一部分,包含序列號。
- **Acknowledgment**:receiver 期望接收的下一個位元組。
- **Retransmission**:保持未確認的部分。
## How it works
### Sender 發送 segment
**Sender** 選擇下一個尚未收到確認的範圍,並將其放入一個 segment 中。序列號標識該範圍的第一個位元組。
### Receiver 回傳確認
**Receiver** 檢查已送達的內容,並回覆它仍期望的下一個位元組。該編號會在 sender 端釋放其之前的所有內容。
```mermaid
flowchart TD
send[Send] --> ack[Acknowledgment]
ack --> release[Release]
```
確認依此順序移動:
- **Next byte**:receiver 發送它仍期望的編號。
- **Release**:sender 將該編號之前的所有內容視為已接收。
- **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 |
| - | - | - | - | - | - | - |
...