QWENPAW MIDDLEWARE · 01/12

dispatch-guard

把派发约束从提示词移到工具层。

ENFORCEMENT AT THE TOOL SEAM, NOT THE PROMPT

lang Pythonver v0.1.11license MIT
SCROLL
TOOL SEAMOUTPUT ROUTINGDISPATCH TABLEZERO DEPTOOL SEAMOUTPUT ROUTINGDISPATCH TABLEZERO DEP
SEC.01

$做什么

QwenPaw 中间件插件。多 agent 宿主里的默认 agent 常常自己动手写交付物,提示词中的派单规则压不住它。dispatch-guard 在工具缝拦截交付物形状的写入并拒绝,拒绝消息里写明该派给哪个 agent。实现为纯标准库,无 pip 依赖。

SEC.02

$快速开始

~/quickstart.sh
SEC.03

$架构

orchestrator ──► write_file(deliverable.md)
        │
        ▼
dispatch-guard · 交付物形状? YES ── 归属专家存在? YES
        │
        ▼
DENIED · 写入从未落盘 · 回复:「派给 @Specialist-Agent」
SEC.04

$要点

F01
⛔

工具缝拦截

write 调用被中间件拦下:命中交付物形状且环境中存在归属专家 agent 时拒绝写入,返回派单提示。无归属者不拦。

F02
🛡️

spawn 兜底

spawn_subagent 与 spawn_agent 在 enforce、warn、unconfigured 三种模式下都拒绝,作为配置层禁用之外的兜底。

F03
🐚

shell 计入写入

重定向、tee、dd of=、curl -o、打包与编译器 -o、sed -i、cp/mv 目标都计为一次写。默认只警告,开 shell_enforce 才拦截。

F04
🔍

路由表热加载

routes.json 按 mtime 热加载,并自审矛盾规则、死规则、未知 mode。无配置时从各 agent 声明的派发策略草拟 warn 模式的 routes.draft.json,改名后生效。

F05
⚖️

可选语义仲裁

jev 层默认关,只补确定性规则判不出的两处:草拟路由的 P0 与关键词路由指不到在册 owner 的 P1。p ≥ 0.85 才在 enforce 下 deny 并点名 owner,0.6 到 0.85 转 warn。

F06
🧾

审计日志脱敏

每次拦截追加进 logs/dispatch_guard.jsonl,超 1 MB 滚动。spawn 入参只记 sha256 前 16 位、长度与脱敏摘要,原始命令不进日志。

SEC.05

$路线与限制

← PREV · 12
raspberry-pi