# Hermes 高频 Skills 防护整改计划：分步执行提示词

> 适用计划：`/home/lin/.hermes/projects/hermes-skill-audit/docs/2026-05-14-remediation-plan.md`  
> 目标：把整改计划拆成可复制、可审计、可逐步执行的提示词。  
> 使用方式：每次只复制一个阶段的提示词给 Agent；等该阶段完成并验证后，再进入下一阶段。

## 使用原则

1. **一次只执行一个阶段**：不要把多个阶段合并给 Agent，避免越界修改。
2. **先本地原型，再 active-layer promotion**：任何写入 `/home/lin/.hermes/skills/**`、memory、runtime、cron 的动作，都必须先经过 Phase 0.5。
3. **没有证据不算完成**：每一步都必须输出路径、命令、exit code、文件大小、校验结果。
4. **默认不写 memory、不改 active skill、不 commit**：除非提示词里明确授权。
5. **遇到不确定边界先停止**：不要让 Agent 自行扩大范围。

---

## Prompt 0：启动前目标复述与边界确认

用途：开始执行前，让 Agent 重新确认项目目标、非目标和当前阶段边界。

```text
请读取并复述本次整改项目目标：
/home/lin/.hermes/projects/hermes-skill-audit/docs/2026-05-14-remediation-plan.md

要求：
- 只读，不修改任何文件。
- 用中文输出。
- 说明本项目要解决的真实事故路径是什么。
- 说明本项目的直接目标、工程目标、治理目标、安全目标和非目标。
- 明确当前尚未授权修改 active skills / wrapper / cron / runtime / memory / Hermes core。
- 最后给出你建议先执行的最小阶段集合。

不要执行计划，只做目标澄清。
```

验收标准：
- 明确说出“可分享教程没有生成/发布 artifact”和“workflow 被误写入 memory”两个根因。
- 明确当前不授权 active-layer 修改。

---

## Prompt 1：Phase 0 基线检查

用途：确认计划和审查文档存在，建立执行前基线。

```text
请执行 Phase 0：冻结与基线记录。

计划文件：
/home/lin/.hermes/projects/hermes-skill-audit/docs/2026-05-14-remediation-plan.md

审查结论文档：
/home/lin/.hermes/projects/hermes-skill-audit/docs/2026-05-14-top10-skills-guardrail-audit.md

要求：
- 只读检查，不修改 active skills / wrapper / cron / runtime / memory / Hermes core。
- 验证两个文档存在且非空。
- 输出每个文件的路径、行数、字节数、sha256。
- 检查当前项目是否为 git repo；如果不是，只说明事实，不初始化 git。
- 输出“当前状态：尚未执行整改，尚未修改 active skills”。

完成条件：
- 两个文档均存在且非空。
- 输出完整证据。
```

验收标准：
- 有 `sha256sum` 或等价哈希证据。
- 没有写入 active layer。

---

## Prompt 2：Phase 0.5-spec 建立 evidence / promotion 模板

用途：先建立 active-layer promotion 的审计模板，不实际修改 active layer。

```text
请执行 Phase 0.5-spec：建立 active-layer promotion preflight 模板。

范围：
- 只在项目目录内创建模板和说明：
  /home/lin/.hermes/projects/hermes-skill-audit/
- 不修改 /home/lin/.hermes/skills/**。
- 不写 memory。
- 不修改 wrapper / cron / runtime / Hermes core。

请创建一个 project-local 模板目录：
/home/lin/.hermes/projects/hermes-skill-audit/templates/promotion-evidence/

模板至少包含：
1. decision-record.md
2. before-checksums.txt.example
3. after-checksums.txt.example
4. restore.sh.example
5. restore-dry-run.txt.example
6. restore-verify-command.txt.example
7. README.md

模板内容必须说明：
- 何时需要使用 Phase 0.5。
- 如何记录用户授权来源。
- 如何记录允许修改和禁止修改的文件。
- 如何生成 before-files/ 或 before-active-layer.tar.gz。
- 如何恢复。
- memory 写入的撤销/替换要求。

验证：
- 列出模板文件。
- 输出每个模板文件大小。
- 说明本步骤没有修改 active layer。
```

验收标准：
- 模板存在且非空。
- 包含真实备份、restore、dry-run、verify 的字段。
- 不修改 active skills。

---

## Prompt 3：Phase 1-local 发布脚本原型设计

