
Your First Task【免费下载链接】metabaseThe easy-to-use open source Business Intelligence and Embedded Analytics tool that lets everyone work with data :bar_chart:项目地址: https://gitcode.com/GitHub_Trending/me/metabase未提供任务将INITIAL_TASK设置为No initial task specified. Wait for the user to give you a task.此时 Agent 启动后会处于等待状态由用户在对话中随时追加任务。这一设计让同一个命令既能带任务启动又能空载待命INITIAL_TASK变量随后会作为模板占位符注入到生成的 Agent Prompt 中。三、第二步为每次调用生成全新的时间戳会话目录文档在此步有一条强制约定每次/uxbot调用都必须生成全新的TIMESTAMP目录——即使当前会话之前已经创建过.bot/uxbot/earlier-timestamp/也不得复用。每次调用都是独立会话拥有独立的输出目录和独立的task-report.md。时间戳格式为YYYYMMDD-HHMMSS例如20260504-103045命令模板建议用如下方式计算date %Y%m%d-%H%M%S补充说明在配套的uxbot-discover流程中由autobot预调用时统一改用./bin/mage -bot-timestamp生成同一格式的时间戳该命令只输出一行、无额外内容并固定写入APP_DBpostgres——即UXBot 会话固定使用 Postgres 作为 Metabase 应用数据库不做额外环境探测。四、Prompt 生成mage 的-bot-generate-prompt命令核心执行命令如下./bin/mage -bot-generate-prompt \ --template dev/bot/uxbot-agent.md \ --output .bot/uxbot/TIMESTAMP/prompt.md \ --set INITIAL_TASKinitial task text这条命令的三个参数含义参数取值作用--templatedev/bot/uxbot-agent.mdAgent 的 Prompt 模板文件含{{INITIAL_TASK}}等占位符--output.bot/uxbot/TIMESTAMP/prompt.md生成后的完整 Prompt 输出路径命令会自动创建父目录--setINITIAL_TASKinitial task text将占位符{{INITIAL_TASK}}替换为第一步解析出的任务文本Shell 转义问题及其解决方案如果任务描述中包含引号或特殊字符直接在--set中内联会引发 shell 转义问题。文档给出的规范做法是先用Write工具把任务文本写入临时文件.bot/uxbot/tmp/task.txt然后--set INITIAL_TASK$(cat .bot/uxbot/tmp/task.txt)底层实现模板填充与文件包含该命令的实现位于 mage/src/mage/bot/prompt.clj。从源码看generate-prompt!函数支持三类机制--set KEYVALUE由parse-set-args解析不含的条目会被打印黄色警告并忽略方便暴露笔误--set-from-file KEYpath由parse-set-from-file-args实现读取文件内容作为值——这正是多行文本避免 shell 转义的官方替代路径文件不存在时置为空字符串并告警{{FILE:path}}文件包含由resolve-file-includes实现将模板中{{FILE:...}}占位符替换为仓库根目录下对应文件的完整内容路径相对项目根目录只解析一层不会递归扫描包含进来的内容。执行顺序是先解析{{FILE:...}}包含、再做{{KEY}}值替换最后spit写入输出文件并打印Wrote prompt: path确认。模板 dev/bot/uxbot-agent.md 中确实使用了这些机制例如{{INITIAL_TASK}} ... {{FILE:dev/bot/common/ux-evaluation-criteria.md}} ... {{FILE:dev/bot/common/environment-discovery.md}} {{FILE:dev/bot/common/playwright-guide.md}}也就是把 UX 评估清单、环境探测指南、Playwright 操作指南三个公共片段内联进最终 Prompt同时以APP_DB: postgres声明应用数据库类型。五、第三步执行——以普通用户身份操作浏览器生成的prompt.md读取后Agent 便按其指令执行任务且以普通用户身份导航浏览器。最终 Prompt 中编码了严格的运行规则是这套工作流最有价值的部分。5.1 前置动作强制重置浏览器状态Agent 模板开头即要求在做任何事之前先清空浏览器状态防止上一次 UXBot 会话泄漏 cookie、登录态、localStorage 或缓存页面。三步操作关闭已打开的浏览器mcp__playwright__browser_close无浏览器时调用也无害打开新浏览器导航到http://localhost:$MB_JETTY_PORT/端口可能需要先通过./bin/mage -bot-server-info发现然后用mcp__playwright__browser_evaluate执行以下脚本清除全部状态() { document.cookie.split(;).forEach(c document.cookie c.trim().split()[0] ;expiresThu, 01 Jan 1970 00:00:00 GMT;path/); localStorage.clear(); sessionStorage.clear(); }再次调用mcp__playwright__browser_close关闭浏览器。模板明确警告了跳过这一步的失败模式silently inheriting a logged-in admin from yesterday静默继承昨天已登录的管理员身份——这会直接污染测试结论。5.2 不许作弊约束只走 UI模板用大量篇幅定义了 Agent 的能力边界You MUST NOT不得读取源码文件禁止对源码使用Read、Grep、Glob不得使用 Clojure REPL./bin/mage -bot-repl-eval、clj-nrepl-eval、nc连 socket REPL 等任何 REPL 访问不得直接查询数据库、不得读服务器日志不得使用./bin/mage -bot-api-call或任何 API 调用不得借助任何开发者工具、内部系统或后门获取信息不得通过阅读功能实现来反推功能用法。Read/Write工具仅允许用于自身输出文件.bot/uxbot/下的产物和.bot/autobot/llm-status.txt。浏览器层面的不许作弊更细粒度禁止直接调 API绝不允许用browser_evaluate执行fetch()、XMLHttpRequest或任何 Metabase API 调用禁止操纵 DOM不许删元素、JS 强制点击、派发合成事件、改元素属性禁止输入 URL不能构造 URL hash、不能在地址栏键入路径、不能做任何 URL 拼凑——唯一允许直接访问的 URL 只有http://localhost:$MB_JETTY_PORT/首页和http://localhost:$MB_JETTY_PORT/auth/login登录页browser_evaluate的唯一合法用途是读取window.location.href确认当前位置其他所有页面必须通过点击链接、按钮、菜单项、面包屑到达。这套规则背后的理念被模板一句话概括If you get stuck, that IS the finding. A stuck user is exactly what we want to detect.卡住本身就是发现不允许绕过 UI 问题去作弊完成只允许如实记录困惑。5.3 每任务 20 分钟时限与卡住时的降级策略单任务 20 分钟硬性时限超时即停止说明已尝试了什么、卡在哪里、哪里令人困惑卡住时的升级路径先探索 UI菜单、按钮、工具提示→ 再用搜索功能 → 仍卡住才允许通过WebFetch查阅 Metabase 官方文档模拟真实用户求助文档的行为→ 20 分钟后停止并报告阻塞原因。5.4 Agent 的世界知识基线模板为 Agent 注入了一份读完 Getting Started 指南后普通用户应知道的知识基线包括核心概念Question可视化或原生 SQL 查询、Dashboard卡片集合 过滤器 点击下钻、Collection有权限控制的组织容器、Model一等数据源可带自定义元数据、Metric集中定义的可复用度量构建问题可视化 Question Builder选表 → 过滤 → 选列 → 汇总 → 分组 → 排序 → 可视化与原生 SQL支持模板变量和字段过滤器导航首页、右上角新建按钮、顶部搜索、集合侧边栏、管理面板齿轮图标关键交互模式保存时选择目标集合/仪表盘、仪表盘顶部过滤器、图表点击下钻、分享链接/嵌入/邮件与 Slack 订阅。这保证了 Agent 的困惑来自真实界面而非缺乏领域常识使测试信号可归因于产品 UX 本身。六、任务执行规范截图、叙事与任务报告6.1 执行中的行为规范模板要求 Agent 在完成任务时边做边出声思考并对截图时机给出明确规则到达重要页面时截图关键操作前后各截一张出现意外时截图对下一步操作感到困惑时截图。截图保存到.bot/uxbot/screenshots/文件名要有描述性例如screenshots/03-dropdown-wont-open.png。UXBot 专属规则还强调截图是报告的主要证据复杂交互前必截保留现场、失败后必截保留错误态。6.2 Per-Task 报告的目录与命名规则每次/uxbot调用是独立会话产物写入.bot/uxbot/SESSION_TIMESTAMP/严禁复用旧会话目录。若同一对话中用户不重新调用/uxbot就追加任务则在同一会话目录内依次写task-report-2.md、task-report-3.md……每个任务报告必须可独立阅读因为聚合命令uxbot-aggregate会扫描跨会话的所有task-report*.md。报告头部固定格式分支、commit、数据库类型通过git -C $(pwd) branch --show-current、git -C $(pwd) rev-parse --short HEAD、grep MB_DB_TYPE mise.local.toml或./bin/mage -bot-server-info获取**Date:** YYYY-MM-DD **Branch:** branch (commit hash) **Database:** type **Session:** task start time — task end time正文必须包含以下章节聚合报告不会重新收集细节漏写即永久丢失章节要求Task原样或近原样复述任务Approach最先尝试了什么、为什么、预期看到什么Steps taken按序记录每个有意义的步骤到达的 URL、点的按钮、填的字段让没看过 Metabase 的读者也能跟Struggles最重要的一节在哪里困惑、反复尝试、丢失数据、心里没底每个挣扎点写预期/实际/如何恢复/恢复是否显而易见聚合分析以此为关键Resolutioncompleted / partially completed / blocked 结果被阻塞则指明阻塞因素Screenshots用 Markdown 图片语法内联嵌入caption而非纯链接每张配一行说明性图注路径相对task-report.md所在位置图后留空行Time spent墙钟时间估算若某事件导致时间膨胀需注明UX evaluation按评估清单快速过一遍没出现的维度可跳过出现的亮点要指出6.3 UX 评估清单内联自 dev/bot/common/ux-evaluation-criteria.md 的评估维度视觉质量布局正确性、间距、对齐、排版交互行为按钮/下拉/模态框操作顺畅、无卡顿加载态有 spinner/skeleton无空内容闪烁错误态出错时信息清晰有帮助空态无数据时展示合理键盘导航Tab 遍历、焦点管理正确响应式不同视口尺寸下可用明暗主题两种主题下的对比度、可读性、图标/边框可见性无破坏某一主题的硬编码颜色。证据收集要求关键时刻截图、文件名有描述性如03-dropdown-wont-open.png、截图前记录当前 URL、报告要平衡——既记问题也记做得好的地方。6.4 报告语气与 PDF 生成模板对报告语气有明确要求以 UX 研究者观察用户的口吻而非开发者口吻。示例对比好我预期选中选项后下拉框会收起结果它保持打开按 Escape 反而关闭了整个模态框差这个下拉框有 bug写完 Markdown 后生成同目录 PDF./bin/mage -bot-md-to-pdf .bot/uxbot/SESSION_TIMESTAMP/task-report.md【免费下载链接】metabaseThe easy-to-use open source Business Intelligence and Embedded Analytics tool that lets everyone work with data :bar_chart:项目地址: https://gitcode.com/GitHub_Trending/me/metabase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考