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 主线集成。当前最优状态是:
吸能力,不吸整套系统。