用途：先在 project-local 目录设计分享教程发布 gate，不提升到 active skill。

```text
请执行 Phase 1-local 的第一步：设计 project-local 分享教程发布脚本原型。

计划文件：
/home/lin/.hermes/projects/hermes-skill-audit/docs/2026-05-14-remediation-plan.md

工作目录：
/home/lin/.hermes/projects/hermes-skill-audit/prototypes/article-tutorial-publish/

要求：
- 只在上述 prototypes 目录内创建文件。
- 不修改 /home/lin/.hermes/skills/**。
- 不发布到 jedi，除非后续单独授权真实样例测试。
- 不写 memory。

请实现或准备以下内容：
1. publish_article_tutorial.py 原型脚本。
2. fixtures/ 目录：
   - tutorial-valid.md
   - tutorial-empty.md
   - 教程-中文文件名.md
   - not-markdown.txt
3. fake-bin/ 目录：
   - fake-ssh
   - fake-scp
4. README.md：说明脚本输入、输出 JSON、失败 JSON、测试方法。

脚本要求：
- 输入 Markdown。
- 生成 sibling HTML。
- 验证 doctype/title/TOC/copy-code。
- 默认不覆盖已有 sibling HTML。
- 支持 --ssh-bin / --scp-bin。
- SSH 参数必须包含 BatchMode、ConnectTimeout、StrictHostKeyChecking、UserKnownHostsFile。
- stdout 输出严格 JSON。
- stderr 输出诊断。
- exit code 作为成功/失败判据。

验证：
- 运行本地 fixture 测试，不连接真实 jedi。
- 输出每个测试的命令、exit code、JSON 摘要。
```

验收标准：
- 原型脚本在 project-local 下。
- fake ssh/scp 测试可验证 SSH 参数。
- 不触碰 active skill。

---

## Prompt 4：Phase 1-local 运行 fixture 测试

用途：专门运行发布脚本的本地测试，避免实现和验证混在一起。

```text
请执行 Phase 1-local 的 fixture 验证。

工作目录：
/home/lin/.hermes/projects/hermes-skill-audit/prototypes/article-tutorial-publish/

要求：
- 只读运行和生成测试输出；如需写测试结果，只写入该 prototypes 目录下的 evidence/。
- 不连接真实 jedi。
- 不修改 active skills / memory / runtime。

请运行并记录以下测试：
1. tutorial-valid.md：应成功生成 HTML。
2. tutorial-empty.md：应失败，stdout 为 status=error。
3. 教程-中文文件名.md：应成功。
4. not-markdown.txt：应失败。
5. path traversal 输入：应失败。
6. sibling HTML 已存在：默认应失败。
7. fake ssh/scp：验证 SSH/SCP 参数包含：
   - BatchMode=yes
   - ConnectTimeout=10
   - StrictHostKeyChecking=yes
   - UserKnownHostsFile=<explicit-known-hosts>
8. host key 缺失模拟：应失败且不等待交互。

输出：
- 每个测试的命令。
- exit code。
- stdout JSON。
- stderr 摘要。
- evidence 路径。

完成条件：
- 所有预期成功/失败均符合预期。
- 失败场景也输出可解析 JSON。
```

验收标准：
- 有测试证据目录。
- 失败用例不是 shell 崩溃，而是受控 JSON 错误。

---

## Prompt 5：Phase 1-local 真实 jedi 发布 smoke

用途：在本地原型通过后，做一次真实远程发布 smoke。此步骤有远程副作用，需单独确认。

```text
请执行 Phase 1-local 的真实 jedi 发布 smoke。

授权范围：
- 允许使用 project-local 原型脚本发布一个测试 Markdown + HTML 到：
  jedi:/home/lin/download/documents/tutorials
- 只发布带有 smoke/test 前缀的测试文件。
- 不修改 active skills。
- 不写 memory。
- 不修改 runtime / cron / wrapper。

工作目录：
/home/lin/.hermes/projects/hermes-skill-audit/prototypes/article-tutorial-publish/

要求：
1. 使用一个测试 Markdown 文件，文件名包含 smoke 和时间戳。
2. 调用原型 publish_article_tutorial.py。
3. 使用真实 ssh/scp 连接 jedi。
4. stdout 必须为严格 JSON。
5. 远程验证：Markdown 和 HTML 存在且 size > 0。
6. 检查 HTML 包含 doctype、title、TOC、copy-code。
7. 输出本地路径、远程路径、文件大小、exit code。
8. 不删除远程 smoke 文件，除非我明确要求。

停止条件：
- jedi SSH 不可达。
- host key 策略无法非交互验证。
- JSON 不可解析。
- 远程验证失败。
```

