2026-05-28 · DECISION TRACE

Spice → Hermes Decision Layer Lite 吸收收口报告

保留方案、指标、验证、复盘和治理判断,让结论能够追溯。

2026-05-28记录日期
调研记录记录类型
21章节数

Spice → Hermes Decision Layer Lite 吸收收口报告

  • HTML: https://decision.ht1072.top/2026-05-28-spice-decision-layer-lite-absorption-final-report.html
  • Local HTML: [已移除本地路径]
  • Generated: 2026-05-28T22:03:54+08:00

Spice → Hermes Decision Layer Lite 吸收收口报告

结论

本轮对 Dyalwayshappy/Spice 的吸收应在 Hermes Decision Layer Lite 收口。

最终判断:

吸收等级:L3 局部能力吸收
最终决策:Partial Absorb
停止线:不进入 Core Merge,不接 Spice runtime / memory / bridge 生产链

我们已经把 Spice 最值得进入 Hermes 的部分拆出来并落地:

Observation Contract
→ Decision Context Projection
→ Decision Card Builder from Context
→ Draft-to-Trace Adapter
→ Decision Trace HTML / Wiki / Retain
→ Executor Outcome Contract

这是一条轻量、可审计、只读优先、draft-only 的决策层链路。

为什么收口在这里

Spice 的核心价值不是“再引一个 agent 框架”,而是它把 agent 上方的决策层拆得比较清楚:

  • 外部事件如何进入决策状态
  • 候选方案如何表达
  • 为什么选 / 为什么不选
  • 执行前如何卡审批边界
  • 执行后如何回流 outcome

这些能力已经被拆成 Hermes 本地脚本和 contract。继续往下吸 runtime / bridge / memory 会制造平行系统,收益下降、风险上升。

已完成吸收清单

序号 能力 Hermes 落点 状态
1 Spice Decision JSON → Decision Trace decision_trace_publish.py --spice-decision-json 已完成
2 Executor Outcome Contract decision_executor_outcome_validate.py 已完成
3 Observation Schema Contract decision_observation_validate.py 已完成
4 Decision Context Projection decision_context_project.py 已完成
5 Decision Card Builder from Context decision_card_build_from_context.py 已完成
6 Draft-to-Trace Adapter decision_card_draft_to_trace_md.py 已完成
7 Decision Layer Lite Runbook skill reference 已完成

最终运行链路

1. 外部事件进入 observation

只允许 4 类 observation:

commitment_declared
work_item_opened
executor_capability_observed
execution_result_observed

故意不支持:

raw_message
arbitrary_event
generic_webhook

原则:

外部输入先变成白名单 observation,再影响 decision state。

2. Observation → Context Projection

脚本:

python3 ~/.hermes/scripts/decision_context_project.py observations.json --json > context.json

输出只读 context:

  • commitments
  • open work items
  • executor capabilities
  • recent execution results
  • limits

固定边界:

projection is read-only
no scheduling
no execution
no production state writes

3. Context → Draft Decision Card

脚本:

python3 ~/.hermes/scripts/decision_card_build_from_context.py context.json --title "Decision draft" --json > draft.json

输出 schema:

hermes.decision_card.draft.v1

关键字段:

{
  "status": "draft",
  "selection": {
    "selected_candidate_id": null,
    "requires_human_selection": true
  },
  "execution": {
    "will_execute": false,
    "path": "none"
  }
}

原则:

builder 只生成草案,不选、不排、不执行。

4. Draft → Decision Trace Markdown

脚本:

python3 ~/.hermes/scripts/decision_card_draft_to_trace_md.py \
  --input draft.json \
  --output trace.md \
  --title "Decision draft"

5. Markdown → HTML / Wiki

脚本:

python3 ~/.hermes/scripts/decision_trace_publish.py \
  --title "Decision draft" \
  --slug "decision-draft" \
  --input trace.md

需要公网发布时:

python3 ~/.hermes/scripts/decision_trace_deploy_pages.py

6. Executor Outcome Contract

脚本:

python3 ~/.hermes/scripts/decision_executor_outcome_validate.py outcome.json --json

原则:

executor reports outcome; executor does not decide.

禁止 executor outcome 出现:

selected_action
recommendation
best_option
next_action
decision

已验证结果

单元 / contract 回归

cd ~/.hermes/hermes-agent
python -m pytest -q \
  tests/test_decision_card_draft_to_trace_md.py \
  tests/test_decision_card_build_from_context.py \
  tests/test_decision_context_project.py \
  tests/test_decision_observation_validate.py \
  tests/test_decision_executor_outcome_validate.py \
  tests/test_decision_trace_scripts.py

结果:

37 passed in 2.19s

端到端 smoke

已跑通:

fake observations
→ context.json
→ draft.json
→ trace.md
→ Decision Trace HTML/wiki

验证结果:

{
  "context_ok": true,
  "draft_ok": true,
  "draft_no_execute": true,
  "adapter_ok": true,
  "publish_ok": true,
  "html_contains_title": true,
  "html_contains_candidate": true,
  "html_contains_no_executor": true,
  "all_ok": true
}

Smoke 产物:

  • HTML: [已移除本地路径]
  • Wiki: [已移除本地路径]
  • Public path: [已移除本地路径]

已发布验证页

Spice JSON 直发验证页:

https://decision.ht1072.top/2026-05-28-spice-json-direct-publish-check.html

该页验证了:

  • Spice Decision JSON 可直接进入 Hermes Decision Trace
  • 页面样式已统一
  • 摘要层不再泄漏 Markdown 表格 / JSON / code fence
  • 执行边界显示为不调用真实 executor

明确不吸收的部分

不吸收项 原因
Spice runtime 会形成平行 runtime,收益不如轻量 contract
.spice/memory 与 Hermes memory / wiki / Hindsight / session_search 职责冲突
Spice CLI 默认入口 用户入口已是 Hermes / WebUI / 飞书,没必要反客为主
spice-hermes-bridge 生产链 会触发真实 hermes chat / executor 生命周期,风险高
自动 planner / scheduler 跨入高风险自动调度,当前只保留 draft-only
自动 candidate selection 需要另设评分、审批和责任边界,本轮不做

当前文件索引

Scripts

  • [已移除本地路径]
  • [已移除本地路径]
  • [已移除本地路径]
  • [已移除本地路径]
  • [已移除本地路径]
  • [已移除本地路径]
  • [已移除本地路径]

Tests

  • [已移除本地路径]
  • [已移除本地路径]
  • [已移除本地路径]
  • [已移除本地路径]
  • [已移除本地路径]
  • [已移除本地路径]

References

  • [已移除本地路径]
  • [已移除本地路径]
  • [已移除本地路径]
  • [已移除本地路径]
  • [已移除本地路径]
  • [已移除本地路径]

主记录

  • [已移除本地路径]
  • [已移除本地路径]

最终建议

到这里应正式收口。

后续只有在真实业务场景需要时,再按下面方式使用:

真实事件适配器
→ observation JSON
→ Decision Layer Lite
→ HTML / Feishu / wiki 人工决策入口

不要再继续往 Spice runtime / bridge / memory 主线集成。当前最优状态是:

吸能力,不吸整套系统。