Skip to main content
JGJenks Guo

文档 / 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/*),
  • jenks CLI 及其本地 MCP 模式(jenks mcp),
  • 参考文档 与 /openapi.json。

在一个地方修改工具,所有界面都会随之更新,因此文档不可能与实际行为偏离。

发布流水线

管理员编辑通过 GitHub API 作为提交进行。每次推送都会运行 CI:

  1. 编译并验证语料库,
  2. 将仅重新翻译发生变化的条目为其他六种语言(翻译按英文源文的哈希进行缓存;固定术语表用于设定标题与镜头名称),
  3. 构建站点与智能体文件,
  4. 部署——main 到 https://jenksguo.xyz,dev 到 https://dev.jenksguo.xyz(不被索引)。

适用于 macOS、Linux 和 Windows 的 CLI 二进制发布在 /downloads 下。

为何这样设计

个人网站虽小,但它需要被人、搜索引擎以及越来越多的智能体阅读,支持多种语言,且由 AI 与人工同样频繁地编辑。以单一、可验证的来源生成各类界面,是在保持一切一致性的前提下最简洁的设计。

.md本页内容在 AI 协助下翻译;官方职位名称保留英文。