@hitheo/mcp 暴露了三個:
這三者都直接從 API 實時派生 —— 沒有緩存,也沒有轉換。MCP 服務器只是以
application/json 的形式原樣轉發它們。如果底層調用失敗,該資源會返回一個 text/plain 正文,格式為 Error reading <uri>: <message>,這樣代理仍然能拿到有用的信息。
資源是一條只讀的上下文通道。它們不會改變狀態 —— 代理可以在需要獲取背景信息時隨時拉取,既不佔用一次工具調用輪次,也不會消耗額外的令牌。(讀取資源仍然會觸發底層 API 調用,但不會發生任何 AI 推理。)
theo://models
返回你的賬戶可以路由到的模型數組,結構與 GET /api/v1/models 相同。
使用場景: 在要求 Theo 使用某個特定模型之前,或當代理想向用戶說明是哪個引擎處理了這次請求時。
theo.models() → GET /api/v1/models 提供支持。
theo://skills/installed
返回當前 MCP 服務器所使用的 API 密鑰上已安裝的技能列表。結構與帶 filter="installed" 參數的 theo_skill_list 相同。
使用場景: 在代理建議安裝某個技能之前(這樣就不會推薦用戶已經擁有的技能),或在調用帶 skills 數組的 theo_complete 之前(用於校驗 slug)。
theo.skills("installed") → GET /api/v1/skills?filter=installed 提供支持。
theo://health
實時系統健康狀況 —— 引擎可用性、延遲、基礎設施狀態以及 API 版本。與 GET /api/v1/health(唯一一個無需鑑權的公開端點)完全一致。
使用場景: 在一個長任務開始時,或當某個工具開始返回錯誤、代理想要區分”Theo 掛了”和”我的提示詞寫得不對”時。
theo.health() → GET /api/v1/health 提供支持。
錯誤響應
如果底層 API 調用失敗(網絡中斷、密鑰過期等),該資源會返回:mimeType: "text/plain" 代替 JSON。代理可以選擇重試,或回退到對應的工具(例如用 theo_status 代替 theo://health)。
IDE 代理如何使用這些資源
一個典型的 Theo 感知代理提示循環:- 啓動時,拉取
theo://health以確認引擎已就緒。 - 拉取
theo://skills/installed,瞭解已經加載了哪些領域知識。 - 可選地拉取
theo://models,以獲知可以請求使用的引擎名稱。 - 然後開始調用工具(
theo_complete、theo_code等)進行實際工作。
.theo/RULES.md(由 theo init 生成),這樣工作區裏的每個代理都會遵循它。