OINK CLI 与下一阶段产品路线
用户于 2026-09-29 授权独立 Go 仓库 pgsty/oink-cli 及首期开发。六个命令已有本地 0.1.0-dev 实现,最终本地验收单独记录。当前行为归属 CLI 决策与结果契约及使用指南。这不代表 CLI 已公开发布或已有独立用户采用。主题 1.2、工具能力描述、Docsy 迁移、版本生命周期、OpenAPI、MCP 与 Studio 保持提案状态。
| 记录 | 内容 |
|---|---|
| 状态 | 仓库选择与首期范围已接受;本地候选已实现并验证;后续路线保持草案 |
| 负责人 | OINK 维护者;最终本地验收与公开发布仍为独立状态 |
| 日期 | 2026-09-29 |
| 范围 | OINK 主题、独立 CLI、现有 Starter 与文档站 |
| 受影响契约 | 架构、配置与诊断、输出、迁移,以及后续的版本导航与 API 内容 |
| 源码快照 | 主题 HEAD 3a18234、文档站 HEAD 85f16bf、Starter HEAD 137843b,以及下文明确标注的本地工作 |
核心建议
独立建立 oink-cli 仓库,发布名为 oink 的可执行文件,对外继续使用 OINK 这一个产品品牌。主题负责渲染内容;CLI 帮助用户初始化、诊断、校验、升级,随后逐步支持迁移。文档站继续管理公开指南、双语设计记录和集成验收。
仓库选择与 Go 实现现已接受并在本地建立,公开发布仍是独立动作。首期行为已移入 CLI 契约;带日期的验收记录列出实际执行的检查与剩余限制。本路线图继续承载后续阶段和采用目标。
首发应改善从现有仓库到可靠发布的流程,四项实质性能力是 doctor、check、init、upgrade。dev 和 build 可以提供轻量、透明的 Hugo 快捷入口。根据真实输入仓库的证据,再扩展一条有明确支持范围的 Docsy 迁移路径。版本生命周期和 OpenAPI 生成排在首个可用版本之后,同一时间只推进一个主要内容模型项目。
主题必须允许用户不安装 CLI。对于生成内容,这意味着提交生成后的 Hugo 输入,或者以其它明确方式提供这些输入:移除 CLI 后,普通 Hugo 仍能构建站点。重新生成输入是独立操作。
产品定位与目标用户
建议对外描述为:
OINK 是基于 Hugo 的本地优先文档工具箱,将工程知识发布给读者与 Agent。
安装说明和检索入口仍保留“Hugo 主题”,因为它准确描述用户安装的东西。“知识编译器”适合作为架构方向,但目前不足以证明 OINK 已经建立了新的产品类别。新的叙事不应遮蔽现有 Markdown/Hugo 路径。
优先服务使用 Git 的开源基础设施、开发者工具和多语言技术文档维护者。他们眼前的任务是让站点运行起来、定位故障、安全升级,以及在迁移中保留 URL 和内容含义。现有维护站点提供回归证据,独立团队提供采用证据,两者用途不同。
首阶段明确不做可视化 CMS、托管账户、部署控制台、软件包市场、LLM 运行时、语义搜索服务或新渲染引擎。书籍、博客和落地页继续得到支持,但不由这些场景的功能清单驱动本轮路线图。
证据与对研究建议的调整
本提案参考用户提供的战略报告,并对照本地实现、双语 Design 专栏、Starter 和当前官方文档核实。不把报告中的 Star 数、工时估算、商业价格或市场判断视为已验证需求。
| 观察 | 产品含义 |
|---|---|
| OINK 已有公开 Starter、生成式配置 Schema、迁移脚本、出版工具和主题检查器 | 应把选定流程产品化,避免另起一套全量实现 |
| front-matter Schema 刻意不包含类型约束 | 它不是完整的可执行校验器;严格检查要尊重对应解析器和真实 Hugo 输出 |
| 现有版本功能包括跨站菜单、归档横幅和可选的路径拼接 | 缺口是生命周期与可靠的页面对应关系,不是再加一个菜单或横幅 |
| 当前版本文档明确采用各版本独立 Hugo 构建 | 首先延续该模型,不悄悄引入单次构建内的多版本渲染体系 |
| OpenAPI 组件在 HTML 之外只保留规范链接,并有明确的无障碍豁免 | 静态、无障碍的端点内容是一项具体的后续改进 |
| 反向链接已实现,G2/G3 仍为草案 | 图谱可视化不是已经接受的交付承诺 |
bin/update-consumers.py 在当前工作树中属于尚未提交的本地工作 |
可以参考其版本解析与文件保护规则,不能据此宣称 CLI 已发布 |
| 主题和文档站有大量与本提案无关的本地修改 | 本提案只记录建议,不替这些工作完成验收或发布 |
原报告正确强调了采用成本和可选工具层。以下四项调整能让它成为可执行计划:
- 将安全升级与初始化、诊断并列。现有用户已经有直接、可测试的维护需求。
- 区分维护者回归检查器与消费站检查。面向固定夹具的脚本不会自动成为通用站点校验器。
- 按明确的输入配置范围承诺迁移,不承诺完整 Docsy 或任意 MDX 转换。
- 将同时开展版本化、OpenAPI、图谱和平台建设,改成逐阶段决策。功能列表与工时相加不是人员到位的交付计划。
竞品能够证明流程方向已有先例,不能证明 OINK 自身的需求。Mintlify CLI 提供预览、校验和链接检查;Nimbus 将脚手架与 Agent 可读产物结合,目前仍为 pre-1.0;Docusaurus 明确定义版本快照,也提醒其维护与构建成本。如果照搬 Nimbus 将整套界面源码交给用户的模式,会把升级维护工作转给 OINK 消费者。可以对小型内容模板借鉴该方式,主题本身仍保留可升级模块。
为什么独立建仓
| 方案 | 好处 | 代价 | 建议 |
|---|---|---|---|
继续扩充主题 bin/ 下的 Python 脚本 |
小型维护改进最快,可以同时修改并测试 | 安装分发体验弱,没有统一的公共命令契约 | 保留内部和历史工具 |
在主题根 Go 模块内添加 cmd/oink |
单一 checkout,源码修改可以原子提交 | 混合 Hugo 资源模块、应用依赖、二进制发布和消费站支持 | 不作为公共 CLI 的方案 |
| 在主题仓库中使用独立 Go 子模块 | 保留同仓修改,同时隔离 Go 依赖 | 仍需管理子模块标签与独立发布,也更容易直接调用未发布主题内部实现 | 可用于限时原型,不作为首选产品归属 |
新建 pgsty/oink-cli |
可执行工具边界清楚、独立发布,用户无需克隆主题内部工具 | 必须显式维护兼容性和跨仓验收 | 已接受;本地 Go 仓库已建立 |
这是发布与职责划分,不是说单仓在技术上不可行。嵌套模块能够隔离依赖;分仓也确实会带来协作成本:一次渲染行为变化可能需要两个 PR、配套契约与兼容性测试。OINK 已经采用主题、文档站和 Starter 分仓,只要公共边界足够小,这个成本可以接受。
主题与 CLI 不应强制使用相同版本号。建议 CLI 0.1.x 同时支持经过测试的主题 1.1.0 基线和下一受支持版本,按能力声明兼容范围。遇到不支持的功能应明确报告,不能拿最新主题的全部 Schema 去判断所有旧站点。
现在不另建 linter、迁移引擎、OpenAPI 生成器或共享 SDK 仓库,先作为 CLI 内部包。二进制可以用 Go 编写,同时不引用 Hugo 内部 Go 包,也不让主题模块依赖 CLI。
职责划分
| 范围 | 归属 | 边界 |
|---|---|---|
| 布局、组件、样式、导航、搜索、无障碍、输出语义 | pgsty/oink |
在 Hugo 与静态站点中运行 |
| 主题默认值、对应解析器、生成式 Schema、输出 Schema | pgsty/oink |
主题行为权威及其投影 |
| 主题实现检查与小范围非法输入夹具 | pgsty/oink |
继续作为维护者工具,允许使用 Python 或 JavaScript |
| 环境诊断、消费站检查、初始化、升级,以及后续迁移转换 | pgsty/oink-cli |
首期命令已在本地实现;迁移保持提案 |
| OpenAPI 解析与源码生成、后续版本快照编排 | pgsty/oink-cli 的拟议后续能力 |
生成普通 Hugo 输入,不负责最终渲染 |
| 小型官方站点骨架与语言配置 | pgsty/oink-starter |
CLI 初始化的单一来源;可将固定快照嵌入 CLI 版本 |
| 指南、案例、PRD、已接受理由、双语集成与浏览器验收 | pgsty/oink.pgsty.com |
继续作为公开文档与回归站点的权威 |
| 托管凭据、账户开通、部署授权 | 消费站工作流 | 使用现有 CI 与服务商工具;CLI 首发不执行部署 |
CLI 读取 Hugo 的生效配置、实际解析到的主题所发布的契约文件,以及构建产物。不应通过文件名猜测最终页面树,也不维护第二套导航解析器。Hugo config 已能输出生效配置;模块检查还需覆盖 replacement、workspace 与 vendoring。
下一期主题:建议 OINK 1.2
本节保持草案。本地 CLI 候选使用已发布的 OINK v1.1.0 基线;首期 CLI 决策既未接受主题 1.2 发布或新的工具能力描述,也不以它们作为前提。
本版本以降低采用成本为目标:站点能向工具准确说明配置与输出能力,升级不要求引入新的创作模型。范围应足够小,能够独立于后续大路线发布。
| 优先级 | 需求 | 验收 |
|---|---|---|
| P0 | 在已有 Schema 旁提供小型、带版本的工具能力描述,声明可用 Schema、输出契约与工具链边界 | 描述由对应实现校验;CLI 从实际解析的模块读取;不新增逐页产物或运行时请求 |
| P0 | 让少量高价值配置诊断直接指导修复:参数、非法值、允许形式、回退和对应指南 | 覆盖真实上手故障,如 Goldmark、输出与语言配置;保留普通预览告警、严格发布失败的约定 |
| P0 | 读者界面与机器产物继续共用导航和 Markdown 权威 | 现有输出、导航检查继续覆盖语言、顺序、子路径及可选输出;CLI 不另写渲染器 |
| P0 | 随版本交付经过测试的 Starter 快照与下游采用记录 | 将公开模块解析与同级替换构建分开验证,分别记录消费站 pin 和部署 |
| P1 | 原型证明有必要时,为工具消费的少数诊断加入稳定标识 | 每个标识有对应检查器;CLI 不依赖对所有人工告警文本的解析 |
能力描述属于发布元数据,不是新的配置权威。配置 Schema 继续从现有权威生成,可选形态校验仍归对应解析器与检查器。不要违反现有诊断决策,另建通用改名键注册表。迁移转换应属于明确的 CLI 配置范围,而不是模板中的永久兼容路径。
1.2 不要求增加新的视觉组件族。正确性、无障碍和已经发现的回归仍可驱动修改。现有媒体工作保留其独立验收范围,本路线图不把所有草案完成都变成发布条件。
CLI 首发:建议 0.1
下列命令已在本地 0.1.0-dev 候选中实现。当前参数、结果语义与限制由 CLI 契约及使用指南定义;公开分发与最终验收仍为独立状态。
| 命令 | 用户结果 | 首发边界 |
|---|---|---|
oink doctor |
理解站点为何无法运行,或者本地环境为何与 CI 不同 | 检查 Hugo Extended 与版本、模块 pin 与实际来源、Starter/工具链要求、必要配置、启用输出;默认不修复 |
oink check |
知道发布构建和本地引用是否有效 | 在隔离输出中进行一次严格构建,再检查站内链接、锚点、资源与启用的机器产物;报告覆盖范围与不支持的检查 |
oink init my-docs |
得到一个无需 CLI 也能维护的小型中性站点 | 从固定 Starter 快照生成到新目录或空目录,选择支持的语言配置并固定主题版本 |
oink upgrade --to <tag> |
看清主题升级需要修改哪些内容 | 默认预览,--write 在验证后应用已审阅范围;保护无关模块依赖、用户修改与 vendor 内容 |
oink dev / oink build |
获得容易记忆的入口,无需学习第二套构建系统 | 轻量调用 Hugo,展示生效参数;build 使用发布严格度;始终支持直接使用 Hugo |
check 是统一质量入口。0.1 不同时设计职责重叠的 lint、validate、audit、check。后续确有需求时,用 --scope 区分源码提示和产物校验。
诊断与质量范围
先覆盖高置信度、可行动的失败:工具链不符、主题未解析、必要配置非法、本地链接目标或锚点或资源缺失、已启用输出的引用不一致。路由和锚点以 Hugo 产物为准,覆盖语言与 base path。不能因为编辑器 Schema 未列出某个自定义 front matter 字段,就把合法输入判成错误。
未启用的可选输出不应触发缺失错误。本地候选不检查翻译完整性;后续完整性规则必须使用站点实际声明的语言和覆盖政策。重复标题、孤儿页、缺少描述、文风与新鲜度仍属后续可选观察项,经过真实误报评审后再决定默认值。静态检查不能声称浏览器无障碍或交互测试已经通过。
本地候选冻结 oink.result/v1:结构化诊断包含稳定规则 ID、严重度、已知位置、解释、行动建议与明确覆盖范围。JSON stdout 只输出结果,日志进入 stderr,所有命令均不等待输入。退出码 0 表示必要工作完成且无阻断项,1 表示政策问题,2 表示必要工作未完成。必需但不支持的检查不能返回成功。详细字段归属结果契约,不为构建派生问题编造行号。
保留 Hugo 原始错误作为子进程证据,其人工文案不构成 CLI 协议。将来可以从同一结果投影 SARIF,而不改变规则语义。
升级与文件保护
现有消费站升级脚本提供了有价值的本地先例:区分声明 pin 与解析版本,发布验证时禁用两套 workspace,识别模块 replacement,检查 _vendor。通过聚焦测试移植这些行为,不能在背后调用未发布的 Python 文件,却宣称是独立 Go 二进制。
0.1 只升级一个明确选择的站点。跨站批量发现暂留维护者脚本,等真实消费者提出需求。普通 check 可以检查有意使用本地主题替换的环境;check --release 必须排除这些替换,验证声明的公开版本。发现 go.mod 中冲突的 replacement 应报告,不应擅自删掉。
先展示将修改的文件,验证候选升级,再应用。只备份涉及的文件;预览后文件又发生变化时拒绝覆盖;保留无关的未提交工作。失败时应说明哪些已应用、哪些未应用,并提供不会覆盖后续编辑的恢复路径。仓库不干净不应阻止只读诊断。刷新 vendor 是单独的显式动作,只改 go.mod 不等于升级了 vendor 输出。
初始化和修复不能顺便 commit、push、部署、修改全局 Agent 设置或安装系统包。向明确的新目录初始化,本身就是用户请求的创建动作;修改既有文件则默认预览。不要为了这些有边界的操作构建通用工作流引擎。
分发与离线行为
本地候选当前提供已测试的源码/Make 安装路径与归档准备。公开 Homebrew formula、下载入口及标签安装仍属后续分发工作。当前运行验收覆盖 macOS arm64;其他归档目标仅为交叉编译候选,尚未在对应平台执行。
采用 Go 可执行文件,提供发布归档、校验和与 Homebrew 安装方式。先正式验证实际测试过的 macOS、Linux 架构,其它平台在文件系统和进程行为验证前标记为实验支持。安装后的 CLI 本身不要求安装 Go 工具链、Python、Node 或注册账户。Hugo 仍为外部渲染器;首次模块解析仍需要站点文档规定的 Git、Go、Hugo 工具链。
嵌入或随版本提供准确、保留许可证的 Starter 快照,保证初始化可重复。不应每次抓取变化中的 main,也不在 CLI 中手工维护 Starter 配置副本。发布 CLI 时检查内嵌模板与来源的一致性。
区分冷安装与离线运行。未在本地提供时,下载 Hugo、主题或未缓存模板需要网络。依赖齐备之后,本地诊断、检查和构建路径应无需外部服务。离线请求遇到缓存缺失应明确失败,不能偷偷下载。外链检查、远程规范等联网行为单独启用。无需默认遥测或后台更新检查。
第一项扩展:迁移
从实际候选站点中选择一套 有文档说明的 Docsy 输入配置范围,参考现有迁移夹具和报告模型。现有 OINK 0.4/0.6 转换并不能证明任意 Docsy 站点已经可以迁移。除 Markdown 语法外,还必须检查配置、导航、资源、语言和路由。
拟议流程为 oink migrate --from docsy --source <site> --output <new-site>。先评估再写入;应用需要显式参数,并输出到独立目录。每个源项目只有一个主要状态:原样兼容、已转换、人工复核、不支持。数量必须能够核对,附理由与源码位置。自定义模板和动态行为应明确列为人工工作。
验收包括源文件保留、支持范围内的转换幂等、不修改字面代码示例、站内引用有效,以及明确的旧新路由对照。优先保持 URL;改变 URL 时须提供适合托管目标的重定向方案。HTML 构建成功不足以证明语义一致或生产重定向生效。
不要承诺“一条命令迁移任意 Docusaurus 站点”。任意 JSX、import、内嵌 React/Vue 是程序,不能执行不受信任的源码来猜测含义,也不能静默删除无法处理的内容。第一条配置范围在没有维护者救场的情况下得到复用后,再开始第二个框架。完整 MDX 迁移是后续产品投入,不是 MVP 的一个解析器任务。
下一项内容能力:版本生命周期
首个 CLI 有用之后,默认优先考虑版本生命周期,因为它延续 OINK 已有的独立构建模型。只有真实 API 用户提出更强、反复出现的需求时,才把 OpenAPI 提前。单一主维护者不同时实现这两个基础。
主题负责读者界面的版本身份、可靠页面切换、归档状态,以及范围正确的搜索和机器输出。CLI 负责查看版本、准备快照、验证页面对应关系、修改声明的生命周期状态。oink --version 表示可执行文件版本;将来的 oink docs version ... 避免与文档版本混淆。
优先采用小型版本清单,记录版本标签、源引用、base URL、状态和默认选择。保留各版本独立构建及现有外部归档。CLI 管理的清单可以生成纳入 Git 的 Hugo 配置;在该模式中,清单由用户维护,配置是接受检查的投影。现有手工管理的 params.versions 继续受支持。原型必须先确定投影关系,再冻结格式。
页面对应关系需要按文档族、语言、版本区分的逻辑页面键。优先复用合适的 translationKey 或显式稳定键,不先引入通用 UUID。目标版本缺页时应明确说明,并进入约定的版本或分区首页,不能伪造等价页或盲目拼接 URL。路由别名处理页面搬迁,与页面身份分开。
内容有实质差异的历史页通常保留自己的 canonical URL,不能全部指向最新版。语言 alternate 应指向同版本中确实存在的翻译。默认搜索与 Agent bundle 保持在当前语言和版本范围内;将来若有跨版本聚合,必须显式启用。归档应保留源码并记录构建产物如何保存,不等于删除,也不悄悄重新部署不可变归档。
NAVJSON v1 的对象 Schema 当前禁止额外字段。因此增加版本或身份字段需要明确的新 Schema、输出契约或独立产物,不能声称是无影响的 v1 字段扩展。仅仅为未来图谱预留空间,不足以成为修改当前页面身份的理由。
随后的能力:静态 OpenAPI 参考
首个 OpenAPI 产品应是 只读静态参考生成器。CLI 解析本地规范及支持的本地引用,输出普通 Markdown/Hugo data,记录来源。主题提供符合无障碍要求的语义呈现和已有输出流水线,再由普通 Hugo 将生成页构建为 HTML、Print、Markdown、搜索和 Agent 索引。
先支持操作、参数、请求与响应正文,以及带链接的 Schema 描述。解析器原型完成后明确支持的 OpenAPI 版本和构造,不能静默丢弃不支持的构造。操作身份按 API/规范分域;缺少 operationId 时可由 method/path 派生,同时提示路径变化会影响身份。不同 API 复用同一 operationId 不能发生冲突。
人工指南与生成事实分开保存。生成必须确定、记录源哈希和生成器版本、能够检测过期输出,遇到非预期人工修改拒绝覆盖。将生成源码纳入站点 Git,或作为带版本的构建输入提供,使渲染本身仍不依赖 CLI。解析远程引用属于显式准备步骤,普通生成不能遍历任意外部 URL。
验收除玩具示例外,还要有真实用户规范;支持的操作完整可核对,循环引用能够处理,路由稳定,选定输出均包含语义内容,新静态渲染器的无障碍检查不继承 Swagger/Redoc 豁免。承诺吞吐指标前先测有代表性的大型规范。
保留现有 Swagger/Redoc 集成的兼容性。交互请求、凭据管理、SDK 生成、mock server 和 API 测试平台不进入本轮生成器增量。
架构与兼容规则
CLI 内部保持简单:命令处理、Hugo/进程适配、诊断、模板加载、限定范围的文件修改。迁移和 OpenAPI 到达对应阶段后再增加内部包。这只是建议分层,不是插件 ABI 或公共 SDK。
三个边界需要版本化:CLI 的机器结果格式、主题的公共 Schema/输出契约、受支持的迁移或生成输入配置范围。优先按能力检测,不一刀切要求“最新 OINK”。遇到更新但不支持的 Schema 时,必须给出可理解的兼容性诊断。
CLI 不能导入同级主题的私有 Python 模块、依赖特定本地 checkout 布局,或者运行时下载可执行检查器。通过行为测试移植选中的消费站操作。模板内部检查器仍留在主题;公开消费规则的后续变化同步更新其对应契约。过渡期间保留现有脚本,替代实现覆盖受支持场景后再退出重复实现。
初期不要求 CLI 配置文件,渲染配置继续由 Hugo 管理。重复使用证明有必要时,工具政策文件可以包含忽略路径、规则严重性和经过审阅的基线,但不能再维护 params.ui、导航、语言或模块 pin 的副本。Lint 基线不能豁免 Hugo 构建失败、输入不可读或必需检查不受支持。
路线图与人力假设
下列时间范围保留原始规划含义,不作为执行日志。阶段 0 与阶段 1 已有首期本地候选,但这不代表公开发布、独立用户研究、迁移或后续内容模型目标已完成。实际证据归入验收记录。
以下是 首阶段 8–12 周的规划范围,假设约一名全职实现负责人,并有部分文档与评审支持。这不是交付承诺,也不是对实际人力的判断。工具链验证、用户招募和双语评审都需要时间;应优先缩小范围,避免名义上的多线并行。
| 阶段 | 自批准起的时间 | 交付物 | 退出证据 |
|---|---|---|---|
| 0:确定边界 | 第 1–2 周 | 接受仓库选择,收集真实故障,定义结果格式与支持基线,在当前 1.1.0 上原型验证只读 doctor/check | Starter 加至少三个不同形态的真实仓库;记录失败与覆盖缺口 |
| 1:完成日常流程 | 第 3–6 周 | doctor/check、固定模板 init、轻量 dev/build、单站候选升级与文件保护测试 | 新用户能定位预置故障;生成站仍可直接 Hugo 构建;没有无法解释的源码修改 |
| 2:发布有边界的产品 | 第 7–12 周 | 拟议主题 1.2、CLI 0.1、兼容记录、文档、经过验证的安装方式、有限 Docsy 迁移评估与试点 | 首次使用测试与重复升级使用;迁移限制明确;公开 pin 与下游采用单独验收 |
| 3:验证迁移及一个内容模型 | 第 4–6 月 | 完善首条迁移路径;按用户证据选择版本生命周期或 OpenAPI;需要时规划主题 1.3 / CLI 0.2 | 至少两个真实仓库使用所选流程;接受契约后才承诺兼容性 |
| 4:证据支持的扩展 | 第 6 月之后 | 另一项内容能力,再按需求引入模板、来源信息或 Agent 传输层 | 有重复使用与维护能力;不自动承诺 SaaS 产品 |
如果阶段 2 超期,移除该版本中的迁移写入能力,保留评估报告。不能削减升级保护、真实诊断或 CLI 可选性。如果没有独立团队需要这套迁移配置范围,就停止扩充框架覆盖,回到上手体验与定位研究。
新鲜度、归属信息是后续可选质量能力,先以用户确实会处理的报告验证价值。修改日期绝不能冒充验证日期。先提供少量有用的官方页面模板,再考虑 registry。G2/G3 图谱、MCP、分析适配器、可执行示例、Studio 和托管服务,都需要具体用户问题及资源决策,不应现在填入确定日程。已有静态 Agent 输出,使 MCP 的紧迫性低于采用流程。
验收与产品指标
下列用户与采用指标仍是目标。维护者执行的本地试点用于验证实现和文件保护,不能证明独立团队、首次使用成功率、留存或生产采用情况。
| 范围 | 初始目标或必须满足的性质 |
|---|---|
| 首次成功 | 前置工具已安装时,5 名不熟悉 OINK 的目标用户中,至少 4 名在 15 分钟内无需维护者干预就完成预览与严格检查;冷安装另行记录 |
| 维护价值 | 至少三个真实站点使用诊断与检查,并重复完成受支持升级;每次失败均有可行动报告 |
| 诊断准确性 | 试点中逐项复核阻断发现,在明确计数、人工标注的样本中争取误报率低于 5%,不能把它当作未经测量的宣传 |
| 完整性 | 零静默内容丢失;迁移输入逐项可核对;重复转换无差异;用户编辑和无关依赖得到保留 |
| 独立性 | 依赖准备好后,初始化或生成的站点可以直接用 Hugo 构建;CLI 与可选输出仍可选择 |
| 离线行为 | 依赖准备完成后,在禁止出站访问的环境验证受支持本地流程;缓存缺失和显式联网功能分别记录 |
| 兼容性 | 当前经过测试的主题基线与候选版本、固定的站点回归工具链、根路径和子路径、中英文场景;不暗示已测试兼容下限以上的每个 Hugo 版本 |
| 采用情况 | 首阶段争取五个独立试点团队,跟踪其是否进入生产及在 30/90 天后继续使用;这是验证目标,不是现有用户成绩 |
主要采用指标使用独立维护的生产站点,通过公开引用或用户自愿确认核实。稳定文档站不应因为 60 天没有提交而退出统计;主题升级时效与留存分别衡量。Star、下载次数、自有消费站数量和 Agent 生成量都只是辅助信号,不能证明独立采用。
首次本地成功时间、首次生产发布时间、升级成本、迁移人工成本分别记录。部署可能依赖 CLI 之外的账户与服务商,不能把本地验证等同于发布。不要为收集指标引入默认遥测。
实现归属与验证
| 改动 | 对应验证 |
|---|---|
| 工具能力描述与 Schema 兼容 | 聚焦的主题描述检查器,以及 generate-config-schema.py --check 和相关参数检查 |
| 暴露给消费者的诊断 | 对应解析器与检查器用例,CLI 诊断结果和退出码测试 |
| 已有输出行为 | 按变化范围选择 check-agent-indexes.py、输出、安全和导航检查 |
| 初始化与升级 | 固定 Starter 快照,以及包含 replacement、vendor、无关依赖、目标文件未提交修改的 CLI 测试仓库 |
| 迁移 | 移植并扩充转换用例、源文件保护与重复运行检查,真实站点路由和内容复核 |
| 后续版本与 API 呈现 | 主题输出检查,以及双语文档站的集成、浏览器、无障碍、响应式和视觉评审 |
先运行最小归属检查。公共行为变化仍要求实现、检查器和双语契约协调交付。真实集成与视觉验收使用同级站点的 make check、make browser、make dev 流程。公开回归场景不搬回主题的合成夹具树,也不要求普通消费者安装维护者使用的 Node 测试栈。
发布时分别记录本地检查、提交、标签、公开模块或二进制解析、消费站 pin 与部署。主题发布后的采用继续使用现有消费站盘点流程。一个协调 issue 或清单即可连接各仓库,无需新增编排框架。
待决问题与停止条件
仓库选择与首期实现在本地已确定。剩余发布决策包括经过验证的平台、公开分发渠道、有实际执行证据支持的兼容声明,以及独立试点招募。验收记录列明实际本地工具链与选定站点,不代表未来平台或用户已经验证。
本地候选的结果与退出语义已在 CLI 契约中冻结。最小主题能力描述与稳定主题警告 ID 保持独立提案,不追加入首个 CLI 的前提条件。版本 beta 前确定清单投影、归档保存方式和页面对应关系;OpenAPI beta 前确定支持的规范子集与生成源码归属。
如果试点实际只需要一个小型维护脚本,规则必须反复复制模板语义,或者分发维护成本超过测得的用户价值,就重新评估独立 CLI 投入,并保留已经有用的独立脚本。证据变化时可以调整版本化与 OpenAPI 的顺序,不增加同时开展的总范围。
决策日志与来源
| 日期 | 记录 |
|---|---|
| 2026-09-29 | 根据提供的战略研究与本地源码评审创建草案。建议独立可选 CLI、小型采用版本、有边界的迁移和依次推进的内容能力。本文件没有接受任何实现或建仓操作。 |
| 2026-09-29 | 随后用户授权并接受独立 Go 仓库与首期开发。本地 0.1.0-dev 候选已实现 doctor/check/init/upgrade/dev/build;稳定行为移入 CLI 决策与使用指南。CLI 提交 e623d93 已通过本地验收;公开发布、独立采用及所有后续阶段提案继续分别记录状态。 |
查阅的本地权威包括:架构、生成式 Schema 决策、迁移边界、现有版本行为、OpenAPI 限制、图谱提案状态。还检查了主题 bin/、schema/nav.v1.schema.json、现有 Starter 与文档站构建检查命令。本地在途改动没有被表述为公开发布证据。
外部一手资料核实日期为 2026-09-29,包括上文链接的 Mintlify 命令参考、Nimbus 仓库、Docusaurus 版本指南及 Hugo 配置和模块文档。这些来源支持产品比较,不能证明 OINK 的市场需求或拟议时间表。