验收标准：
- 远程 smoke 文件真实存在。
- 输出严格 JSON 和远程验证证据。

---

## Prompt 6：Phase 2-local memory proposal 机制

用途：设计 memory 写入前的 routing proposal，只验证，不写入 memory。

```text
请执行 Phase 2-local：memory proposal / routing 机制设计与验证。

范围：
- 只在项目目录下写入 proposal 设计文档和测试样例：
  /home/lin/.hermes/projects/hermes-skill-audit/prototypes/memory-routing/
- 不调用 memory 工具。
- 不 patch skill。
- 不修改 wiki / runtime / cron / active skills。

请创建：
1. memory-proposal-schema.md
2. fixtures.jsonl
3. expected-results.jsonl
4. README.md

proposal schema 必须包含：
- candidate
- target: memory|user|skill|wiki|project|todo|none
- ttl_class: stable|workflow|temporary
- rationale
- rejected_layers
- action: propose_memory|propose_skill_patch|propose_wiki_write|propose_project_doc|do_not_persist
- side_effect: none|memory_write|skill_patch|wiki_write|project_doc_write
- requires_user_confirmation: true|false

必须包含本次事故回归样例：
输入：“分享教程默认发布到 jedi 目录”。
期望：
- 不直接写 memory。
- 发布流程进入 skill proposal。
- 若保留偏好，也只是候选，需要用户确认。
- requires_user_confirmation=true。

验证：
- 输出 fixtures 和 expected results。
- 说明没有调用 memory 工具。
```

验收标准：
- proposal 默认只是建议。
- 不执行任何持久化写入。

---

## Prompt 7：Phase 5 P0-C 默认 commit 授权门最小补丁计划

用途：在真正 patch active skills 前，先写最小补丁计划和 fixture，不直接修改。

```text
请为 Phase 5：P0-C 默认 commit 授权门写最小补丁计划。

涉及 skills：
- requesting-code-review
- writing-plans
- subagent-driven-development

要求：
- 只写项目内计划和 fixtures，不修改 active skill。
- 输出建议 patch 点，但不要执行 patch。
- 不 commit。
- 不写 memory。

请创建目录：
/home/lin/.hermes/projects/hermes-skill-audit/prototypes/commit-authorization-gate/

请写入：
1. patch-plan.md
2. fixtures/review-only.md
3. fixtures/write-plan-only.md
4. fixtures/execute-and-commit.md
5. expected-results.md

规则目标：
- “帮我 review”不得出现 commit 命令。
- “写个 plan”不得出现 commit 命令。
- “执行并提交”必须先识别明确授权，再允许 commit。
- 用户说“继续/好的/是”不算 commit 授权。

输出：
- 每个 skill 的最小 patch 建议。
- 每个 fixture 的预期行为。
- 哪些语句算明确授权，哪些不算。
- 后续如要 patch active skill，必须先走 Phase 0.5。
```

验收标准：
- 只有计划和 fixture，无 active patch。
- commit 授权词清楚。

---

## Prompt 8：Phase 1 + Phase 3a 合并 promotion 执行提示词

用途：当本地原型全部通过后，一次性提升事故相关 active skill 变更。此步骤会修改 active skills，必须单独确认。

