feat: AI 目标设备必选 + 设备任务占用锁——①前端新增「🎯 目标设备」选择器(在线设备含型号,任务运行中的设备禁选),发送必须选定设备,AI 只操作你指定的设备;②/api/agent/run 校验:serial 不在池/离线/任务 running-connecting → 拒绝(409 提示任务名);③MCP 11 个写工具加 busy 锁(_ensure_device_free,5s 缓存):任务运行中的设备 AI 一律拒绝,AI 不与任务抢设备(外部 MCP 客户端同样受保护);④运行状态端点 GET /api/agent/run + 前端 8s 轮询:多人/多窗口能看到运行中任务(发起时间/任务/设备)并可停止(stop 加确认);未选设备直接 400 引导请选择设备,去掉模型自己乱挑设备的行为
This commit is contained in:
@@ -467,7 +467,6 @@ body{background:var(--bg);font-family:var(--body);color:var(--text);font-size:14
|
||||
<div class="agent-title">🤖 AI 控制台<span id="agent-model-tag" class="agent-model-tag"></span></div>
|
||||
<div class="agent-top-actions">
|
||||
<span id="agent-running-tag" class="agent-running-tag" style="display:none">● 运行中</span>
|
||||
<button class="btn btn-xs btn-danger" id="btn-agent-stop" style="display:none" onclick="stopAgent()">■ 停止</button>
|
||||
<button class="btn btn-xs" onclick="newAgentSession()" title="清空当前对话并开启新会话">+ 新建会话</button>
|
||||
<button class="btn btn-xs" onclick="openExpLib()" title="查看/管理自进化经验库(每日 AI 巡检建议,删除需确认)">🧠 经验库</button>
|
||||
<button class="btn btn-xs" onclick="openAgentConfig()">⚙ 配置</button>
|
||||
@@ -487,10 +486,22 @@ body{background:var(--bg);font-family:var(--body);color:var(--text);font-size:14
|
||||
onchange="watchDevice(this.value)"><option value="">选择设备观看…</option></select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="agent-inputbar">
|
||||
<textarea id="agent-input" rows="2"
|
||||
placeholder="给 AI 下达指令,例如:打开抖音搜索奚学东,把第一个视频标题告诉我…(Enter 发送,Shift+Enter 换行)"></textarea>
|
||||
<button class="btn btn-primary" id="btn-agent-send" onclick="sendAgentMsg()">发送</button>
|
||||
<div class="agent-inputbar" style="align-items:flex-end;flex-direction:column">
|
||||
<div style="display:flex;width:100%;gap:8px;align-items:center;margin-bottom:8px">
|
||||
<label style="font-size:12.5px;color:#374151;font-weight:600;white-space:nowrap">🎯 目标设备</label>
|
||||
<select id="agent-target-select" class="form-control" style="width:320px;font-family:monospace"
|
||||
title="AI 只操作你选定的设备;有任务运行中的设备不可选">
|
||||
<option value="">请选择设备(AI 只操作选定设备)…</option>
|
||||
</select>
|
||||
<span class="text-muted" id="agent-target-hint" style="font-size:11.5px"></span>
|
||||
<span style="flex:1"></span>
|
||||
<button class="btn btn-xs btn-danger" id="btn-agent-stop" style="display:none" onclick="stopAgent()">■ 停止</button>
|
||||
</div>
|
||||
<div style="display:flex;width:100%;gap:10px">
|
||||
<textarea id="agent-input" rows="2"
|
||||
placeholder="给 AI 下达指令,例如:打开抖音搜索奚学东,把第一个视频标题告诉我…(Enter 发送,Shift+Enter 换行)"></textarea>
|
||||
<button class="btn btn-primary" id="btn-agent-send" onclick="sendAgentMsg()">发送</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user