入門:用 Convention Callout 實(shí)現(xiàn) Brain-First Lookup(以 compliant-callout 為例))
人工智能RAGAgent 記憶MCP 服務(wù)知識(shí)管理【免費(fèi)下載鏈接】gbrainGarrys Opinionated OpenClaw/Hermes Agent Brain項(xiàng)目地址https://gitcode.com/gh_mirrors/gb/gbrain點(diǎn)擊查看免費(fèi)下載本文以 test/fixtures/brain-first-skills/compliant-callout/SKILL.md 為切入點(diǎn)講解 GBrain 技能Skill如何通過(guò)一段規(guī)范化的 **Convention:**引用callout聲明 Brain-First 合規(guī)性從而通過(guò)skill_brain_first靜態(tài)檢查。讀完本文你將理解 Brain-First Lookup 協(xié)議、analyzeSkillBrainFirst分析器的三層合規(guī)階梯與兩類豁免路徑、brain_first: exempt的嚴(yán)格寫法以及如何對(duì)照夾具語(yǔ)料自查自己的 SKILL.md。背景為什么技能必須先查大腦GBrain 是 OpenClaw/Hermes 場(chǎng)景下的Agent 大腦以 Markdown 頁(yè)面為知識(shí)圖載體。在 docs/guides/brain-first-lookup.md 中項(xiàng)目的核心約定是在任何外部 API 調(diào)用之前先檢查大腦。外部 API 只用于補(bǔ)缺口而不是從零開始。這個(gè)約定的動(dòng)機(jī)非常具體如果某個(gè) Agent 對(duì)一個(gè)你已經(jīng)開過(guò) 12 次會(huì)議的人直接調(diào)用 Brave Search得到的是一份 LinkedIn 摘要而不是你的關(guān)系歷史。反過(guò)來(lái)先查大腦能得到你們?nèi)绾握J(rèn)識(shí)、討論過(guò)什么、做過(guò)什么判斷、最近有什么變化這類外部 API 永遠(yuǎn)給不出的上下文。Brain-First 的核心主張來(lái)自 docs/guides/brain-first-lookup.md大腦擁有任何外部 API 都無(wú)法提供的上下文關(guān)系歷史、你自己的評(píng)估、會(huì)議記錄、交叉引用、時(shí)間線一份 LinkedIn 抓取給你職位頭銜大腦給你的是你們喝過(guò)三次咖啡、上次討論了支付基礎(chǔ)設(shè)施論點(diǎn)、她對(duì)你的 AI Agent 觀點(diǎn)感興趣違反該約定的 Agent 既浪費(fèi)錢又給出更差的答案。compliant-callout 夾具一個(gè)完整的最小合規(guī)示例test/fixtures/brain-first-skills/是skill_brain_first分析器的回歸夾具語(yǔ)料庫(kù)共包含 9 個(gè) SKILL.md 樣本分別覆蓋合規(guī)、違規(guī)、豁免、拼寫錯(cuò)誤等場(chǎng)景。我們討論的 compliant-callout/SKILL.md 是其中通過(guò) Convention callout 聲明合規(guī)的標(biāo)準(zhǔn)樣本全文如下--- name: compliant-callout description: External-lookup skill with canonical Convention callout triggers: - research a person mutating: true --- # compliant-callout A skill that researches people via Perplexity but properly delegates to the brain-first convention. **Convention:** see conventions/brain-first.md for the lookup chain (search → query → get_page → external). ## Phase 1: Research Use Perplexity to find recent news about the person; cross-reference web_search for primary sources.這個(gè)夾具刻意制造了一個(gè)矛盾它明確調(diào)用了Perplexity和web_search兩個(gè)外部檢索工具正文中出現(xiàn)外部模式同時(shí)mutating: true表示它可能寫入大腦頁(yè)面。按直覺(jué)這很容易被當(dāng)成違規(guī)技能但它的合規(guī)點(diǎn)正是正文開頭那段引用 **Convention:** see conventions/brain-first.md for the lookup chain (search → query → get_page → external).只要這段 callout 存在分析器就會(huì)返回okreason 為compliant_callout并保留已匹配的外部模式列表用于展示如perplexity、web_search。分析器如何判定三層合規(guī)階梯與豁免優(yōu)先級(jí)skill_brain_first檢查的核心實(shí)現(xiàn)是 src/core/skill-brain-first.ts 中的純函數(shù)analyzeSkillBrainFirst(content, skillName, frontmatter)。根據(jù)文件頭注釋該模塊有三個(gè)消費(fèi)方doctor命令中的skill_brain_first檢查src/commands/doctor/skill-checks.tsskillify-check對(duì)單個(gè) SKILL.md 的門禁檢查src/commands/skillify-check.tsdry-fix.ts的MISSING_RULE_PATTERNS是否應(yīng)插入 Convention callout的判定門。判定邏輯按**豁免優(yōu)先級(jí)先命中先返回**組織共兩層豁免加三條合規(guī)階梯優(yōu)先級(jí)路徑判定依據(jù)結(jié)果 reason1顯式豁免frontmatter 中brain_first: exemptexempt_explicit2無(wú)外部模式正文中不含任何外部檢索模式exempt_no_external3合規(guī)階梯 a規(guī)范的 **Convention:** ...brain-first...引用compliant_callout4合規(guī)階梯 b## Phase 1或## Step 0且標(biāo)題含 braincompliant_phase5合規(guī)階梯 c正文中第一個(gè) brain 引用出現(xiàn)在第一個(gè)外部引用之前compliant_position6違規(guī)有外部模式且無(wú)任何合規(guī)信號(hào)missing_brain_first關(guān)鍵實(shí)現(xiàn)細(xì)節(jié)正文body掃描而非全文掃描F6。stripFrontmatter會(huì)先把 YAML fence 剝掉再執(zhí)行位置相關(guān)掃描避免tools: [web_search]這類 frontmatter 中的元數(shù)據(jù)聲明被誤判為第一個(gè)外部引用。這一點(diǎn)在 test/skill-brain-first.test.ts 有專門的回歸用例。外部模式清單8 項(xiàng)EXTERNAL_LOOKUP_PATTERNS 用詞邊界錨定的正則匹配web_search、web_fetch、exa、perplexity、happenstance、crustdata、captain_api、firecrawl。exa需要分隔符避免誤配exam、exaltcaptain_api兼容四種書寫形態(tài)captain api/captain_api/captain-api/captainapi且全部大小寫不敏感。規(guī)范 callout 正則F7CONVENTION_CALLOUT_RE /^\s*\*\*Convention:\*\*[^\n]*brain-first/im它錨定行首的 blockquote同時(shí)要求包含字面量**Convention:**和brain-first子串對(duì)路徑語(yǔ)法不敏感——純文本路徑、反引號(hào)路徑、Markdown 鏈接形式都能匹配src/core/skill-brain-first.ts。單元測(cè)試覆蓋了三種形式見 test/skill-brain-first.test.ts。無(wú)結(jié)構(gòu)性豁免CMT2代碼注釋明確指出不存在toolswrites_pages類結(jié)構(gòu)性豁免。像idea-ingest、meeting-ingestion、data-research這種既寫頁(yè)面又調(diào)外部 API的技能恰是 Brain-First 要約束的對(duì)象它們會(huì)被標(biāo)記迫使作者顯式聲明立場(chǎng)而不是躲在結(jié)構(gòu)性規(guī)則后面。為什么選 callout 而非位置判定夾具語(yǔ)料中有三個(gè)合規(guī)樣本對(duì)應(yīng)三條階梯compliant-calloutcallout、compliant-phasePhase 1 標(biāo)題、compliant-positionbrain 引用先于外部引用。compliant-callout的價(jià)值在于零歧義無(wú)論技能正文怎么組織只要開頭有一句規(guī)范 callout合規(guī)意圖就一目了然路徑無(wú)關(guān)callout 指向 skills/conventions/brain-first.md 即可具體用相對(duì)路徑還是鏈接形式不影響判定可自動(dòng)修復(fù)gbrain doctor --fix的 dry-fix 門就是拿CONVENTION_CALLOUT_RE當(dāng)是否已合規(guī)的判定未合規(guī)時(shí)自動(dòng)插入這句 callout跳過(guò)顯式豁免的技能。值得注意的是現(xiàn)有技能brain-ops、signal-detector、idea-ingest、enrich、perplexity-research、academic-verify都通過(guò) callout 路徑直接判為 OK——即使它們本身就是大腦如brain-ops也不需要額外的結(jié)構(gòu)性豁免規(guī)則見 skills/conventions/brain-first.md 與 src/core/skill-brain-first.ts 的說(shuō)明。對(duì)照夾具自查你的技能屬于哪一類test/fixtures/brain-first-skills/的 9 個(gè)夾具覆蓋了全部分類是自查的絕佳參照系夾具特征判定結(jié)果compliant-callout外部模式 規(guī)范 calloutok (compliant_callout)compliant-phase外部模式 ## Phase 1: Brain-First Lookupok (compliant_phase)compliant-position外部模式 brain 引用先出現(xiàn)ok (compliant_position)exempt-frontmatterbrain_first: exemptok (exempt_explicit)no-external無(wú)任何外部模式ok (exempt_no_external)negation-prosebrain 引用先于外部引用含否定措辭ok (compliant_position)missing-brain-first直接外部檢索、無(wú) brain 信號(hào)warn (missing_brain_first)multi-pattern同時(shí)命中 exa / perplexity / crustdatawarn (missing_brain_first)typo-frontmatterbrain-first: exemptkebab-casewarn typo 提示其中 missing-brain-first/SKILL.md 展示了最典型的違規(guī)形態(tài)——正文直接寫Call web_search to find information. Hit perplexity for synthesis. No brain consultation at all.而 typo-frontmatter/SKILL.md 展示了想豁免卻寫錯(cuò)鍵名的情況brain-first: exemptkebab-case不會(huì)落地分析器既給出可粘貼修復(fù)提示又照常標(biāo)記違規(guī)——正如約定文檔所說(shuō)靜默的拼寫錯(cuò)誤是最壞的結(jié)果。這些斷言全部被 test/skill-brain-first.test.ts 的夾具驅(qū)動(dòng)用例鎖定IRON-RULE 回歸集保證行為不被后續(xù)修改破壞。合規(guī)實(shí)操兩種零摩擦寫法根據(jù) skills/conventions/brain-first.md 的聲明式豁免小節(jié)只要滿足以下任一條件技能即合規(guī)寫法一頂部加規(guī)范 Convention callout **Convention:** see conventions/brain-first.md for the lookup chain (search → query → get_page → external).這是compliant-callout采用的方式也是gbrain doctor --fix自動(dòng)修復(fù)的落地方案。寫法二frontmatter 顯式豁免純基建類技能--- name: my-infra-skill brain_first: exempt ---用于 cron 調(diào)度、容器管理、ask-user 提示、瀏覽器驅(qū)動(dòng)等整個(gè)任務(wù)就是不咨詢大腦的技能。注意嚴(yán)格規(guī)范形式——分析器對(duì)拼寫錯(cuò)誤非常敏感skills/conventions/brain-first.md 給出了完整對(duì)照表寫法結(jié)果brain_first: exempt? 匹配brain-first: exempt? 提示需 snake_caseBrainFirst: exempt? 提示需 snake_casebrain_first: exempt? 提示去掉引號(hào)brain_first: Exempt? 提示值必須小寫brain_first: required? v0.36 僅支持exempt接近正確但未到位的寫法會(huì)打印一行可直接粘貼的修復(fù)提示formatBrainFirstTypoHint見 src/core/skill-frontmatter.ts且技能保持標(biāo)記狀態(tài)直到規(guī)范形式落地。另外當(dāng)你的技能聲明豁免后doctor --fix的自動(dòng)插入 callout 流程會(huì)跳過(guò)它src/commands/doctor/skill-checks.ts 附近的處理邏輯不會(huì)產(chǎn)生自相矛盾的標(biāo)記。三層查找鏈callout 背后引用的完整協(xié)議compliant-callout 的 callout 文本點(diǎn)出了完整查找鏈search → query → get_page → external。結(jié)合 docs/guides/brain-first-lookup.md 的偽代碼實(shí)現(xiàn)完整協(xié)議如下lookup(name_or_topic): // STEP 1: Keyword search (fast, works day one, no embeddings needed) results gbrain search {name_or_topic} if results.length 0: page gbrain get {results[0].slug} return page // done, brain had it // STEP 2: Hybrid search (needs embeddings, finds semantic matches) results gbrain query what do we know about {name_or_topic} if results.length 0: page gbrain get {results[0].slug} return page // STEP 3: Direct slug (if you know or can guess the slug) page gbrain get people/{slugify(name_or_topic)} if page: return page // STEP 4: External API (FALLBACK ONLY) // Only reach here if brain has nothing return external_search(name_or_topic)約定文檔 skills/conventions/brain-first.md 進(jìn)一步按問(wèn)題形態(tài)路由確切的已知 token / 名字 / 結(jié)構(gòu)化字段 →search廉價(jià)混合檢索概念 / 全景 / 同義改寫類問(wèn)題所有做 X 的 Y→query優(yōu)先多查詢擴(kuò)展能找回search漏掉的措辭拿到 slug 后 →get_page讀取完整編譯事實(shí)步驟 1-2 無(wú)有效結(jié)果 → 才允許外部 API。另有幾條硬性規(guī)則值得注意search計(jì)數(shù)非零不代表完整枚舉類問(wèn)題用list_pages分頁(yè)Score 0.5 use it大腦已作答就別去外部寫頁(yè)后觸發(fā)同步OpenClaw 下gbrain__sync_brainCLI 下gbrain sync --no-pull每次外部 API 拉取都要用gbrain capture入收件箱沉淀否則付過(guò)費(fèi)的查找還會(huì)再付一次費(fèi)實(shí)體查找禁用memory_search那是會(huì)話筆記檢索不是知識(shí)圖檢索。寫給技能作者的最后清單先問(wèn)我的技能會(huì)調(diào)用外部檢索工具web_search、perplexity、exa、crustdata、firecrawl、happenstance、captain api、web_fetch 之一嗎不會(huì) → 自動(dòng)豁免無(wú)需任何聲明。會(huì)在正文靠前位置加規(guī)范 callout **Convention:** see conventions/brain-first.md for the lookup chain (search → query → get_page → external).或者顯式## Phase 1: Brain-First Lookup標(biāo)題或者保證 brain 引用出現(xiàn)在外部引用之前。純基建在 frontmatter 寫brain_first: exempt務(wù)必 snake_case、小寫、不帶引號(hào)。驗(yàn)證跑gbrain doctor查看skill_brain_first檢查或?qū)π录寄苓\(yùn)行skillify-check如果被標(biāo)記且來(lái)自 PR #1206 舊豁免清單doctor 會(huì)引導(dǎo)你gbrain doctor --fix自動(dòng)補(bǔ) callout或手動(dòng)聲明豁免src/commands/doctor/skill-checks.ts。通過(guò)compliant-callout這個(gè)最小樣本可以看到GBrain 把先查大腦從口頭約定變成了可靜態(tài)校驗(yàn)的工程約束一條 callout、一個(gè) frontmatter 字段、一段位置掃描就足以讓每個(gè)技能包括那些必須調(diào)用外部 API 的技能在架構(gòu)層面聲明自己的數(shù)據(jù)獲取順序。贊分享人工智能RAGAgent 記憶MCP 服務(wù)知識(shí)管理【免費(fèi)下載鏈接】gbrainGarrys Opinionated OpenClaw/Hermes Agent Brain項(xiàng)目地址https://gitcode.com/gh_mirrors/gb/gbrain點(diǎn)擊查看免費(fèi)下載相關(guān)推薦gbrain Brain-First Lookup 協(xié)議先查大腦、再問(wèn)外部 API 的 Agent 檢索規(guī)范gbrain Brain First Lookup 協(xié)議先查大腦、再問(wèn)外部 API 的 Agent 檢索規(guī)范 本文講解 gbrain 的 Brain Firs人工智能RAGAgent 記憶MCP 服務(wù)知識(shí)管理gbrain Brain-First 合規(guī)檢測(cè)剖析從 no-external 豁免語(yǔ)義到 skill_brain_first 三層合規(guī)階梯gbrain Brain First 合規(guī)檢測(cè)剖析從 no external 豁免語(yǔ)義到 skill_brain_first 三層合規(guī)階梯 gbrainGa人工智能RAGAgent 記憶MCP 服務(wù)知識(shí)管理為 Codex 接入 GBrain 記憶插件、遠(yuǎn)程 MCP 與 brain-first 協(xié)議實(shí)戰(zhàn)指南為 Codex 接入 GBrain 記憶插件、遠(yuǎn)程 MCP 與 brain first 協(xié)議實(shí)戰(zhàn)指南 GBrain 提供了一套為已有編碼 Agent 增加顯人工智能RAGAgent 記憶MCP 服務(wù)知識(shí)管理創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考