agent-Specialization/.playwright-mcp/page-2026-04-27T12-35-10-404Z.yml
JOJO e2bbd767f7 feat(host-security+ui): unify host execution/approval behavior, runtime notices, and approval overlay UX
This commit consolidates a large set of host-mode security and UX fixes across backend and frontend.

Security / execution model:
- Make permission/execution mode switches apply immediately (no deferred pending-only behavior).
- Keep runtime mode change notices durable and visible via user-message guidance path.
- Add explicit runtime message source taxonomy support and persistence:
  user / presend / guidance / notify / sub_agent / background_command.
- Ensure guidance/notify insertion is batched per tool-cycle so mid-run inserts are committed together.
- Separate notify from guidance semantics for mode-change notices.
- Add direct-mode auto-fallback handling visibility on frontend.

Approval and command gating:
- Align run_command approval pre-check logic with docker behavior for approval/auto_approval modes in host execution paths.
- Keep approval retry flow and final-result semantics intact when permission errors trigger approval.
- Externalize forbidden command keyword list into JSON config:
  config/forbidden_commands.json.
- Update forbidden command rejection message to user-facing wording:
  用户不允许执行包含“... ”的指令.

Prompt/runtime guidance:
- Refine execution-mode runtime rule text to avoid endless workaround loops:
  one safe alternative first, then request switching to direct mode when truly required.

Chat rendering / message UX:
- Prevent injected guidance/notify user-messages from incorrectly triggering assistant work header/timer chain.
- Restore correct visibility after history reload while preserving runtime-source behavior.
- Update user-header icon/label rendering by message source:
  - guidance -> 引导 + navigation icon
  - notify/sub_agent/background_command -> 通知 + bell icon
  - user/presend -> keep normal user header.
- Add new icons: static/icons/navigation.svg, static/icons/bell.svg.

Approval panel UX:
- Convert desktop approval panel from layout-compress sidebar to overlay + blur sheet.
- Fix panel transition behavior (remove unintended vertical motion; use dedicated desktop overlay transition).
- Improve approval result display:
  - decision and reason split lines,
  - green/red status styling,
  - multiline reason rendering,
  - auto-collapse delay adjusted to 3s.

Execution mode TTL feedback:
- When direct mode auto-expires to sandbox, frontend menu state is updated from status snapshot.
- Show non-auto-dismiss warning toast to explicitly notify auto-fallback.

Misc consistency updates:
- Execution mode label text cleanup in composer.
- Runtime notice wording normalization (权限模式修改为..., 执行环境修改为...).

Build/test notes:
- Frontend rebuilt after UI changes.
- Smoke tests passed for server refactor path.
2026-05-12 19:16:38 +08:00

237 lines
14 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

