Feature: SessionStart 注入 active Rules 约束摘要(rules digest at session start)

Aperta
#7,339 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
48/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
python

Direzione di ricerca

Start by reading the agent-hook-plugin SessionStart implementation and the code that reads rule files under memories/rules. Check how profile injection enforces sessionStartMaxBytes and how rule frontmatter is parsed; include only rules with status: active. Done means the digest is added within the shared byte limit with the requested fallback levels, and archived rules are excluded.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

背景

v0.5.4 把 rule_search 注册为 MCP 工具后(此前社区反馈的"规则查询入口"),Agent 侧"能不能查规则"已经解决。但我们在真实任务中多轮实测发现:工具在册、描述可见,主会话在产出导向的执行路径下仍然不会主动调用——规则作为用户立的硬约束,靠"模型自觉检索"并不可靠。我们的实测结论是:规矩系统要可靠,触发必须走注入;规则内容可以继续留在服务端。

建议

在 agent-hook-plugin 的 SessionStart 注入里,原生支持追加 active Rules 的约束摘要,每条规则一行:

<ov-rules uri="viking://user/<space>/memories/rules">
- [atomic_id] 约束内容(适用:applies_when)(例外:exception)
</ov-rules>

实现要点:

  • 数据直接读 memories/rules 下各规则文件的 frontmatter(schema: openviking.rule/v1,含 status / content / applies_when / exception),只收 status: active——归档规则的文件仍留在盘上(语义检索不返回它们,但文件级遍历会碰到,必须自行过滤);
  • 与现有画像注入共享 sessionStartMaxBytes 字节上限(ZCode 会整体丢弃超大钩子输出,画像绝不能被挤掉),预算不足时按「全文 → 仅约束行 → 计数桩 + rule_search 指引」三级降级;
  • 建议加配置开关(如 rulesDigest + rulesDigestTokenBudget);
  • 可选二期:UserPromptSubmit 按任务语境检索命中规则做每轮提醒。我们实测 22 条规则的规模下 SessionStart 单层已足够(全量摘要约 6-7KB),规则库明显变大后二期才有价值。

本机验证

我们已在 ZCode 集成 0.5.31 上按上述方案做了本地实现(新增 rules-digest.mjs + hook.mjs sessionStart 追加段):22 条 active 规则全量注入、归档规则正确排除、画像/记忆清单/技能清单零挤压,总注入 18.6KB(低于 20KB 自限),耗时约 1.5 秒。效果:会话开始即"看得见全部规矩",不再依赖模型主动检索;子代理场景则配合宿主把 AGENTS.md 注入子代理上下文的机制,走 rule_search 自查兜底。

希望官方评估将该能力内置到插件(或服务端 session-start/profile 组装逻辑),让所有宿主受益。如果官方已有 Rules 注入的规划或更优形态,请告知——我们的本地补丁随时可以退役换官方版。

Lingua principale
Python
Stelle
41.8k
Fork
3.4k
Merge medio
19h 29m
PR unite (30g)
500

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di volcengine/OpenViking

Tutte le issue di volcengine/OpenViking

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.