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
|
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
|
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
|
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
|
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
|
1e39f5490a
|
fix: 大屏触控优化——①点击错位:ctrl-img object-fit:contain 时图片绘制区小于盒子(居中黑边),坐标换算改为按实际绘制区域,黑边点击忽略;②滑动卡顿:tap/swipe/key/text 每次 u2.connect 重建连接(1-3s 握手),加 60s 连接缓存,失败自动清缓存重建(实测点击 2.97s→1.13s)
|
2026-08-20 13:22:21 +08:00 |
|
butubb
|
2a3c748964
|
fix: 工具页剪贴板注入无反应——injectClipboard 函数在阶段3清理时被误删,点击按钮 JS 报错;补全函数(校验→ClipInject 通道 API→逐台结果表+toast 汇总),帮助文案同步更新
|
2026-08-20 10:40:49 +08:00 |
|
butubb
|
265e47a1f4
|
fix: 测试此步骤弹窗全链路修复——closeTestModal 恢复(阶段3误删导致关不掉)、test-overlay 层级 1200(高于编辑器/元素抓取弹窗)、tasks_api 补 _log(后端500)、GenericStepsWorker 旧签名调用修复(测试执行失败)
|
2026-08-19 15:00:27 +08:00 |
|
butubb
|
ce47a5b83d
|
refactor: web_server 模块化拆分(web/ 蓝图包 auth/monitor/tasks/admin/tools/devices/apks/tailscale + context/common,web_server 1796→193 行仅留装配与启动)+ 大屏优化(网格 5s 轮询、弹窗独占缩略图、流支持 q/fps)+ 三修复(MIUI 屏幕状态检测改 dumpsys power、补 ADB_PATH 导入修复一键亮屏、renderGrid 增量渲染不重载缩略图)
|
2026-08-19 14:55:29 +08:00 |
|
butubb
|
e07b339a51
|
feat: 大屏增强——一键亮屏按钮、卡片显示设备名+IP+熄屏状态(thumb 响应头 X-Screen-State)、点击卡片进入设备操作弹窗(实时流+触控+按键+文字),工具页远程看屏子分栏移除并入大屏
|
2026-08-19 14:17:33 +08:00 |
|
butubb
|
c78f17d72f
|
feat: 监控大屏(/wall 全屏深色控制室风格:设备卡片网格+缩略图轮询+统计+时钟,缩略图 360px/q55 每 2.5s 一帧 20 台仅 ~0.2 核 CPU)+ /api/screen/thumb 接口 + 导航栏大屏入口
|
2026-08-19 14:13:15 +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
|
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
|
c111cb9a5e
|
fix: STF未就绪设备纳入维护终端列表(adb可达但agent启动失败,标记stf_not_ready)+ 卸载/检查agent自动先connect
|
2026-08-17 11:02:43 +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
|
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 |
|
butubb
|
de66c6194b
|
feat: 维护页 Tailscale 管理(设备列表/改名/授权/密钥不过期/设置IP/auth key,独立模块 core/tailscale_client.py)+ 密钥迁移 .env(STF_TOKEN/WEB_SECRET_KEY/TAILSCALE_API_KEY 不再入库)+ 修复设备更新端点(/device/{id} 405,改用 /name /authorized /key 专属端点)+ auth key description 仅 ASCII
|
2026-08-11 09:06:59 +08:00 |
|
butubb
|
06a9df111a
|
feat: 用户权限系统(权限位/管理员全权限/前端隐藏/最后管理员保护)
|
2026-08-11 08:27:33 +08:00 |
|
butubb
|
794f40a880
|
feat: 调度简单设置(频率选择器)+ 运行窗口 + 下次运行列
|
2026-08-11 08:27:33 +08:00 |
|
butubb
|
3320035c9e
|
feat: 维护 Tab(STF 容器一键重启 + adb 远程终端,含设备快捷选择/卸载 agent/重连)
|
2026-08-11 08:27:33 +08:00 |
|
butubb
|
8a3cd67a97
|
fix: 设备异常状态清除(清除异常/一键清除,检查与更新原子化防竞态)
|
2026-08-11 08:22:24 +08:00 |
|
butubb
|
8a675923cd
|
feat: 失败任务汇总 - /api/summary + 监控页异常面板
- 新增 /api/summary:各状态计数 + 异常设备列表(last_error/任务/重试次数/时间)
- 监控页新增"异常汇总"面板:显示失败/异常设备及错误信息,方便长期运行观察健康度
|
2026-08-08 21:33:35 +08:00 |
|
butubb
|
47262abdcd
|
refactor: 架构优化-前端(JS 拆分外部文件、监控定向更新)
- 前端 JS 从 monitor.html 内联移到 static/admin/monitor.js(HTML/JS 分离,便于维护)
- 监控页 5 秒刷新时设备数据/分页/排序未变则跳过整表重渲染,减少 DOM 抖动
|
2026-08-08 20:55:53 +08:00 |
|
butubb
|
fba8c3abbb
|
fix: 循环块/输入文字模式重开显示不一致 - 渲染时按保存值显示对应字段
_toggleLoopMode/_toggleInputMode 只在 select onchange 时调用,重开编辑不触发,
导致"按时间"被选中但右侧仍显示次数框。改为渲染时直接按保存的 loop_mode/mode
决定显示轮次字段还是时长字段/随机还是指定文字。
|
2026-08-08 17:01:34 +08:00 |
|
butubb
|
47b3d0bf03
|
fix: 监控进度显示优化 - 通用任务改为"已执行操作数",操作计数紧凑展示
- 通用步骤任务进度语义:done=累计执行操作次数,不再配固定 total(原来显示 33/2 步骤 无意义)
- 前端操作计数徽章按数量降序、最多显示6个,超出折叠为 +N
- 移除无意义的百分比进度条(无固定总数时不显示)
|
2026-08-08 16:57:40 +08:00 |
|
butubb
|
aeffb1b95b
|
fix: 元素抓取生成精确选择器,无属性元素用锚点祖先限定;抖音点赞找不到按钮不再双击屏幕
- 元素选择器生成:无 resource-id/text 的元素改用最近有唯一属性祖先限定范围,
并带同 class 兄弟序号消歧(如 //*[@resource-id=".."]/RelativeLayout[3]),
不再给裸 class(如 //android.widget.ImageView 会误匹配其他元素)
- 仍无法限定的宽泛选择器标记 broad,前端元素列表显示"⚠宽泛"提示
- 抖音 like 动作:by_element 找不到点赞按钮改为跳过,不再双击屏幕中央(避免误触)
|
2026-08-08 16:49:38 +08:00 |
|
butubb
|
4186eb1266
|
fix: 步骤参数同步误把子步骤输入写进父步骤,导致动作组概率失效
_syncParams 用 .sc-body [data-key] 读取卡片输入,但嵌套子步骤也有 .sc-body,
是卡片后代,其输入被写进父步骤 params(如 group 的 probability 被子步骤的 100 覆盖)。
改为只读卡片直接子级 :scope > .sc-body,group 概率与子步骤概率各自独立。
|
2026-08-08 16:34:09 +08:00 |
|
butubb
|
473dc1909d
|
feat: 前端整体增强(应用查看UI/元素选择/步骤编辑器/拖拽/概率/分页/动作管理)
- 应用Tab:设备已装应用区块(应用名+版本+versionCode+路径)、安装弹窗设备显示 IP·型号
- 元素抓取:截图按 bounds 命中测试选最小元素,跳过全屏容器 overlay
- 步骤编辑器:输入实时同步+localStorage草稿自动保存(防丢内容)
- 拖拽修复:画布 drop 只绑定一次+stopPropagation+延迟渲染,可拖入循环块且不重复
- 步骤概率触发字段、循环按轮次/时间切换、监控页预计结束时间
- 全部列表统一搜索+分页(设备/任务/应用/分组/用户/动作)
- 自定义动作管理模块(列表/新建/编辑/删除)、步骤编辑器容器化、嵌套循环移动修复
|
2026-08-08 16:31:06 +08:00 |
|