$npx -y skills add kweaver-ai/kweaver-dip --skill archive-protocol全局归档协议。只要任务需要写入任何文件(含 PLAN.md、报告、JSON 等归档物),必须按本技能执行 Session→ARCHIVE_ID、TIMESTAMP、双轨路径(根段须为 archives/)、回读校验与状态回执;WebUI 的 archive_grid 必须用 Markdown 中语言标识为 json 的围栏代码块输出。
| 1 | # 全局归档协议 |
| 2 | |
| 3 | 只要当前任务需要写入任何文件,就必须执行本协议。 |
| 4 | |
| 5 | 归档物包括但不限于:`PLAN.md`、`report.md`、`summary.md`、`result.json`、`notes.md`。 |
| 6 | |
| 7 | **优先级**:本协议高于任何业务协议。定时计划类任务在 `schedule-plan` 技能中约定,且只能调用本归档规则,不能覆盖。 |
| 8 | |
| 9 | ## 【身份文件】 |
| 10 | |
| 11 | 若任务需要人格/身份设定,只认: |
| 12 | |
| 13 | - `SOUL.md` |
| 14 | - `IDENTITY.md` |
| 15 | |
| 16 | 未确认可读或已注入上下文前,不得声称「已成功读取」。 |
| 17 | |
| 18 | # 归档协议 (Archive Protocol) |
| 19 | |
| 20 | ## 【核心规则:必须全量归档】 |
| 21 | |
| 22 | **所有生成的成果性内容(无论是单个文件还是整个目录/文件夹),在任务完成后必须彻底搬移(Move)至归档区。** |
| 23 | |
| 24 | 工作区(Workspace)仅作为临时加工场,任务结束后的合规状态是:**工作区不留任何生成物,全部进入 `archives/`。** |
| 25 | |
| 26 | ## 【归档路径规则】 |
| 27 | |
| 28 | 路径执行双轨制,严禁混淆,并且**只能**由 `archive` 工具写入。**注意:归档操作会将文件或目录从工作区物理搬移(Move)至归档区,原位置将不再存在。** |
| 29 | |
| 30 | 1. **计划文件(PLAN.md 专属)**:工具参数 `{"kind":"plan","sourcePath":"PLAN.md"}`。归档后,如需修改计划,应**直接编辑** `archives/{ARCHIVE_ID}/PLAN.md`。 |
| 31 | 2. **普通归档物(单个文件或整个目录)**:工具参数 `{"kind":"file","sourcePath":"result_dir"}`。支持归档单个文件或包含多个文件的目录。 |
| 32 | |
| 33 | > 卡片协议说明: |
| 34 | > - 工具入参 `kind` 只决定归档写入规则,仍然只有 `plan` / `file` |
| 35 | > - WebUI 消费归档卡片时,使用 `archive_grid.data.type` 区分 `file` 和 `directory` |
| 36 | > - 目录归档仍使用 `kind: "file"`,但成功后返回的卡片会标记 `data.type: "directory"` |
| 37 | |
| 38 | ## 【目录归档模式】 |
| 39 | |
| 40 | 当你的输出包含多个文件(如前端项目、代码包、多份分析报告)时,**必须执行以下流程**: |
| 41 | 1. 在工作区创建一个专用文件夹(如 `output/`)。 |
| 42 | 2. 将所有相关文件放入该文件夹。 |
| 43 | 3. **调用 `archive` 工具对整个文件夹进行归档**(`sourcePath` 指向文件夹路径)。 |
| 44 | 4. 归档成功后,整个文件夹及其内容将移入 `archives/{ARCHIVE_ID}/{TIMESTAMP}/`。 |
| 45 | |
| 46 | ## 【写入后强制校验】 |
| 47 | |
| 48 | 任何归档文件写入后,必须立即回读校验。未完成校验前,不得声称「已成功归档」。调度 `archive` 工具会在写入后自动回读并输出状态卡片。 |
| 49 | |
| 50 | ## 输出 |
| 51 | 请在最终输出的结尾,把archive工具的输出卡片也输出出来。必须以markdown的json代码块输出,输出的json内容为archive工具的返回内容。除archive工具外的其他工具的输出不要在结尾处输出。 |
| 52 | |
| 53 | ## 【工具执行指引】 |
| 54 | |
| 55 | **所有归档物生成都必须通过 `archive` 工具** 完成;禁止直接写 `archives/` 目录。推荐流程: |
| 56 | |
| 57 | 1. **准备源文件**:在工作区临时目录编写内容。 |
| 58 | 2. **调用工具**(工具会自动解析 session,生成 `TIMESTAMP`): |
| 59 | - **单个文件归档**: |
| 60 | ```json |
| 61 | { |
| 62 | "name": "archive", |
| 63 | "arguments": { |
| 64 | "kind": "file", |
| 65 | "sourcePath": "result.json" |
| 66 | } |
| 67 | } |
| 68 | ``` |
| 69 | - **整个目录归档(推荐用于多文件结果)**: |
| 70 | ```json |
| 71 | { |
| 72 | "name": "archive", |
| 73 | "arguments": { |
| 74 | "kind": "file", |
| 75 | "sourcePath": "my_results_folder" |
| 76 | } |
| 77 | } |
| 78 | ``` |
| 79 | 3. **后续操作**:归档成功后,工作区原文件/目录已删除。若需再次查看或编辑,**必须使用工具返回的 JSON 卡片中的 `subpath` 或 `archive_root` 拼接出的完整路径** 访问归档区文件。 |
| 80 | 4. **异常处理**:工具返回错误提示(如 `Archive blocked`)时须立刻停止归档流程,引用错误原因告知用户并等待下一步指示;禁止在失败后自行补写文件或回执。 |