Inkcheck 是一款面向 ink 交互式小说的机械质量检查(QA)工具。它不生成、改写或发送任何散文内容,而是用 ink 官方编译器编译故事,在明确限制内探索选择路径,并在玩家发现之前复现失败。它支持作为独立 CLI 使用,并提供可选的 CI 和 MCP 集成。
主要能力:
- 编译检查:使用 ink 官方编译器编译故事。
- 有界系统化分支探索:在明确限制内确定性地探索可达故事状态,报告发现问题的精确复现路径,并显示覆盖不完整的位置和原因。
- 死内容检测:发现不可达节点和死内容。
- 结局检测:找出每一个不同的结局。
- 断言(Assertions):使用类型化数据规则(非 JavaScript 或任意 Ink 表达式),支持 ==、!=、<、<=、>、>= 比较,以及 all、any、not 组合条件;规则可始终运行、在终止状态运行或进入命名 knot 时运行;违反规则会使 CI 失败并给出观察值和精确索引重放见证。
- 目标(Goals):使用相同的非可执行条件语法引导探索,但不使 CI 失败;可设置 goalMaxStates 或 --goal-states 添加确定性目标邻近切片。
- 分阶段目标:对于后期复合依赖,可使用多个有序 stage。
- 持久化活动(Campaigns):MCP agent 可以以 quick、balanced、deep、overnight 或 campaign 模式启动持久化活动;人类也可使用相同的持久化策略。
- 结果窗口:返回稳定的策略 ID、分配原因、测量的首选产出、吞吐量/资源证据、不确定度标记的经验范围、绑定约束以及报告 ID。
- 规则(0.7 版本):作者可在托管检查器、本地配置、CI 和 MCP 中声明不变量(invariants),例如 gold >= 0;web 流程会检测声明的 Ink 变量以辅助选择,但服务器保持权威。
- 私有 QA 证据固定(0.7.2):经批准的运行时、断言或目标见证可在编辑后重新检查,无需再次搜索。
使用方式: 需要 Node.js 18 或更高版本,无需全局安装。首次运行会下载固定版本的官方 ink 编译器,验证其 SHA-256 哈希,并在本地处理故事。
- 项目配置:可提交 inkcheck.yml 以固定入口点与有界 CI 设置;使用 inkcheck validate-config 检查配置。
- 新项目:对包含单个 .ink 文件的项目,inkcheck init 会创建配置;多文件项目必须用 --entrypoint 指定根文件;inkcheck agent-kit --format codex 会在需要时添加配置。
- 活动模式:inkcheck campaign story.ink 运行 balanced 意图;--mode quick、deep 或 overnight 选择结果与时间姿态。
适用场景:
- 作家和团队对 ink 故事进行机械 QA 和回归测试。
- CI 系统中的编译检查、分支探索和断言验证。
- 可选 AI 编码 agent 通过 MCP 驱动相同的机械 QA 检查。
限制:
- 该工具是 QA 工具,不是写作工具,不生成或改写文本。
- 本身不使用 AI、机器学习、LLM 或生成模型。
- 无法证明大型交互式故事没有 bug;组合爆炸、循环、变量、随机性和宿主游戏代码可能产生超过任何工具能穷尽访问的状态。
- 有界干净运行仅表示“未观察到违规”;只有穷尽运行才报告规则已穷尽验证。
- 目标未达到时报告 not_reached_within_limits,除非穷尽探索实际证明其不可达。
- 部分覆盖不能被描述为完整覆盖。
- 动态分配、长尾扩展、旋转和停止目前仍为实验性或仅影子(shadow-only),未广泛推广。
价格、收费、平台支持等具体信息暂未提供。