UI Enhancements
dsh-client-plugin-approve-for-me
zhuruoling/dsh-client-plugin-approve-for-me · ★ 0
Automated model review is imperfect. Treat its output as advisory, and always make the final decision based on actual risk and authorization scope.
README body is shown in Chinese.
安装
dsh plugin --profile web add github:zhuruoling/dsh-client-plugin-approve-for-meGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
For install and environment setup, plus plugin development tutorials, see DSH community docs ↗
README
Table of contents
[!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 消息注入会话流(模型可见)。