UI Enhancements

dsh-client-plugin-approve-for-me

zhuruoling/dsh-client-plugin-approve-for-me · ★ 0

zhuruoling

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.

License
MIT
Added
2026-08-23
Maintenance
active
Install kind
github

No manifest check is available; listing does not imply compatibility or security review.

安装

dsh plugin --profile web add github:zhuruoling/dsh-client-plugin-approve-for-me

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: zh · Read Chinese README

Table of contents
  1. 工作原理
  2. 声明方式(DSH client 插件约定)
  3. 安装到测试 profile
  4. 说明

[!WARNING] 自动审查模型并非完美。请将其输出视为辅助信息,并始终根据实际风险和授权范围作出最终决定。

DSH 前端(浏览器)插件:为 dsh-plugin-approve-for-me 的 review 模式提供 codex 风格的实时审查状态行——审查进行中显示流光(shimmer)的 “● 正在审查权限请求: …”, 审查完成显示 “✔ 已批准 / ✖ 已拒绝 的权限升级”及审查模型的一句意见。每个状态都锚定在会话流中的审批请求处, 重开会话后仍会显示最终裁决和意见。

工作原理

  • host 半部(lib/index.js):注册一个会话投影 approvalStatus(sessionProjections),折叠审批审计事件:
    • approval/asked(审批请求进入 answerer 链时,审查模式即审查开始)→ pending
    • approval/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-status Conversation Node, 再在 conversation.chat.node 槽位注册同名 renderer:
    • 未结算 → 与 Pwsh tool call 同一行级结构的流光摘要(1.8s 扫光)
    • 已结算 → 会话流中的持久裁决行;裁决和审查意见以 裁决 · 原文意见 同行展示,终端图标、字号和间距与 tool call 一致,批准使用普通摘要色,拒绝使用 Material 3 error 的 #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 消息注入会话流(模型可见)。