```text
请执行 Phase 1 + Phase 3a 合并 promotion。

前置条件：
- Phase 1-local fixture 全部通过。
- Phase 1-local 真实 jedi smoke 通过。
- Phase 2-local memory routing 验证通过。
- Phase 0.5 evidence 模板已准备好。

授权范围：
只允许修改以下 active skill 相关文件：
1. /home/lin/.hermes/skills/productivity/article-and-content-summarization/scripts/publish_article_tutorial.py
2. /home/lin/.hermes/skills/productivity/article-and-content-summarization/SKILL.md
3. /home/lin/.hermes/skills/productivity/article-and-content-summarization/references/article-output-modes.md
4. /home/lin/.hermes/skills/hermes/hermes-knowledge-and-workflow-governance/SKILL.md
5. 必要时新增一个 governance reference 文件，但必须先说明路径。

禁止：
- 修改 Hermes core。
- 修改 cron/runtime/gateway/wrapper。
- 写 memory。
- commit。
- 修改不在授权列表中的 skill。

执行要求：
1. 创建 evidence bundle。
2. 生成 before snapshot 和 before-files/tarball。
3. 写 decision-record.md。
4. 写 restore.sh、restore-dry-run.txt、restore-verify-command.txt。
5. 提升 publish_article_tutorial.py。
6. patch article skill：要求“可分享教程”必须调用脚本 gate。
7. patch governance skill：加入 memory proposal / routing preflight。
8. 在 SKILL.md 前 80 行内加入或链接 Non-negotiable gates。
9. 运行验证：
   - skill_view 读回。
   - publish script help。
   - 使用真实样例或 smoke 验证脚本。
   - memory routing 事故样例不写 memory。
10. 记录 after-checksums。

完成输出：
- 修改文件列表。
- evidence bundle 路径。
- before/after checksum 路径。
- restore.sh 路径。
- 验证命令和 exit code。
```

验收标准：
- 所有 active 修改可回滚。
- skill_view 能读回新规则。
- 脚本 gate 可运行。

---

## Prompt 9：Phase 4 continue / next step 状态机规则计划

用途：先为 “继续/下一步” 弱指令写规则计划，不直接修改。

```text
请为 Phase 4：continue / next step 状态机规则写项目内计划。

涉及 skills：
- market-watch-automation
- writing-plans
- subagent-driven-development
- hermes-project-and-extension-management

要求：
- 只写计划和 fixtures，不修改 active skills。
- 不写 memory。
- 不 commit。

请创建：
/home/lin/.hermes/projects/hermes-skill-audit/prototypes/continue-state-machine/

内容包括：
1. state-machine-rules.md
2. fixtures/continue.md
3. fixtures/continue-phase-2.md
4. fixtures/continue-commit.md
5. expected-results.md

规则目标：
- 用户只说“继续”时，默认只读状态检查。
- 如果下一步包含写文件、发布、commit、runtime/data 修改，必须说明副作用并等待明确授权。
- 上下文压缩后 phase 不确定时，不推进副作用动作。
- “好的/是/继续”不算高风险授权。

输出：
- 建议规则文本。
- 每个 skill 的适配注意事项。
- 后续 active patch 必须走 Phase 0.5。
```

验收标准：
- 弱指令不会被解释成副作用授权。
- 不修改 active layer。

---

## Prompt 10：Phase 6 长 skill 瘦身试点计划

用途：最后阶段才使用，先选低风险 skill 做试点。

```text
请为 Phase 6：P3 高频长 skill 瘦身试点写计划。

要求：
- 只写计划，不修改 active skill。
- 首个试点优先选择低风险 skill 或只读类片段。
- 不选择 runtime/data/commit 相关 skill 作为首个试点。
- 不把安全硬规则只放到 references。

请输出：
1. 推荐首个试点 skill，并说明为什么低风险。
2. 当前主 SKILL.md 中必须保留的硬规则类型。
3. 可迁移到 references 的内容类型。
4. 验证方式：
   - 关键约束仍在前 80 行。
   - references 可读取。
   - 真实任务不丢关键约束。
5. 停止条件：
   - 安全边界不可见。
   - 触发路径不清。
   - 执行时不会主动加载 reference。

不要执行瘦身，只写计划。
```

验收标准：
- 不直接改长 skill。
- 明确“安全硬规则必须留在主 SKILL”。

---

## 推荐实际执行节奏

第一轮只执行：

1. Prompt 0：目标复述
2. Prompt 1：Phase 0 基线检查
3. Prompt 2：Phase 0.5-spec 模板
4. Prompt 3：Phase 1-local 原型设计
5. Prompt 4：Phase 1-local fixture 测试
6. Prompt 6：Phase 2-local memory proposal

暂缓：

- Prompt 5：真实 jedi smoke
- Prompt 8：active promotion
- Prompt 9：状态机 active patch
- Prompt 10：长 skill 瘦身

原因：先证明本地 gate、evidence 和 proposal 可行，再决定是否进入 active-layer 修改。

## 最终判断

这组提示词的核心目的不是让 Agent “更认真”，而是把每一步都约束成：

```text
明确输入 → 明确边界 → 明确产物 → 明确验证 → 明确停止条件 → 明确回滚
```

只有这样，才能降低 AI 在长会话、弱指令、默认行为和副作用任务中的不确定性。
