# miao-bj **Repository Path**: ling1314/miao-bj ## Basic Information - **Project Name**: miao-bj - **Description**: 本地ai助手,go语言自研骨架 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-07 - **Last Updated**: 2026-09-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ```text 今天我们介绍一下技能:browser-automation 浏览器自动化功能。我们先看一段演示视频。 在日常工作中,我们经常要处理一些重复的网页操作。规则简单,但某些节点依然需要语义判断;有些规则不方便对外人讲,又不敢完全交给自动化。 我们的设计思路是:把操作定义成工作流。用户用自然语言描述审批规则,自动化工具驱动浏览器抓取页面详情,把页面信息和规则一起送给大模型做语义判断,生成预审表格。用户一次性看到所有结果,确认后批量执行。 整个过程在用户自己电脑上完成,浏览器直观可见,完整模拟人工操作节奏。关键节点用自研 CLI 或 JS 脚本驱动,确保操作准确。 下面我们介绍一下原理,不关心技术细节可以跳过: 功能基于 CDP 协议开发,分为三部分: 工作流引擎automation-core,常驻 HTTP 服务。接收外界指令,加载 YAML 执行工作流,维护状态,提供基础操作和结果反馈。 浏览器驱动器CDP Client,加载 CLI 和 JS 脚本驱动浏览器、获取数据。默认和主程序在一起,也可单独部署。 调用工具Adapter CLI,方便外界调用的入口。启动、停止、查看状态,一行命令,不用了解内部原理。 WebCTL(可选),当某类单据特别重要,或者需要额外处理时可以通过自定义的CLI来编写额外的处理流程和逻辑。 这个 Skill 可以独立运行、单独维护,也能被其他 Agent 或服务加载调用。内置 Action 覆盖了我们目前遇到的所有操作场景。 添加单据和页面操作只需要编写yaml。 这里我们也列举一下历史路线上存在的问题,消除歧义。 方案1.纯 AI 驱动。 Browser-use、Page-agent 都试过。操作慢、成本高、过程不可控。测试探索可以,实际办公完全不可行。 方案2.RPA 工作流模式。 方向是对的,但执行有问题。LangGraph 的图结构对短链条操作太重;早期 CLI 驱动浏览器,每次改一行都要重新编译,总部没环境、没权限、没远程手段,维护痛苦。 现行版本移除了 LangGraph,自己写流程,允许同时嵌入 CLI 和 JS 驱动。但领导催得急,我没时间只打磨这几个功能而不动其他模块。 而且现行版本体积臃肿、流程无法局部修改、不能独立打包。这个时间点提重构,不合适。 browser-automation 纯 Go 编写,单文件独立运行,体积 20M 还能压缩。功能对齐,架构彻底解耦。 团队里,沟通成本和信任成本客观存在。设计阶段如果人人提建议但不参与开发,功能必然支离破碎,烂尾是常态。 所以这条线我自己先养着。养到它能完整替代旧版本,养到旧版本大家自然不想用的时候,它再出场,用结果替代说服。 ``` ```text 点击托盘时CDP环境正常启动,插件面板也正常跳转,但是提示失败,应该是这个地方的 json 解析存在问题,修正一下。提示信息如下,当然这个是windows的提示 2026-09-04 16:14:41 WARNING C:/00miao/miao-bj/cmd/deskpet/main.go:54 打开面板失败: 解析 open-panel 输出失败: invalid character '{' after top-level value, output: { "launched_new": true, "port": 19999, "success": true, "target_id": "", "url": "" } { "action": "navigated", "panel_url": "chrome-extension://oinamnedpcfccinkjiaabkdiddkdanb/panel/index.html", "success": true, "target_id": "B0F9928E6418740423AC72E8F448A1B4" } 另外,如果是更新文件,可能需要调整数据库。例如之前我们调整过数据库字段,这种情况怎么办? 先给方案 ```