dsh-client-plugin-approve-for-me
August 14, 2026 · View on GitHub
Warning
自动审查模型并非完美。请将其输出视为辅助信息,并始终根据实际风险和授权范围作出最终决定。
DSH 前端(浏览器)插件:为 dsh-plugin-approve-for-me 的 review 模式提供
codex 风格的实时审查状态行——审查进行中显示流光(shimmer)的 “● 正在审查权限请求:
工作原理
- host 半部(
lib/index.js):注册一个会话投影approvalStatus(sessionProjections),折叠审批审计事件:approval/asked(审批请求进入 answerer 链时,审查模式即审查开始)→pendingapproval/decided(审批结算)→last: { outcome, toolName }approve-for-me/reviewed(主插件写入的可忽略审计记录)→ 审查模型的 risk、authorization 和 rationale- 这两个事件是 log-only 审计事件,不进模型历史 —— 所以前端可以实时显示审查进度,而不会像
user/message那样破坏tool_calls → tool response协议。
- client 半部(
lib/client.js):window.__ModuleLoader__.load({ id, factory })格式的浏览器插件, 将approval/asked/approve-for-me/reviewed/approval/decided注册为按审批 id 聚合的approval-statusConversation Node, 再在conversation.chat.node槽位注册同名 renderer:- 未结算 → 与
Pwshtool call 同一行级结构的流光摘要(1.8s 扫光) - 已结算 → 会话流中的持久裁决行;裁决和审查意见以
裁决 · 原文意见同行展示,终端图标、字号和间距与 tool call 一致,批准使用普通摘要色,拒绝使用 Material 3error的#BA1A1A
- 未结算 → 与
声明方式(DSH client 插件约定)
exports["./client"]→./lib/client.js(浏览器半部)package.json["dsh"]["client"]→{ "platform": "web", "inject": ["conversationEvents", "slots"] }
安装到测试 profile
# 在 $DSH_HOME/profiles/approve-for-me 下(与主插件同样的 junction 方式)
mklink /J "node_modules\dsh-client-plugin-approve-for-me" "C:\Users\jkl-9\IdeaProjects\dsh-client-plugin-approve-for-me"
cordis.patch.yml 追加:
- insert:
- id: approve-for-me-ui
name: dsh-client-plugin-approve-for-me
重启 dsh 实例 → host 半部加载投影,web boot 图把 client 半部写进 __DSH_BOOT__,浏览器加载后即可看到状态条。
说明
- 状态条对所有审批请求可见(人工弹窗也会显示“正在审查…”),语义上与“审查/审批中”一致;
review模式下 asked→decided 的间隔就是轻量模型审查的窗口。 - 裁决的完整详情(risk / authorization / rationale)仍由主插件以 notice 消息注入会话流(模型可见)。