簽映射與 Frontmatter 落地機(jī)制)
Strapi AI Agent 工單分診體系五角色 Triage 標(biāo)簽映射與 Frontmatter 落地機(jī)制【免費(fèi)下載鏈接】strapi Strapi is the leading open-source headless CMS. It’s 100% JavaScript/TypeScript, fully customizable, and developer-first.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/st/strapi本篇基于 Strapi 倉(cāng)庫(kù)中的docs/agents/triage-labels.md及其姊妹文檔docs/agents/issue-tracker.md講解 Strapi 倉(cāng)庫(kù)為 AI Agent 工作流設(shè)計(jì)的工單分診triage標(biāo)簽體系五個(gè)標(biāo)準(zhǔn)分診角色如何映射到實(shí)際的標(biāo)簽字符串、標(biāo)簽如何存儲(chǔ)在 Obsidian 工單筆記的 frontmatter 中以及 Skill 在分診流程中如何引用這些角色。讀完本文你可以完整理解并復(fù)用這套角色 → 標(biāo)簽 → frontmatter的三級(jí)分診機(jī)制并將其嵌入自己的 Agent 化工單流程中。一、Triage 標(biāo)簽體系解決什么問(wèn)題docs/agents/triage-labels.md開(kāi)篇即定義了這套體系的角色定位The skills speak in terms of five canonical triage roles. This file maps those roles to the actual label strings used in this repos issue tracker.也就是說(shuō)倉(cāng)庫(kù)中各個(gè) AI Skill技能在對(duì)話中使用的是一套抽象的標(biāo)準(zhǔn)分診角色詞匯而本文件負(fù)責(zé)把這些角色映射為工單跟蹤系統(tǒng)中實(shí)際使用的標(biāo)簽字符串。這是一張典型的詞匯橋接表——它讓 Skill 的措辭保持穩(wěn)定同時(shí)允許底層標(biāo)簽字符串隨團(tuán)隊(duì)實(shí)際用法自由調(diào)整。五個(gè)標(biāo)準(zhǔn)分診角色與標(biāo)簽映射表以下是docs/agents/triage-labels.md中的完整映射表左列為 Skill 中的角色名右列為本倉(cāng)庫(kù)工單系統(tǒng)中的實(shí)際標(biāo)簽字符串第三列是其語(yǔ)義Label in mattpocock/skillsLabel in our trackerMeaningneeds-triageneeds-triageMaintainer needs to evaluate this issue需要維護(hù)者評(píng)估該工單needs-infoneeds-infoWaiting on reporter for more information等待報(bào)告者補(bǔ)充信息ready-for-agentready-for-agentFully specified, ready for an AFK agent規(guī)格完整可交給無(wú)人值守 Agent 處理ready-for-humanready-for-humanRequires human implementation需要人工實(shí)現(xiàn)wontfixwontfixWill not be actioned不再跟進(jìn)從源碼結(jié)構(gòu)看當(dāng)前倉(cāng)庫(kù)恰好采用角色名即標(biāo)簽名的一一映射五組字符串完全一致。這并不意味著二者必須相同——正如文檔末尾所強(qiáng)調(diào)的Edit the right-hand column to match whatever vocabulary you actually use.即右列tracker 實(shí)際標(biāo)簽是可定制項(xiàng)。例如當(dāng)團(tuán)隊(duì)把工單遷移到 Linear 并改用不同命名習(xí)慣如agent:ready、human時(shí)只需修改右列Skill 側(cè)的五角色詞匯保持不變。二、標(biāo)簽的存儲(chǔ)載體Obsidian 工單筆記與 Frontmatter標(biāo)簽存放在哪里docs/agents/triage-labels.md明確指出Labels are stored in thelabels:frontmatter array of each issue note undernotes/work/strapi/issues/即每個(gè)工單是一個(gè) Markdown 筆記文件標(biāo)簽以labels:frontmatter 數(shù)組的形式存儲(chǔ)在該文件的 YAML 頭部。這一約定與docs/agents/issue-tracker.md中的 Note shape 規(guī)范完全對(duì)應(yīng)。工單筆記的完整結(jié)構(gòu)docs/agents/issue-tracker.md給出了工單筆記的文件命名與 frontmatter 規(guī)范文件名采用slug.md形式示例為cm-403-redirect-loop.mdfrontmatter 承載跟蹤狀態(tài)--- title: short description type: issue status: open | in-progress | closed labels: [needs-triage] # one or more of the triage roles — see docs/agents/triage-labels.md created: YYYY-MM-DD linear: Linear issue URL, once promoted ---注意其中兩點(diǎn)與分診標(biāo)簽體系直接相關(guān)labels字段注釋顯式引用了docs/agents/triage-labels.md說(shuō)明 frontmatter 中允許出現(xiàn)的標(biāo)簽值域就是上文映射表中的五個(gè)字符串可以一個(gè)或多個(gè)statusopen/in-progress/closed與labels是兩個(gè)正交維度前者描述處理進(jìn)度后者描述分診結(jié)論誰(shuí)來(lái)做、還需什么條件、是否終止。筆記正文Body為自由格式包含問(wèn)題陳述、復(fù)現(xiàn)步驟、上下文、驗(yàn)收標(biāo)準(zhǔn)與備注。通過(guò) Obsidian MCP 讀寫(xiě)標(biāo)簽工單統(tǒng)一存放在個(gè)人 Obsidian 的notes/work/strapi/issues/目錄下一單一文件并通過(guò) Obsidian MCP 工具集完成全部讀寫(xiě)操作。docs/agents/issue-tracker.md的 Conventions 一節(jié)給出了與各分診動(dòng)作一一對(duì)應(yīng)的工具調(diào)用分診動(dòng)作MCP 工具說(shuō)明創(chuàng)建工單write_note在notes/work/strapi/issues/下新建帶上述 frontmatter 的文件讀取工單read_note/search_notes按標(biāo)題/永久鏈接讀取或按關(guān)鍵詞檢索列出/查詢工單list_directory/search_notes/search_by_metadata可按status與labels元數(shù)據(jù)過(guò)濾追加評(píng)論patch_note向正文追加內(nèi)容應(yīng)用/移除分診標(biāo)簽update_frontmatter編輯labelsfrontmatter 數(shù)組映射關(guān)系以docs/agents/triage-labels.md為準(zhǔn)關(guān)閉工單update_frontmatter將status置為closed這條約定的工程價(jià)值在于分診狀態(tài)的全部變更都收斂到 frontmatter 的結(jié)構(gòu)化編輯上正文只承載敘述性內(nèi)容。由于labels是機(jī)器可解析的 YAML 數(shù)組Agent 可以用search_by_metadata直接按標(biāo)簽如ready-for-agent批量拉取待辦工單而不需要解析自然語(yǔ)言正文。三、Skill 如何引用分診角色使用規(guī)則與示例docs/agents/triage-labels.md給出了 Skill 與標(biāo)簽系統(tǒng)之間的唯一使用規(guī)則When a skill mentions a role (e.g. apply the AFK-ready triage label), use the corresponding label string from this table.即當(dāng)某個(gè) Skill 的指令中提到一個(gè)角色例如應(yīng)用 AFK-ready 分診標(biāo)簽時(shí)執(zhí)行端必須查上表取右列對(duì)應(yīng)的標(biāo)簽字符串寫(xiě)入 frontmatter。以ready-for-agent為例一次完整的分診落盤(pán)流程是Agent 按 Skill 判定工單規(guī)格已完整、可交給無(wú)人值守AFKAgent 執(zhí)行查表得到右列標(biāo)簽字符串ready-for-agent調(diào)用 Obsidian MCPupdate_frontmatter把ready-for-agent加入該工單筆記的labels數(shù)組必要時(shí)移除此前的needs-triage該工單即可被按labels元數(shù)據(jù)過(guò)濾的查詢?nèi)〕鏊衦eady-for-agent工單命中并進(jìn)入 Agent 執(zhí)行隊(duì)列。這套角色 → 查表 → 寫(xiě) frontmatter的路徑使得分診決策在 Skill 層是語(yǔ)義化的Agent 只需理解AFK-ready這個(gè)概念在存儲(chǔ)層是確定性的字符串值域被映射表鎖定。標(biāo)簽詞匯的本地化定制文檔最后一行是本體系面向復(fù)用者的開(kāi)放接口Edit the right-hand column to match whatever vocabulary you actually use.把右列改為你實(shí)際使用的標(biāo)簽詞即可。由于 Skill 只依賴左列的五個(gè)角色名tracker 側(cè)標(biāo)簽改名不會(huì)波及 Skill 措辭反過(guò)來(lái)只要映射表與 frontmatter 中實(shí)際寫(xiě)入的字符串保持同步任何團(tuán)隊(duì)都可以讓同一套五角色分診語(yǔ)義適配自己的工單系統(tǒng)詞匯。四、輔助機(jī)制標(biāo)簽體系所處的 Agent 工作流全景為了理解這套分診標(biāo)簽在 Strapi 倉(cāng)庫(kù)中的運(yùn)轉(zhuǎn)環(huán)境有必要結(jié)合倉(cāng)庫(kù)中已確認(rèn)的 Agent 工具鏈說(shuō)明其上下游本節(jié)為原文檔之外的補(bǔ)充佐證。1. 雙軌工單跟蹤Obsidian 個(gè)人軌 Linear 公司軌docs/agents/issue-tracker.md確立了個(gè)人軌先行的原則Issues and PRDs for this repo are trackedpersonally in Obsidian first, and only promoted to the companyLinearworkspace when explicitly asked.分診標(biāo)簽主要活躍在個(gè)人軌Obsidian 筆記。只有當(dāng)用戶明確要求升級(jí)時(shí)才會(huì)用 Linear MCP 的save_issue工具標(biāo)題與正文取自 Obsidian 筆記創(chuàng)建公司側(cè)工單并把返回的 Linear URL 回寫(xiě)到筆記的linear:frontmatter同時(shí)保持 Obsidian 筆記作為工作副本。這意味著ready-for-agent、wontfix等分診狀態(tài)首先反映在本地筆記上公司軌只承載經(jīng)過(guò)顯式升級(jí)的記錄。2. Skill 的單一事實(shí)源與多工具同步分診標(biāo)簽由 Skill 引用而 Skill 的分發(fā)由倉(cāng)庫(kù)的 AI 工具鏈管理。AGENTS.md 的 Skills directories 一節(jié)說(shuō)明.ai/skills/是已提交 Skill 的規(guī)范來(lái)源每個(gè)含SKILL.md的子目錄即一個(gè) Skill當(dāng)前倉(cāng)庫(kù)中已提交的是 .ai/skills/git-conventions/SKILL.md.agents/skills/、.claude/skills/、.cursor/skills/三個(gè) AI 工具的 well-known 位置由yarn ai:sync維護(hù)為符號(hào)鏈接目標(biāo)增刪 Skill 后運(yùn)行yarn ai:sync保持三端一致yarn ai:unlink僅移除.ai來(lái)源的鏈接yarn ai:status給出只讀的 linked / missing / conflict / stale 報(bào)告。從源碼結(jié)構(gòu)看該同步邏輯實(shí)現(xiàn)在 scripts/ai-tooling/links.ts 中SOURCE_PATH固定為.ai/skillsTARGET_PATHS為上述三個(gè)目錄sync函數(shù)按條目狀態(tài)機(jī)absent/ours/foreign-link/real決定新建、重建、跳過(guò)或清理鏈接listSourceSkills只識(shí)別含SKILL.md的子目錄。相應(yīng)行為由 scripts/ai-tooling/tests/links.test.ts 中的用例覆蓋路徑歸一、POSIX/win32 大小寫(xiě)差異、鏈接分類(lèi)等。分診標(biāo)簽文檔正是這類(lèi) Skill 的共享詞匯表——Skill 定義在.ai/skills/而標(biāo)簽詞匯的定義收斂在docs/agents/下二者解耦。3. 領(lǐng)域文檔的協(xié)同消費(fèi)同目錄的 docs/agents/domain.md 規(guī)定了 Skill 探索代碼庫(kù)前應(yīng)先讀取的領(lǐng)域文檔根目錄CONTEXT-MAP.md、各 package 的CONTEXT.md、docs/adr/下的架構(gòu)決策。分診過(guò)程中ready-for-agent的判定往往依賴這些上下文是否足以支撐無(wú)人值守實(shí)現(xiàn)——從文檔體系的設(shè)計(jì)意圖看Fully specifiedready-for-agent的語(yǔ)義正是以領(lǐng)域文檔完備為前提的。五、實(shí)戰(zhàn)要點(diǎn)小結(jié)標(biāo)簽值域frontmatterlabels數(shù)組中只允許出現(xiàn)needs-triage、needs-info、ready-for-agent、ready-for-human、wontfix這五個(gè)字符串或你在映射表右列定制后的等價(jià)詞寫(xiě)入路徑所有標(biāo)簽變更都通過(guò)update_frontmatter編輯 frontmatter 數(shù)組完成不寫(xiě)入正文查詢路徑按labels元數(shù)據(jù)過(guò)濾search_by_metadata即可得到所有待 AFK Agent 執(zhí)行的工單等分診視圖正交狀態(tài)statusopen / in-progress / closed記錄進(jìn)度labels記錄分診結(jié)論兩者獨(dú)立維護(hù)升級(jí)動(dòng)作分診標(biāo)簽留在個(gè)人軌僅在顯式要求時(shí)用 Linear MCP 創(chuàng)建公司側(cè)工單并回寫(xiě)linear:鏈接。這套機(jī)制的核心設(shè)計(jì)是把分診語(yǔ)義五個(gè)角色穩(wěn)定、標(biāo)簽詞匯映射表右列可定制、存儲(chǔ)實(shí)現(xiàn)Obsidian frontmatter可替換三層解耦使 AI Skill 的措辭、團(tuán)隊(duì)的實(shí)際標(biāo)簽習(xí)慣與底層工單系統(tǒng)各自獨(dú)立演進(jìn)又始終通過(guò) docs/agents/triage-labels.md 這張映射表保持一致。【免費(fèi)下載鏈接】strapi Strapi is the leading open-source headless CMS. It’s 100% JavaScript/TypeScript, fully customizable, and developer-first.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/st/strapi創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考