- generic [active] [ref=e1]:
- button "开启读屏标签" [ref=e2]
- generic: 读屏标签已关闭
- generic [ref=e4]:
- generic [ref=e6]:
- link [ref=e7] [cursor=pointer]:
- /url: //www.douyin.com/jingxuan
- generic [ref=e13]:
- generic [ref=e15]:
- link "精选" [ref=e19] [cursor=pointer]:
- /url: https://www.douyin.com/jingxuan?from_nav=1
- generic [ref=e22]: 精选
- link "推荐" [ref=e26] [cursor=pointer]:
- /url: https://www.douyin.com/?recommend=1&from_nav=1
- generic [ref=e29]: 推荐
- link "搜索" [ref=e33] [cursor=pointer]:
- /url: https://www.douyin.com/aisearch?from_nav=1
- generic [ref=e36]: 搜索
- link "关注" [ref=e40] [cursor=pointer]:
- /url: https://www.douyin.com/follow?from_nav=1
- generic [ref=e43]: 关注
- link "朋友" [ref=e48] [cursor=pointer]:
- /url: https://www.douyin.com/friend?from_nav=1
- generic [ref=e51]: 朋友
- link "我的" [ref=e55] [cursor=pointer]:
- /url: https://www.douyin.com/user/self?from_nav=1
- generic [ref=e58]: 我的
- link "直播" [ref=e63] [cursor=pointer]:
- /url: https://live.douyin.com/?from_nav=1
- generic [ref=e66]: 直播
- link "放映厅" [ref=e70] [cursor=pointer]:
- /url: https://www.douyin.com/vs?from_nav=1
- generic [ref=e73]: 放映厅
- link "短剧" [ref=e77] [cursor=pointer]:
- /url: https://www.douyin.com/series?from_nav=1
- generic [ref=e80]: 短剧
- generic [ref=e82]:
- img [ref=e85] [cursor=pointer]
- img [ref=e89] [cursor=pointer]
- img [ref=e93] [cursor=pointer]
- generic [ref=e95]:
- banner [ref=e98]:
- generic [ref=e100]:
- generic [ref=e104]:
- textbox "搜索你感兴趣的内容" [ref=e106]
- button "搜索" [ref=e108] [cursor=pointer]:
- img [ref=e109]
- generic [ref=e111]: 搜索
- generic [ref=e115]:
- generic [ref=e117] [cursor=pointer]:
- img [ref=e119]:
- img [ref=e120]
- paragraph [ref=e122]: 充钻石
- link "客户端" [ref=e127] [cursor=pointer]:
- /url: ""
- generic [ref=e129]:
- img [ref=e131]:
- img [ref=e132]
- paragraph [ref=e135]: 客户端
- generic [ref=e137] [cursor=pointer]:
- img [ref=e139]:
- img [ref=e140]
- paragraph [ref=e142]: 壁纸
- list [ref=e143]:
- generic [ref=e146] [cursor=pointer]:
- img [ref=e148]:
- img [ref=e149]
- paragraph [ref=e152]: 通知
- generic [ref=e156] [cursor=pointer]:
- img [ref=e158]:
- img [ref=e159]
- paragraph [ref=e161]: 投稿
- link [ref=e164] [cursor=pointer]:
- /url: //www.douyin.com/user/self
- listitem [ref=e165]
- generic [ref=e167]:
- generic [ref=e169]:
- generic [ref=e171]:
- listitem [ref=e173] [cursor=pointer]:
- img "林柒.头像" [ref=e174]
- generic [ref=e175]:
- heading "林柒." [level=1] [ref=e177]:
- generic [ref=e183]: 林柒.
- generic [ref=e184]:
- generic [ref=e185] [cursor=pointer]:
- generic [ref=e186]: 关注
- generic [ref=e187]: "193"
- generic [ref=e188] [cursor=pointer]:
- generic [ref=e189]: 粉丝
- generic [ref=e190]: "66"
- generic [ref=e191]:
- generic [ref=e192]: 获赞
- generic [ref=e193]: "36"
- paragraph [ref=e194]:
- generic [ref=e195]: 抖音号linqi07.
- generic [ref=e196]: IP属地北京
- generic [ref=e197]:
- img [ref=e198]
- generic [ref=e200]: 21岁
- generic [ref=e201]: 北京·海淀
- generic [ref=e202]:
- generic [ref=e203]:
- button [ref=e205] [cursor=pointer]:
- img [ref=e207]
- button "分享主页" [ref=e209] [cursor=pointer]:
- generic [ref=e211]: 分享主页
- generic [ref=e212]:
- button "私信" [ref=e213] [cursor=pointer]:
- generic [ref=e214]: 私信
- button "相互关注" [ref=e215] [cursor=pointer]:
- generic [ref=e216]: 相互关注
- generic [ref=e219]:
- generic [ref=e220]: 下载电脑客户端,桌面快捷访问
- link "下载" [ref=e221] [cursor=pointer]:
- /url: https://www.douyin.com/download/pc/obj/douyin-pc-web/douyin-pc-client/7044145585217083655/releases/344418764/7.7.0/darwin-universal/douyin-v7.7.0-darwin-universal.dmg
- img [ref=e222]
- generic [ref=e224]: 下载
- generic [ref=e227]:
- generic [ref=e231]:
- tablist [ref=e232]:
- tab "作品 0" [selected] [ref=e233]:
- heading "作品 0" [level=2] [ref=e235] [cursor=pointer]:
- generic [ref=e236]: 作品
- generic [ref=e237]: "0"
- tab "推荐" [ref=e238] [cursor=pointer]:
- generic [ref=e240]: 推荐
- tab "喜欢 4.3万" [ref=e241] [cursor=pointer]:
- generic [ref=e242]:
- generic [ref=e243]: 喜欢
- generic [ref=e244]: 4.3万
- generic:
- tabpanel "作品 0"
- generic [ref=e246]:
- generic [ref=e249]:
- generic [ref=e250]:
- tablist [ref=e251]:
- tab "作品" [selected] [ref=e252]:
- generic [ref=e254]: 作品
- tab "合集" [ref=e255] [cursor=pointer]:
- generic [ref=e257]: 合集
- tab "短剧" [ref=e258] [cursor=pointer]:
- generic [ref=e260]: 短剧
- generic:
- tabpanel "作品"
- generic [ref=e261]:
- generic [ref=e262]:
- generic [ref=e263]:
- img [ref=e264] [cursor=pointer]
- generic [ref=e266]: 搜索 Ta 的作品
- textbox "搜索 Ta 的作品" [ref=e268]
- generic [ref=e270] [cursor=pointer]:
- img [ref=e271]:
- img [ref=e272]
- generic [ref=e274]: 日期筛选
- img [ref=e275]
- generic [ref=e277]:
- list
- generic [ref=e279]:
- img [ref=e280]:
- img [ref=e281]
- paragraph [ref=e283]: 暂无内容
- paragraph [ref=e284]: 该账号还未发布过作品哦~
- contentinfo [ref=e285]:
- generic [ref=e286]:
- generic [ref=e287]:
- link "广告投放" [ref=e289] [cursor=pointer]:
- /url: https://www.oceanengine.com/resource/douyin
- link "用户服务协议" [ref=e291] [cursor=pointer]:
- /url: https://www.douyin.com/agreements/?id=6773906068725565448
- link "隐私政策" [ref=e293] [cursor=pointer]:
- /url: https://www.douyin.com/agreements/?id=6773901168964798477
- link "账号找回" [ref=e295] [cursor=pointer]:
- /url: https://www.douyin.com/recovery_account/
- link "联系我们" [ref=e297] [cursor=pointer]:
- /url: https://www.douyin.com/aboutus/
- link "加入我们" [ref=e299] [cursor=pointer]:
- /url: https://www.douyin.com/aboutus/
- link "营业执照" [ref=e301] [cursor=pointer]:
- /url: https://www.douyin.com/business_license/
- link "友情链接" [ref=e303] [cursor=pointer]:
- /url: https://www.douyin.com/friend_links
- link "站点地图" [ref=e305] [cursor=pointer]:
- /url: https://www.douyin.com/htmlmap/hotauthor_0_1
- link "下载抖音" [ref=e307] [cursor=pointer]:
- /url: https://www.douyin.com/downloadpage/pc
- link "抖音电商" [ref=e309] [cursor=pointer]:
- /url: https://mix.jinritemai.com/falcon/mix_page/index.html
- generic [ref=e310]:
- link "网络谣言曝光台 " [ref=e312] [cursor=pointer]:
- /url: https://www.piyao.org.cn/yybgt/index.htm
- link "网上有害信息举报" [ref=e314] [cursor=pointer]:
- /url: https://www.12377.cn/
- generic [ref=e315]: 违法和不良信息举报400-140-2108 算法推荐专项举报sfjubao@bytedance.com 网络内容从业人员违法违规行为举报feedback@douyin.com | 体育饭圈专项举报tyfq@bytedance.com
- generic [ref=e316]:
- link "京ICP备16016397号-3" [ref=e318] [cursor=pointer]:
- /url: https://beian.miit.gov.cn/
- link " 广播电视节目制作经营许可证" [ref=e320] [cursor=pointer]:
- /url: https://lf3-static.bytednsdoc.com/obj/eden-cn/ild_jw_upfbvk_lm/ljhwZthlaukjlkulzlp/license/jiemuzhizuojingying.jpg
- link " 京B2-20170846" [ref=e322] [cursor=pointer]:
- /url: https://lf3-static.bytednsdoc.com/obj/eden-cn/ild_jw_upfbvk_lm/ljhwZthlaukjlkulzlp/license/zengzhixuke.jpg
- link " 网络文化许可证-京网文-20250181-061号 " [ref=e324] [cursor=pointer]:
- /url: https://lf-douyin-pc-web.douyinstatic.com/obj/douyin-pc-web/20250519-201253.jpeg
- generic [ref=e325]:
- img "icon" [ref=e326]
- link "京公网安备 11000002002046号" [ref=e327] [cursor=pointer]:
- /url: http://www.beian.gov.cn/portal/registerSystemInfo
- generic [ref=e328]: 互联网宗教信息服务许可证 京20250000017
- generic [ref=e329]:
- generic [ref=e331]: 热门:
- link "游戏攻略" [ref=e333] [cursor=pointer]:
- /url: https://www.douyin.com/jingxuan/game
- link "抖音游戏" [ref=e335] [cursor=pointer]:
- /url: https://www.douyin.com/jingxuan/game
- link "酒的中国地理" [ref=e337] [cursor=pointer]:
- /url: https://www.douyin.com/user/MS4wLjABAAAAumFAg8ayNdy7GZxyssX7YJ5jeW0l0pI-3aYTJvrLPLIE0Oct5zump7shU-8z4ilD
- 'link "突破斩杀线!河南城建学院运动会破纪录专访#运动会采访 #破记录 #青春" [ref=e339] [cursor=pointer]':
- /url: https://www.douyin.com/video/7632865102535203188
- link "江西自主命题地理高考" [ref=e341] [cursor=pointer]:
- /url: https://www.douyin.com/topic/7509864178644060170
- link "高三一年300多分能涨到500多分吗" [ref=e343] [cursor=pointer]:
- /url: https://www.douyin.com/shipin/7509894749118203923
- link "少数民族预科班 贵州" [ref=e345] [cursor=pointer]:
- /url: https://www.douyin.com/search/%E5%B0%91%E6%95%B0%E6%B0%91%E6%97%8F%E9%A2%84%E7%A7%91%E7%8F%AD+%E8%B4%B5%E5%B7%9E
- link "当我用雪山救狐演绎推荐美食" [ref=e347] [cursor=pointer]:
- /url: https://www.douyin.com/video/7620640318400056610?source=Baiduspider
- 'link "不会开会的管理者,就是不合格的#职场 #管理者 #企业管理 #老板 #许林芳 @抖音小助手" [ref=e349] [cursor=pointer]':
- /url: https://www.douyin.com/video/7391053938956438819?source=Baiduspider
- 'link "看全文《暴走混蛋》完结版 《暴走混蛋》 #我有反社会人格#暴走安分#我有反社会人格后续#暴走安分后续" [ref=e351] [cursor=pointer]':
- /url: https://www.douyin.com/video/7396915697709780234?source=Baiduspider
- 'link "《纹身趣谈》下 苗阜王声#相声 #相声新势力 #我在抖音看综艺 #抖音小助手" [ref=e353] [cursor=pointer]':
- /url: https://www.douyin.com/video/7486312727959309605?source=Baiduspider-sdc
- 'link "来自巩义的丽娜老师演唱倒霉大叔的婚事选段 #传递戏曲文化 #这段戏太好听了 #真人真唱 #丰富多彩的文化生活 #谁说戏曲不抖音" [ref=e355] [cursor=pointer]':
- /url: https://www.douyin.com/video/7368187249785163042?source=Baiduspider
- 'link "经典老歌发烧女王翻唱《不》DSD完整版 1.17G百万调音师专业录音棚制作顶级hifi无损音乐#经典老歌 #发烧人声 #翻唱 #车载u盘 #车载音乐" [ref=e357] [cursor=pointer]':
- /url: https://www.douyin.com/video/7360156782653689142?source=Baiduspider
- 'link "北京天安门升国旗抢占第一排C位成功#北京升旗 #北京升旗仪式 #北京升旗攻略 #天安门升旗" [ref=e359] [cursor=pointer]':
- /url: https://www.douyin.com/video/7356626755748121896?source=Baiduspider-sdc