# 开发复盘

## 最初判断不足

第一个原型只是一个 518 行、包含 10 项测试的解析器。它验证了语法和打包流程，但没有达到活动对系统工程的期待。阅读活动要求后，质量标准变得清晰：项目应关注完整工作流、模块边界、可复现性、可解释性、用户体验，并将 4,000 至 10,000 行有效 MoonBit 代码作为参考范围，而不是硬性验收门槛。

因此，项目从小型解析器重新定位为 Robots 协议与抓取治理工具。

## 选题验证

最初的 SPDX 方向因为发现 MoonBit 生态中已有许可证检查器而被放弃。随后对 Mooncakes、GitHub 和公开活动作品页中的 Robots 协议工具进行了检查。历史公开列表包含 30 个项目，其中没有项目专注于 `robots.txt` 策略判断或抓取治理。

最相近的公开项目 MoonSEO 用于生成和审计 SEO 落地页。MoonRobots Gate 的输入、核心算法、输出和目标用户均不相同：协议文本和站点地图进入确定性策略引擎，最终生成带源位置的决策和抓取约束。

## 架构决策

最重要的决定是将传输层排除在核心之外。获取远程 `robots.txt` 会引入 HTTP、重定向、缓存、DNS 和时间行为，却不会提高匹配引擎本身的正确性。纯核心更容易编译到不同 MoonBit 目标，也更容易进行全面测试。

诊断使用稳定代码，而不只使用自由文本。这样既方便人工阅读，也适合 CI 和 AI 智能体处理。

结构差异与行为差异相互分离。策略文本可能发生变化，但访问结论不变；一处很小的规则修改也可能让关键路径的结论翻转。由调用方定义的探针可以明确展示这种区别。

抓取规划器是模拟器，不是执行器。它用于展示策略判断如何与运行预算组合，同时保持职责狭窄且结果确定。

## AI 辅助开发

AI 用于生态调研、架构拆分、MoonBit API 探索、实现、测试生成和文档编写。工具链始终是最终依据：每个模块加入时都经过格式化和类型检查，发现的失败会转化为测试或接口改进。

其中一项测试发现了真实的源位置错误：解析器开始新分组时没有重置起始行。另一次测试设计问题表明，JSON 转义测试生成的诊断中实际上没有包含引号。这两个问题都在最终验证前完成了修正。

## 验证结果

当前本地版本包括：

- MoonBit 核心库代码 4,284 行。
- MoonBit 测试代码 1,213 行。
- 102 项通过的测试。
- 四个可运行示例。
- 支持人工可读和 JSON 审计输出的多命令 CLI。

验证范围包括格式检查、类型检查、构建、全部测试、发布包生成，以及可运行的审计、站点地图和抓取计划工作流。

## 剩余工作

包身份、仓库地址、参赛者信息和 Mooncakes 命名空间已经核对为第三位参赛者石子硕及账号 `2111950632`。公开仓库、可追踪提交、GitHub Actions 和 Mooncakes `0.2.0` 发布均已完成；当前只剩按照 8 月黑客松飞书问卷和后续官方通知提交报名材料。

核心目前不会获取 URL。未来的传输包可以增加 RFC 9309 重定向、状态码和缓存处理，同时保持策略行为为纯逻辑。来自主要爬虫实现的兼容性测试夹具也可以进一步增强协议一致性说明。
