Feature: SessionStart 注入 active Rules 约束摘要(rules digest at session start)
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
- Ambito
- ai, backend-api-design
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
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di volcengine/OpenViking
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
volcengine/OpenViking#7485 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 80/100
volcengine/OpenViking#7210 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
volcengine/OpenViking#7205 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: Retrieval rerank fallback statistics stay zero after provider failureForse già presa @97Three l’ha presa 8 giorni fa. Apertabug kernel
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
volcengine/OpenViking#7014 ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: memory.prefetch_search_topn is inert above 5 (call site omits limit), plus two docstrings state the wrong defaultsForse già presa @peterzhang987723 l’ha presa 8 giorni fa. Apertakernel
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
volcengine/OpenViking#6923 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di volcengine/OpenViking
Issue simili
-
fuzz fuzz-unconfirmed
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Switch to ruffAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
Qiskit/qiskit-aer#2533 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
etesync/etesync-dav#376 ·