task-explainer-html · git:20261006.b6a3d53 · 2026-10-06 · sha256 025575e5a9e63820
task-explainer-html git:20261006.b6a3d53A
Immutable. This exact content never changes and is served at /api/v1/blob/025575e5a9e63820.
--- name: task-explainer-html description: 产出与增量维护任务包中的活解释页 artifacts/explainer.html;按物化模板中的唯一权威注释编写,并消费派工注入的 <task-context> 因果上下文。Use when a task-bound dispatch requires creating, updating, or freezing the task's living explainer page, or when parsing the injected <task-context> XML. --- # 任务活解释页(task-explainer-html) 每个非 lightweight 在账任务有一页**活的可视解释**:任务包 `artifacts/explainer.html`。它不是终局报告,而是随工作轮次增量生长、在 closeout 终态冻结的单文件 HTML——让不读代码的读者随时看到这个任务做了什么、验证了什么、还差什么。Daemon 的派工协议只提醒 worker 更新这份已物化页面。 任务创建时物化的 `artifacts/explainer.html` 顶部 HTML 注释是章节、配色、布局、场景图型和质量要求的**唯一权威来源**。派工与本技能都不复制这些规则;打开页面后按注释逐轮填入真实任务内容。完成示范见 `harness/tasks/task_772dfffe2b4d41546909e3b56b-explainer-skill-svg/artifacts/sample-explainer.html`。 ## 页面编写 以物化页面的 HTML 注释为准。不要在本技能、mission 或其他副本维护第二套模板指引;模板规则变化时只改 preset 模板与它的测试。上面的示范页展示了如何把已完成任务的真实结构、验证结果和剩余范围画进五章,而不是用通用输入/处理/输出占位图。 ## `<task-context>` 注入规约 任务派工的 mission 携带一段框架注入的因果上下文 XML(2048 字节预算,`packages/daemon/src/dispatch-causal-context.ts` 是唯一权威源)。语法: ```xml <task-context> <work ref="task/<id>">所属 Work 的标题</work> <parent ref="task/<id>">父任务标题</parent> <decision ref="decision/<id>" title="决策标题"/> <chosen ref="decision/<id>" anchor="CH1">选定锚文本 — 理由</chosen> <claims ref="decision/<id>">C1 载重断言; C2 断言</claims> <fact ref="fact/<id>">事实陈述 (src:证据来源)</fact> <goal ref="task/<id>">Work 目标一两句</goal> <question ref="decision/<id>">决策待答问题</question> <refs>task/… decision/… fact/…</refs> </task-context> ``` 解析规则(确定性保证): - **行导向**:除首尾 `<task-context>` / `</task-context>` 外,每个元素是完整的一行,独立出现或缺失都合法——预算裁剪按整行丢弃,任何行子集拼出的片段仍可逐行解析。 - **转义**:文本与属性值经 XML 转义(`&` `<` `>` `"`),解析时按标准实体还原。 - **归属**:`chosen` / `claims` / `question` 用 `ref` 属性绑定所属 decision,不靠嵌套缩进。 - **截断标记**:根元素带 `truncated="yes"` 时表示有整行被预算裁掉;`<refs>` 永远保留可回查的 canonical id,缺的细节用 `ha task read-set` / `ha task show` 补,不要凭空补写。 - **层级缺失**:`work` / `parent` / `decision` / `fact` / `goal` 任一行可以不存在(该任务没有那层关系);空块不存在(无因果邻域的任务不注入)。 解析规约只说明如何理解因果上下文;如何把它呈现到页面,遵循物化模板中的 HTML 注释,不在这里另设身份区或场景骨架。 ## 活页生命周期(Living Deliverable Protocol) 1. **每轮增量更新**:工作轮次收尾时更新 `artifacts/explainer.html`——更新结论句、任务对照表状态、验证区证据,而不是推倒重写。页面 DOM 骨架保持稳定(章节 id 不变),只重写数据区,让逐轮 diff 可读。 2. **创建即物化**:非 lightweight profile 的任务在 `ha task create` 时就已物化这一页(preset 模板直接可增量填写);lightweight profile 不物化本页、mission 也不注入本协议。首轮工作从填充骨架开始,不要另起新文件。 3. **closeout 冻结**:任务进入终态时,解释页随任务包一并提交并不再改动;冻结版必须与 closeout.md 的结论一致。 4. **不替代结构化汇报**:本页是给人看的解释层;closeout.md 四节、progress、fact 等台账义务不因本页存在而减免。 ## 落点与工具 - 唯一落点:本任务包 `artifacts/explainer.html`。不用任何托管 Artifact / 外部画廊功能;产物随任务包版本管理与审计。 - 工具选择:内容已清晰(结构、数字、图型已定)就直接手写 HTML;图表繁重时才派外部 worker,且骨架里注明本页硬规则(单文件内联 / 浅色 / 全宽 / 无 JS 可读)。 - 交付前自检:泄漏 grep → 事实核对(页内数字对照来源报告)→ 无 JS 渲染验证 → 全宽留白自检(大屏打开左右只剩页边距量级空白)。