feat: screensue 默认 5s 超时,agent 可指定时长或永不超时

- GUI main.js: screensue 默认 duration 从 0(常驻) 改为 5 秒自动关闭
- 命令带数字 token 指定时长: "screensue 30 内容"=显示30秒
- 命令带 0 表示永不超时: "screensue 0 重要公告"=常驻直到用户手动关闭
- gui-prefs.screensueDuration 用户配置默认值(未配置时 5),命令参数优先级最高
- 设置页(app.js)新增「默认时长(秒)」输入框(placeholder 提示 0=常驻)
- 回执文案区分 for Ns / persistent until closed
- 服务端 device_ctl_cmdrun 工具描述同步更新(5秒默认/指定秒数/0永不超时)
This commit is contained in:
JianFeeeee
2026-08-21 12:10:28 +08:00
parent 0380bd642a
commit 4dc1f4b40f
3 changed files with 32 additions and 10 deletions

View File

@ -4992,6 +4992,13 @@ function renderDevices() {
'</label><select id="dev-bridge-display" style="font-size:13px;padding:3px 6px;border-radius:4px;border:1px solid var(--border-color);background:var(--bg-input);color:var(--text-primary)">' +
(dispOpts || '<option value="0">默认</option>') +
"</select>" +
"<label style='font-size:13px;margin-left:8px'>" +
__("默认时长(秒)", "default duration(s)") +
'</label><input id="dev-bridge-duration" value="' +
escHtml(dbc.screensueDuration === undefined || dbc.screensueDuration === null ? "5" : String(dbc.screensueDuration)) +
'" placeholder="5,0=常驻" title="' +
__("screensue 默认显示秒数;0=永不超时常驻。命令带数字可临时覆盖", "screensue default seconds; 0=persistent. Command number overrides") +
'" style="width:70px;font-size:13px;padding:3px 6px;border-radius:4px;border:1px solid var(--border-color);background:var(--bg-input);color:var(--text-primary)">' +
"</div>" +
'<div style="display:flex;gap:6px;align-items:center;flex-wrap:wrap">' +
"<label style='font-size:13px'>" +
@ -5138,9 +5145,14 @@ async function saveBridgeChannel() {
}
var cfg = { enabled: true, gateway: gw };
if (tok) cfg.token = tok;
// 能力配置:screensue 屏幕 / cmdrun 目录 / 沙箱
// 能力配置:screensue 屏幕/时长 / cmdrun 目录 / 沙箱
var disp = document.getElementById("dev-bridge-display");
if (disp) cfg.screensueDisplay = disp.value || "0";
var dur = document.getElementById("dev-bridge-duration");
if (dur) {
var dv = parseInt(dur.value, 10);
cfg.screensueDuration = Number.isFinite(dv) && dv >= 0 ? String(dv) : "5";
}
var cwd = document.getElementById("dev-bridge-cwd");
var sandbox = document.getElementById("dev-bridge-sandbox");
var boxdir = document.getElementById("dev-bridge-boxdir");