lmzhen/dsh-evolution--packages-evolution-review ↗★ 1
@deepseek-ai/dsh-evolution-review
提供后台审查子代理的编排服务
AI 分析
在对话结束时自动触发记忆和技能审查,适合需要自动化审查的系统。
安裝
此插件尚未提供可驗證的 bundle,或相容性檢查未通過。請先閱讀倉庫說明。 閱讀完整 README ↗
說明文件
閱讀完整 README ↗Configuration
reviewProvider selects the LLM provider for review subagents. When omitted, the subagent inherits the deployment default route instead of a hardcoded provider name. Model selection stays on the policy (memoryReviewModel / skillReviewModel).
reviewTimeoutMs bounds each review subagent run (an AbortSignal.timeout; 0 aborts immediately). The former executionTimeoutMs declaration was removed in v14 (nothing read it, so it was configuration that did nothing); use reviewTimeoutMs.
Review delivery contract (0.3.38-0.3.42)
- Both channels execute at conversation end only (a
turn/endwithreason.kind === 'completed'): a cadence threshold fire mid-task merely latches the kind — no subagent spawn, no inject. The flush runs BEFORE the latch block (the completing turn may itself be a threshold-firing turn).reviewMode('subagent'default /'inject') selects how the flush delivers; the explicit'inject'mode's historical "immediate on threshold" contract was superseded in 0.3.39 — both modes are end-of-conversation. skillReviewTrigger(default'cadence'): the cadence channel is always on (one end-of-conversation review from the cadence latch per task segment); the flag gates only the completion channel —'cadence'disables it,'completion'enables it (cadence still fires),'both'enables it on top of the always-on cadence. At one boundary a turn is served by exactly one review: the cadence flush runs first and returns, so'both'never double-sends a second task-complete prompt at the same boundary (V10-13).reviewWakeInject(defaulttrue): deliveries useagent.followup(next-turn + wake — the model starts processing immediately) instead of the non-wakingagent.inject(which waits for the next driver wake). The host falls back toinjectwhen it has no followup or the option isfalse. The woken turn's own cadence fire is suppressed once (an injected review prompt alone must not re-trigger a review underinterval=1); a restart clears the queue, so the loop cannot survive it.- Counting window = injection-to-injection: the
turnsSinceMemory/turnsSinceSkillcounters are monotonic across threshold fires (resetOnFire: false) and are zeroed at the flush delivery — a continued conversation starts a fresh segment from the injection. A threshold fire on the completing turn is caught by the flush (pendingKind = latch ?? kind). All deliveries (review prompt AND result notices) share the same waking channel; a failed counter-reset persist warns once per session (a stateful reload may re-deliver).