文件 / explanation
架構
Jenks 的網站如何組成——一個在 git 裡的語料庫、一個可驗證的編譯器、部署在 Cloudflare 的靜態網站、一個可使用工具的助理,以及一份同時驅動 MCP、REST 與 CLI 的規格。
簡述
只有一個真實來源——位於 git 的 Markdown 檔語料庫——其他一切不是由它產生,就是直接讀取它:支援七種語言的網站、代理用檔案、Ask Jenks 助理、REST API、MCP 伺服器與 CLI。
語料庫
content/corpus/ 以每則經歷、專案、社群角色與教育條目各一個 Markdown 檔的方式存放,每個檔案都含有 YAML 前置資料(日期、標籤、角色鏡頭、關鍵成果、技能、證據連結)以及長篇正文。其旁還有核心個人檔案、能力、證照、演講、世界觀、角色鏡頭與助理技能。事實資料蒐集自 Jenks 的履歷、LinkedIn、Linktree 與他的講者頁面,並以保守方式解決衝突。
將語料庫保存在 git,意味著每一次變更都是一個 commit:可審查、可追溯、可還原。
編譯器
scripts/build-corpus.mjs 會讀取語料庫,依據單一綱要(scripts/corpus-schema.mjs)驗證每個檔案,並將其編譯成單一的 JSON 語料庫,以及代理用檔案 /llms-full.txt 與 /experience.json。未知的標籤或鏡頭、錯誤的日期、遺失的圖片或缺少的章節都會使建置中止。管理 API 在提交前也會執行「相同」的驗證,因此不良的編輯——不論是人為或 AI 所為——都會在破壞任何東西之前被拒絕。
媒體
照片、影片剪輯與 PDF 不放在 git。它們會透過管理介面上傳到由開發與正式環境共用的 Cloudflare R2 儲存桶,並由 Worker 以 /media/<year>/<month>/<name>-<fingerprint>.<ext> 路徑、為期一年的快取進行服務。內容以該路徑引用;管理 API 會在提交前檢查每個被引用的檔案是否存在。
網站
網站是由 Next.js 產出的靜態匯出,透過 Cloudflare Workers Static Assets 服務。在它前面有一個小型 Worker,負責處理重新導向(jenksguo.com 與 www 主機 → jenksguo.xyz)、安全性標頭與 API。
網站有兩個位址,但顯示內容始終相同。https://jenksguo.pages.dev 是正本,會出現在履歷與 QR 碼上:公司網路常會封鎖新註冊網域,而 pages.dev 歷史較久且普遍允許。https://jenksguo.xyz 是鏡像站。pages.dev 位址是一個 Cloudflare Pages 專案(mirror/),其唯一的程式碼就是將每個請求轉發給網站的 Worker,因此一次部署即可更新兩個位址,且無需手動同步。英文位於 /;其他六種語言位於 /zh、/zh-hant、/ja、/fr、/es 與 /eo。每個條目在每種語言中都有自己的頁面。
Ask Jenks 助理
此助理是可使用工具的代理,而不是一大段提示詞。它的 system prompt 只包含核心個人檔案與每個條目、鏡頭與技能的一行式索引。當需要細節時,便呼叫工具:
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 進行的 commits。每次 push 都會執行 CI:
- 編譯並驗證語料庫,
- 僅「重新翻譯變更過的條目」為其他六種語言(翻譯以英文原文的雜湊做快取;固定詞彙表用於標題與鏡頭名稱),
- 建置網站與代理用檔案,
- 部署——
main到https://jenksguo.pages.dev,dev到https://dev.jenksguo.xyz(不被索引)。
適用於 macOS、Linux 與 Windows 的 CLI 可執行檔會發佈在 /downloads。
為何採取此設計
個人網站規模不大,但讀者包含人類、搜尋引擎,且越來越多是代理;同時支援多種語言,並且由 AI 與人工同樣頻繁地編輯。以單一可驗證來源生成各種介面,是讓上述各方維持一致性的最簡設計。
.md本頁內容在 AI 協助下翻譯;官方職稱保留英文。