Hermes Decision Trace

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

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

HTML完整论证
Wiki可检索归档
Feishu短入口交付
🎯
核心结论

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

🧭
推荐路径

到这里应正式收口。

🛡️
关键边界

不调用真实 executor;生产动作另走审批。

关键判断

判断项摘要
推荐方案到这里应正式收口。
关键依据Spice JSON 直发验证页:
落地方式按行动清单推进,保持可回退。
风险边界不跨执行边界;真实执行需另走审批。

证据摘要

  • Spice JSON 直发验证页:证据点 1
  • <https://decision.ht1072.top/2026-05-28-spice-json-direct-publish-check.html>证据点 2
  • 该页验证了:证据点 3
  • Spice Decision JSON 可直接进入 Hermes Decision Trace证据点 4
  • 页面样式已统一证据点 5
  • 摘要层不再泄漏 Markdown 表格 / JSON / code fence证据点 6
  • 执行边界显示为不调用真实 executor证据点 7

行动清单

到这里应正式收口。
后续只有在真实业务场景需要时,再按下面方式使用:
不要再继续往 Spice runtime / bridge / memory 主线集成。当前最优状态是:

边界 / 风险

风险点

未记录额外风险。

完整记录

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 落点状态
1Spice Decision JSON → Decision Tracedecision_trace_publish.py --spice-decision-json已完成
2Executor Outcome Contractdecision_executor_outcome_validate.py已完成
3Observation Schema Contractdecision_observation_validate.py已完成
4Decision Context Projectiondecision_context_project.py已完成
5Decision Card Builder from Contextdecision_card_build_from_context.py已完成
6Draft-to-Trace Adapterdecision_card_draft_to_trace_md.py已完成
7Decision Layer Lite Runbookskill 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: /home/ht/llm-wikis/decision-traces/html/2026-05-28-decision-layer-lite-e2e-smoke.html
  • Wiki: /home/ht/llm-wikis/decision-traces/2026-05/2026-05-28-decision-layer-lite-e2e-smoke.md
  • Public path: /home/ht/llm-wikis/decision-traces/public/2026-05-28-decision-layer-lite-e2e-smoke.html

已发布验证页

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

  • /home/ht/.hermes/scripts/decision_observation_validate.py
  • /home/ht/.hermes/scripts/decision_context_project.py
  • /home/ht/.hermes/scripts/decision_card_build_from_context.py
  • /home/ht/.hermes/scripts/decision_card_draft_to_trace_md.py
  • /home/ht/.hermes/scripts/decision_executor_outcome_validate.py
  • /home/ht/.hermes/scripts/spice_decision_to_hermes_trace_md.py
  • /home/ht/.hermes/scripts/decision_trace_publish.py

Tests

  • /home/ht/.hermes/hermes-agent/tests/test_decision_card_draft_to_trace_md.py
  • /home/ht/.hermes/hermes-agent/tests/test_decision_card_build_from_context.py
  • /home/ht/.hermes/hermes-agent/tests/test_decision_context_project.py
  • /home/ht/.hermes/hermes-agent/tests/test_decision_observation_validate.py
  • /home/ht/.hermes/hermes-agent/tests/test_decision_executor_outcome_validate.py
  • /home/ht/.hermes/hermes-agent/tests/test_decision_trace_scripts.py

References

  • /home/ht/.hermes/skills/productivity/decision-trace-reply-pattern/references/spice-decision-json-input-mode-2026-05-28.md
  • /home/ht/.hermes/skills/productivity/decision-trace-reply-pattern/references/executor-outcome-contract-2026-05-28.md
  • /home/ht/.hermes/skills/productivity/decision-trace-reply-pattern/references/observation-schema-contract-2026-05-28.md
  • /home/ht/.hermes/skills/productivity/decision-trace-reply-pattern/references/decision-context-projection-2026-05-28.md
  • /home/ht/.hermes/skills/productivity/decision-trace-reply-pattern/references/decision-card-builder-from-context-2026-05-28.md
  • /home/ht/.hermes/skills/productivity/decision-trace-reply-pattern/references/decision-layer-lite-runbook-2026-05-28.md

主记录

  • /home/ht/llm-wikis/knowledge-ops/queries/spice-absorption-evaluation-2026-05-28.md
  • /home/ht/llm-wikis/knowledge-ops/queries/spice-decision-layer-lite-absorption-final-report-2026-05-28.md

最终建议

到这里应正式收口。

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

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

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

吸能力,不吸整套系统。