文件 / explanation
架構
jenksguo.xyz 是如何組成的——git 中的一份語料庫、一個驗證編譯器、部署於 Cloudflare 的靜態網站、一個可使用工具的助理,以及支撐 MCP、REST 與 CLI 的單一規格。
簡述
只有一個真實來源——位於 git 的 Markdown 檔語料庫——其他一切不是由它產生,就是從它讀取:七種語言的網站、代理可用的檔案、Ask Jenks 助理、REST API、MCP 伺服器與 CLI。
語料庫
content/corpus/ 內以一個 Markdown 檔對應每一筆經歷、專案、社群角色與教育條目,每個檔案都含有 YAML 前置資料(日期、標籤、角色鏡頭、關鍵成果、技能、佐證連結)與長篇正文。其旁還有核心個人檔案、能力、憑證、演講、世界觀、角色鏡頭與助理的技能。事實來源彙整自 Jenks 的履歷、LinkedIn、Linktree 與講者頁面,衝突則以保守方式解決。
把語料庫放在 git 中,代表每次變更都是一次提交:可審查、可追溯且可回復。
編譯器
scripts/build-corpus.mjs 讀取語料庫,依一份綱要(scripts/corpus-schema.mjs)驗證每個檔案,並將其編譯為單一 JSON 語料庫,外加代理檔案 /llms-full.txt 與 /experience.json。未知的標籤或鏡頭、錯誤日期、遺失圖片或缺少區段都會使建置中止。管理 API 在提交前也會執行「相同」的驗證,因此無論是人或 AI 的不良編輯,都會在破壞任何東西之前被拒絕。
網站
此網站是由 Next.js 匯出的靜態站,透過 Cloudflare Workers Static Assets 伺服。其前方有個小型 Worker 處理重新導向(jenksguo.com 與 www 主機 → jenksguo.xyz)、安全性標頭與各項 API。英文位於 /;其他六種語言位於 /zh、/zh-hant、/ja、/fr、/es 與 /eo。每個條目在每種語言中都有自己的頁面。
Ask Jenks 助理
此助理是可使用工具的代理,而非一大段提示詞。其系統提示僅包含核心個人檔案與每個條目、鏡頭與技能的一行式索引。當需要細節時,它會呼叫工具:
load_skill— 依問題類型的作法手冊(角色適配、顧問規模界定、AI 轉型、STAR 故事、治理、職涯導航……),get_entries— 依 slug 取得完整撰寫,list_entries— 依標籤、鏡頭或種類篩選,search_corpus— 關鍵字搜尋。
這種「逐步揭示」讓答案能立基於整個語料庫,而不需要龐大的提示詞。模型是透過 OpenRouter 存取。
一份規格,四種介面
src/spec.js 將所有公開與管理工具定義在同一處:名稱、描述、輸入綱要、REST 路由與 CLI 指令。由此產出:
- 遠端 MCP 伺服器(
/mcp、/mcp/admin), - REST API(
/api/v1/*、/api/admin/*), jenksCLI 與其本地 MCP 模式(jenks mcp),- 參考文件 與
/openapi.json。
在一處變更工具,所有介面便會隨之更新,文件也就不會與行為脫節。
發佈流程
管理端的編輯是透過 GitHub API 進行提交。每次推送都會執行 CI:
- 編譯並驗證語料庫,
- 僅重新翻譯「有變更的條目」為其他六種語言(翻譯以英文原文的雜湊作為快取鍵;固定字彙表用於標題與鏡頭名稱),
- 建置網站與代理檔案,
- 部署——
main到https://jenksguo.xyz,dev到https://dev.jenksguo.xyz(不被索引)。
適用於 macOS、Linux 與 Windows 的 CLI 可執行檔會發佈在 /downloads。
為何如此設計
個人網站雖小,但讀者包含人、搜尋引擎,且越來越多是代理;有多種語言,且與手動編輯同等頻繁地由 AI 編輯。以單一經驗證的來源生成各種介面,是能讓這一切保持一致的最簡單設計。
.md本頁內容在 AI 協助下翻譯;官方職稱保留英文。