butubb
|
972db13f81
|
fix: 经验/动作蒸馏不再静默丢弃(关推理 + 质量门槛 + 截断容忍)+ 前端会话显示 ID
问题:蒸馏模型把 token 预算烧在 reasoning 上 → content 为空/被截断(finish_reason=length),
代码只读 content → 经验与动作被静默丢弃("使用小红书找苏州饭店"跑完什么都没存,动作侧日志
'原始输出 0 字符')。
修复(web/agent_api.py):
- 蒸馏调用统一加 "thinking": {"type":"disabled"}(该代理支持;实测关掉后 reasoning=0、
配方 3/3 合格)——关键修复
- 配方:纯文本问法 + _recipe_ok 质量门槛(过短/含省略号占位丢弃,避免把提示词示例当真配方;
曾因提示词里写了占位示例,模型照抄成 "1. …\n2. …" 存进库)+ 空则重试一次;
仅动作提炼允许回退 reasoning_content(配方不回退,防思考草稿污染)
- 动作:JSON 输出 + _loads_lenient 截断容忍(逐对象抢救)+ {action,params} 形状归一 +
输入/产出限量(≤10 步、≤3 动作×4 步);失败日志带样本
- 前端 agent.js:会话列表显示会话 ID 前 8 位(等宽小字),点击复制完整 ID(便于引用 conv=<id>)
- doc/ARCHITECTURE.md:§3.8 序号语义 + §5.4 蒸馏健壮性与会话 ID 说明
实测:真机复跑同一句需求 → 经验已保存(配方 196 字符)+ 动作经验已保存 2 条
|
2026-09-10 15:31:39 +08:00 |
|
butubb
|
3f44cd1491
|
fix: 元素选择器序号语义 + 抓取弹窗直接点击测试
- uiauto_helper: 同属性多实例的选择器由 `//*[@id="x"][k]` 改为 `(//*[@id="x"])[k]`——
前者在 XPath 里是"父节点内排第 k",多实例时 [2..n] 全部失配(实测抖音底部 4 个同 id tab:
仅 [1] 可用),任务里表现为"未找到元素"但界面上元素明明存在。
- tasks/generic/task.py: 新增 _norm_legacy_xpath,执行前把**历史遗留**的
`//*[@attr=…][k]` 窄范围纠正为带括号形式(只改前缀,结构路径 …/FrameLayout[2] 的
兄弟序号保持不动)——已存任务无需重抓即可恢复。
- editor.js: 抓取弹窗每条元素新增「▶ 点一下」(按 bounds 中心真点一次,/api/screen/tap
snap=1 吸附)与「✓ 测选择器」(用将填入的选择器跑 /api/steps/test 验证命中),
点击后自动刷新截图;底部加用法提示。
- doc/TASK_DEV.md:写明 xpath 序号必须整体加括号 + 旧形态自动纠正 + 优先文字/唯一 id。
|
2026-09-10 15:31:33 +08:00 |
|
butubb
|
91b2785c6b
|
feat: 动作库查看/管理(接口 + AI 控制台「🎬 动作库」面板)+ 未沉淀灰卡提示
- 后端:GET /api/agent/actions(列表)、POST /api/agent/actions/delete、
POST /api/agent/actions/save(新增/编辑,steps 走 _sanitize_actions 校验:
type 白名单 + 必填 + **拒绝坐标 click_xy**),均 @admin_required
- 前端:AI 控制台右上角新增「🎬 动作库」按钮与模态框——列出 名称/app/别名/
步骤摘要(含元素定位)/命中次数/更新时间;支持编辑(表单 + steps JSON)、删除、
手动新建;保存失败(如写坐标)即时 toast 原因
- 未沉淀提示:本轮无可沉淀动作时也推送一张 🧠 动作经验 灰卡
「本轮未沉淀动作(步骤以坐标定位为主,缺少可复用的元素定位信息)」
- doc/API.md:登记三个新接口
实测:列表返回自动沉淀的动作;保存合法动作 200;提交 click_xy 步骤被 400 拒绝;
删除生效
|
2026-09-10 13:58:38 +08:00 |
|
butubb
|
357fe98e22
|
fix: AI 控制台 MCP 不可达给出明确文案——不再显示 SDK 含糊报错
MCP 客户端(streamable_http)在工具服务不可达/返回非 MCP 响应时只抛
'Server returned an error response',用户无法判断原因。改为:
- 后端 web/agent_api.py:_execute 包裹 _load_tools/run_stream,识别连接类错误
(Server returned an error response/ConnectError/refused 等)后抛明确文案:
'MCP server(8033) 不可达:无法加载设备工具(<url>)。请确认 MCP server 已启动…'
- 前端 static/admin/agent.js 加 _friendlyAgentError() 兜底映射并去掉
'RuntimeError:' 之类前缀,三处错误展示统一使用
- 文档同步:MCP.md(依赖提示+本机启动命令)、API.md(SSE error 文案说明)、
DEPLOY.md(故障排查新增一行)
实测:停掉 MCP 复现 → 前端显示明确文案;启动 MCP 后 AI 控制台正常完成任务
|
2026-09-10 10:28:57 +08:00 |
|
butubb
|
470c76221e
|
feat: 顶栏新增「系统」栏目——数据备份导出/导入恢复子分栏(仅管理员)
monitor.html:导航 .tabs 追加「系统」(data-perm=admin) + #tab-system 面板,
内含「数据备份 / 导入恢复」两个子分栏;base.js _activeSubs 记忆子分栏并在
showTab 里切回;system.js:导出(含 APK 勾选→zip 下载)、导入(选文件→
校验预览:文件/schema/表行数/告警→确认应用,原生 confirm),全程含
「全量快照含密钥」警告与重启生效提示。
|
2026-09-09 14:49:40 +08:00 |
|
butubb
|
a77635c925
|
feat: AI 控制台历史会话(DeepSeek 式)——①agent_conversation 表:会话持久化(单表 JSON 消息),一轮 run 完成后 user/assistant 自动落库、新会话以首条消息作标题;②会话 API:列表/新建/详情/删除/重命名;③run 绑定 conversation_id:history 从会话加载(多轮上下文延续)、完成写回;④前端三栏布局:左侧会话栏(新建/列表/高亮/悬停删除/轮数时间)+ 聊天 + 实时画面,切换会话即切换上下文,刷新后自动恢复当前会话与消息
|
2026-09-06 15:12:56 +08:00 |
|
butubb
|
9b8ecd63f7
|
fix: AI 控制台切页/刷新不丢——①EventSource onerror 不再误 endRun(断网/后台节流/瞬时抖动都会触发 onerror 而后端任务仍在跑;EventSource 自动重连 + 服务端队列保留积压事件,重连后补发,连接彻底关闭才提示可刷新恢复);②页面刷新恢复:GET /api/agent/run 增加 run_id/answer/error/history,前端 restoreAgentView 渲染历史轮次、running 时自动重订阅事件流、done/error 展示结果——切走再回来任务与对话都在
|
2026-09-06 09:41:02 +08:00 |
|
butubb
|
0f75db289d
|
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 引导请选择设备,去掉模型自己乱挑设备的行为
|
2026-09-06 09:32:11 +08:00 |
|
butubb
|
850d2e2e66
|
feat: 最大执行步骤可配置——AI 控制台 ⚙ 配置弹窗新增「最大执行步骤」输入(1-200,默认 40),存 app_meta(agent_max_steps),Agent 线程运行时覆盖 agent.s.max_steps;此前仅环境变量 AGENT_MAX_STEPS 可改
|
2026-09-06 09:26:53 +08:00 |
|
butubb
|
f7aa71cca4
|
fix: AI 控制台实时画面跟随 AI 所选设备——后端 step 事件 args 原为 str() 的 Python repr(单引号),前端 JSON.parse 失败导致 followSerialFromArgs 从未生效;改为保留对象序列化,前端兼容对象/字符串并修 step 卡片 args 展示(避免 [object Object])
|
2026-09-06 09:21:03 +08:00 |
|
butubb
|
edfd529c59
|
feat: 正式池断联设备自动重连——①扫描线程每轮顺带对断联的网络设备 adb_connect_light(幂等,连上即恢复,无需人工;此前只有启动时预连接一次,断联后不会自己回来);②断联设备不删不进待连接池(pending 语义=未授权新设备),GET discovery 返回 pool_offline(serial/型号/备注);③POST /api/devices/discovery/reconnect 手动立即重连;④发现面板加「设备池断联设备」区块(自动重连中 + 立即重连按钮)
|
2026-09-05 09:58:42 +08:00 |
|
butubb
|
5681989194
|
feat: 经验库每日 AI 巡检 + 管理面板——①experience_audit 表:逐条评审(具体可执行/无过时坐标/非对话续语/配方与序列一致 checklist),keep 直接归档、delete 标 pending 待人工,绝不自动删;人工 kept 后不再重复建议;②web_server 注册每日 03:47 巡检 job(Asia/Shanghai);③API:经验列表(含巡检建议)/确认删除/保留/手动触发巡检;④AI 控制台右上角「🧠 经验库」面板:经验卡片 + 建议徽章与理由 + 删除(confirm)/保留按钮
|
2026-09-04 15:53:08 +08:00 |
|
butubb
|
5145f83f06
|
feat: AI 控制台增强——①de_read_clipboard 剪贴板回读工具;②任务可中断(stop_event 循环检查点 + API stop + 前端■停止按钮);③智能滚动(回看历史不被打断,贴底才跟随);④右侧实时画面(MJPEG 流自动跟随操作设备,可手动选择)
|
2026-09-04 13:32:35 +08:00 |
|
butubb
|
ce4e5464b9
|
feat: AI 控制台会话化 + 视觉优化——①多轮对话连续性(后端 history 持久化 12 轮,Agent 注入历史上下文,DeepSeek 式会话:新建会话才清空);②聊天区改浅色(DeepSeek 风格,图片文字清晰);③截图点击放大查看
|
2026-09-04 13:18:36 +08:00 |
|
butubb
|
e24458a085
|
feat: AI 控制台升级为顶级 Tab——DeepSeek 风格聊天界面(气泡+流式渲染+思考折叠),实时 MCP 步骤卡片(工具/参数/截图缩略),SSE 流式输出(delta/step/done/error 事件),配置模态(模型/Key/设备前端可配);工具页旧子栏移除
|
2026-09-04 13:09:34 +08:00 |
|
butubb
|
fea5a57fc3
|
feat(M2): Web AI 控制台——工具页新增子分栏:模型/Key/设备前端可配置(app_meta 存储,key 打码回显),指令执行 + 步骤流轮询(含截图缩略)+ 回答展示;Agent 加 on_step 回调、后台线程单实例运行
|
2026-09-04 12:54:17 +08:00 |
|
butubb
|
441ff7c7da
|
feat: 设备分组移入工具页(原顶级 tab 删除)——工具页新增「设备分组」子分栏,分组管理入口与其他设备工具聚合
|
2026-09-04 10:15:44 +08:00 |
|
butubb
|
0b6b000b01
|
feat: 剪贴板注入面板只显示在线设备(pool/离线条目无注入意义);adb 终端面板保留全部供重连
|
2026-09-04 10:12:17 +08:00 |
|
butubb
|
22ba9272bd
|
feat: 全站默认只看在线——监控页/大屏/待连接池同步过滤离线设备(可切换查看全部);18051 main 旧实例已停止(STF 已删,旧代码无保留意义)
|
2026-09-01 08:58:21 +08:00 |
|
butubb
|
ac7997176d
|
feat: 设备池默认只看在线——离线旧条目(IP 已变的幽灵设备)默认隐藏,在线优先排序;「只看在线」开关可切换查看全部(含离线/停用)
|
2026-09-01 08:54:06 +08:00 |
|
butubb
|
b9fab1999d
|
fix: 自动发现按钮引号转义语法错误——onclick 内嵌单引号拼接在生成时丢一层转义(Unexpected string 导致整个 tools.js 不执行,设备池/发现全不渲染);改为 dataset 传参彻底绕开嵌套引号
|
2026-08-31 15:38:33 +08:00 |
|
butubb
|
4efe17c1c9
|
feat: 设备自动发现——定时扫描局域网+Tailscale 网段开放 adb 5555 的设备进入待连接池,用户确认后才加入正式设备池(不自动连接);socket 并发探测+adb 短超时验证(state=device 过滤 unauthorized),配置存 app_meta 可前端调整;配套:adb_connect_light 验证短超时、DISABLE_SCHEDULER 回归开关
|
2026-08-30 10:57:07 +08:00 |
|
butubb
|
2a3c748964
|
fix: 工具页剪贴板注入无反应——injectClipboard 函数在阶段3清理时被误删,点击按钮 JS 报错;补全函数(校验→ClipInject 通道 API→逐台结果表+toast 汇总),帮助文案同步更新
|
2026-08-20 10:40:49 +08:00 |
|
butubb
|
27530ff5ac
|
fix: 手动执行不再受运行窗口限制(窗口只约束定时触发)——立即执行按钮在窗口外也可触发任务
|
2026-08-20 08:36:29 +08:00 |
|
butubb
|
a0916ebda2
|
fix: 抓取元素回填垃圾选择器——无属性元素生成 //*[N](匹配任意节点点不到),改为 invalid 标记前端提示不可选;结构路径跳过无 class 层消除 //*[N] 前缀污染;模块拆分遗漏修复(get_all_worker_status/list_installed_apps 致 summary/设备已装应用 500)
|
2026-08-19 15:10:26 +08:00 |
|
butubb
|
265e47a1f4
|
fix: 测试此步骤弹窗全链路修复——closeTestModal 恢复(阶段3误删导致关不掉)、test-overlay 层级 1200(高于编辑器/元素抓取弹窗)、tasks_api 补 _log(后端500)、GenericStepsWorker 旧签名调用修复(测试执行失败)
|
2026-08-19 15:00:27 +08:00 |
|
butubb
|
e07b339a51
|
feat: 大屏增强——一键亮屏按钮、卡片显示设备名+IP+熄屏状态(thumb 响应头 X-Screen-State)、点击卡片进入设备操作弹窗(实时流+触控+按键+文字),工具页远程看屏子分栏移除并入大屏
|
2026-08-19 14:17:33 +08:00 |
|
butubb
|
83ba489f57
|
feat: 前端整体改版(仪表控制台主题:自托管 Bricolage Grotesque+IBM Plex Mono 字体、暖纸底+墨色+深青主色、卡片/表格/徽章/模态框/Toast 全面细化、Tab 切换动画)+ fix: showTab 硬编码 tab 列表移除维护后索引错位、tools 分支调用已删的 loadStfDevMgmt、导航移除失效维护Tab
|
2026-08-19 14:03:02 +08:00 |
|
butubb
|
2d1b10c7f3
|
fix: 全选勾选不显示(renderDevices 签名缺选中状态导致防抖跳过渲染)+ 亮屏/息屏支持勾选设备(未勾选则全部在线,离线自动过滤)
|
2026-08-19 13:57:07 +08:00 |
|
butubb
|
6f6093842c
|
feat: 设备型号采集展示(devices 表 model 列+getprop 采集+管理页型号列/采集按钮+监控页兜底)+ fix: 监控页设备列错位(离线标签残留 td)、appver 端点误删恢复、appver 只查在线设备用轻量连接防挂起
|
2026-08-19 13:53:27 +08:00 |
|
butubb
|
a5ce57b6fd
|
阶段3: 摘除 STF——删除 stf_client/stf_device_mgmt 与全部引用(STF 容器重启/设备管理/强制释放占用/agent 按钮/占用列),调度与设备管理完全基于本地设备池+adb;错误类迁入 device_worker,create_worker 去 stf 参数
|
2026-08-18 08:08:32 +08:00 |
|
butubb
|
98244d8161
|
feat: 设备池管理面板(新增/停用/删除/一键重连,调度数据源规范化入口)+ STF 设备管理增删桥接同步设备池(迁移期)
|
2026-08-18 08:02:13 +08:00 |
|
butubb
|
645938b305
|
阶段2: USB 远程 adb server 打通(220 host 网络 5037 全接口监听,无需改 220)+ 自建远程看屏(MJPEG 流 + u2 触控 tap/swipe/key/text,ws-scrcpy 不在 npm 改自建)
|
2026-08-17 16:50:12 +08:00 |
|
butubb
|
5354fe6379
|
阶段1: 调度/生命周期切换 device_pool——task_manager 设备解析与状态查询、STFDevice 去 occupy/release、web_server 端点换数据源(USB 桥接保留到阶段 2)
|
2026-08-17 11:16:13 +08:00 |
|
butubb
|
c111cb9a5e
|
fix: STF未就绪设备纳入维护终端列表(adb可达但agent启动失败,标记stf_not_ready)+ 卸载/检查agent自动先connect
|
2026-08-17 11:02:43 +08:00 |
|
butubb
|
e48eeef49b
|
feat: 任务抢占+归还(抢占任务结束后自动重启被抢占任务)+ 修复抢占死锁(stop_device 移出锁块)+ wait 步骤可中断 + 循环块新增一直循环模式(配合定时启动+停止实现全天候养号)
|
2026-08-16 08:12:05 +08:00 |
|
butubb
|
a51857d143
|
feat: 步骤新增剪贴板注入(可注入+粘贴,批量发链接场景)+ adb终端快捷命令 tcpip 5555 转网络调试
|
2026-08-15 15:53:31 +08:00 |
|
butubb
|
17f849f723
|
feat: STF设备管理彻底删除(脚本+断开+STF API清记录)+ 一键重连(后台跑connect脚本)+ 跳过原因日志区分离线/未就绪 + SSH超时错误分类
|
2026-08-15 15:22:55 +08:00 |
|
butubb
|
e12219c979
|
feat: 强制安装APK(推送+pm install 绕过厂商弹窗)+ 定位设备(亮屏+大字定位页,结束定位关闭浏览器含后台)+ 一键亮屏/息屏(并发全部设备)
|
2026-08-15 15:03:01 +08:00 |
|
butubb
|
21d3aa8268
|
feat: 任务离线设备自动跳过(serial/分组模式触发时过滤 STF 池离线设备,默认开启,任务编辑器可勾选关闭)
|
2026-08-14 09:16:54 +08:00 |
|
butubb
|
060157ea1a
|
refactor: 前端JS拆分为8个模块(base/list/monitor/editor/tasks/tools/apps/admin,按依赖顺序加载)+ 删除废弃文件(start_web.bat/main.py/fix_web.bat/cleanup.py,web已全覆盖)+ 文档同步 + 修复/api/summary缺导入
|
2026-08-11 14:53:04 +08:00 |
|
butubb
|
136613bc12
|
refactor: 列表统一为 setListPager 搜索+分页+排序(_lpSort 升序/降序/取消,中文数字感知,空值排后);监控设备表并入统一排序;STF设备管理/应用版本管理接入统一列表
|
2026-08-11 14:12:52 +08:00 |
|
butubb
|
3bd56b4f59
|
feat: 工具Tab新增应用版本管理(按包名并发查询所有设备安装版本)+ 文档同步更新(README/API/ARCHITECTURE/DEPLOY:工具Tab各工具、条件判断if_el+OCR、STF设备管理、.env密钥配置)
|
2026-08-11 10:57:14 +08:00 |
|
butubb
|
5dd605e3a0
|
feat: 工具Tab新增STF设备管理(读写220脚本DEVICES列表+docker adb connect/disconnect,220侧timeout兜底防卡死)+ 修复设备列表:5555重复显示
|
2026-08-11 10:50:41 +08:00 |
|
butubb
|
8e23541380
|
refactor: 应用Tab整体并入工具Tab(应用管理/设备已装应用成为工具子分栏),移除独立应用导航
|
2026-08-11 10:42:32 +08:00 |
|
butubb
|
2f2d8cc184
|
feat: 条件判断步骤(if_el 双分支:找到/未找到各执行独立步骤,可嵌套循环/条件;OCR识别选择器匹配图片文字,RapidOCR 跨平台实现含命中点击)+ 动作编辑器布局优化(操作库分组/加宽、任务弹窗加宽)
|
2026-08-11 10:38:47 +08:00 |
|
butubb
|
159649b6a0
|
refactor: adb远程终端与Tailscale管理从维护页移至工具Tab(维护仅保留STF服务),设备列表共享缓存+复用esc
|
2026-08-11 10:00:15 +08:00 |
|
butubb
|
2f1003bf1f
|
feat: 新增工具Tab - 剪贴板注入(多选本地adb/STF设备批量注入文字,u2 setClipboard 实现,实测支持中文/引号/换行)
|
2026-08-11 09:53:32 +08:00 |
|
butubb
|
cff0fc6a79
|
feat: 任务/应用/维护页统一页内子分栏(showSubTab 泛化),维护页首拆子分栏;模板自动重载(TEMPLATES_AUTO_RELOAD)
|
2026-08-11 09:38:29 +08:00 |
|
butubb
|
6051c5c2fd
|
fix: Tailscale 设备表接入统一分页/搜索逻辑(setListPager),修正 IP 可修改的过时提示文案
|
2026-08-11 09:19:41 +08:00 |
|