自主全周期应用构建器——根据自然语言描述生成需求文档、架构、代码、部署、测试和缺陷修复。能够记住用户偏好。
mano-afk. 精巧的自动化管道,从自然语言描述中构建、部署和测试应用程序是一项面向实际任务的技能,主要用于用户是AFK,持续时间为整个期间;技能从每个项目中学习。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
一套全自动流水线,可根据自然语言描述完成应用的构建、部署与测试。用户在整个过程中全程离线(AFK)。该技能具备持续学习能力——构建规则与用户偏好将在各会话间持久化,从而随时间推移不断提升输出质量及与用户偏好的契合度。
Claude Code 用户:请使用位于 claude/SKILL.md 的 Claude Code 专用 SKILL.md 文件。
三个角色协同协作,共同交付应用:
主智能体将代码生成任务委托给子智能体(此阶段耗时最长),自身在此期间保持空闲。所有测试均由主智能体直接运行,以确保对测试结果拥有完整可见性。
AFK 规则:第 0 步是唯一允许用户交互的窗口;从第 1 步起,所有决策必须完全自主完成——禁止向用户提问。对于存在歧义的决策(如 8bit vs float、React vs Vue、端口选择等),应采用最合理的默认值,并在 PRD.md 中明确记录。仅当任务完全不可行时(例如缺失必要硬件、无权限、已耗尽 10 次修复迭代)才可中止流程。
这是唯一允许智能体向用户提问的步骤。
需求评估:若用户请求过于模糊,无法确定核心功能(例如“帮我做一个应用”),或包含可能导致产品形态根本不同的歧义需求,则应请用户澄清——问题数量应严格控制在 1–2 个,聚焦关键点,避免长篇访谈。非关键性缺失项(如视觉设计、校验规则、技术栈、页面布局等)由构建子智能体自主补全。
端到端(E2E)测试配置:运行 mano-afk config --get e2e-mode 进行检查。
local 或 cloud —— 已完成配置,可继续流程。mano-afk check,并按其输出的指引完成配置。若用户拒绝,则跳过 E2E 测试环节——本技能在无 E2E 支持下仍可正常工作。第 0 步完成后,向用户告知:“请握好啤酒。从现在起全程 AFK。”
根据用户请求推导出一个简短、符合 kebab-case 命名规范的项目名称(例如,“帮我做一个待办事项应用” → todo-app)。
项目目录:通过 mano-afk config --get projects-dir 读取已配置的项目根目录(默认为 ~/Projects/);项目路径为:{projects-dir}/{project-name}/。
读取 references/report-template.md —— 你将在第 4 步中使用该模板生成 report.md。注意记录 references/ 目录的绝对路径——该路径将传递给后续子智能体,用于访问其余参考文件。
通过 sessions_spawn 启动构建子智能体,参数设为 runtime="subagent"。构造 prompt 时需包含以下内容:
build-pipeline.md 的绝对路径 —— 指示子智能体读取并遵循该文件references/ 目录的绝对路径 —— 子智能体按需读取 rules.md、preferences.md 和各类模板立即向用户响应当前正在构建的内容及项目目录路径。构建子智能体内部遵循四个阶段:阶段 1 生成 PRD.md(含验收标准的产品需求文档),阶段 2 设计架构并生成 README.md(其中的测试用例由 PRD 推导而来),阶段 3 编写代码,阶段 4 执行部署。等待 progress.md 中显示 status: ready_for_testing 后再继续。
超时设置:构建任务(依赖安装、编译、部署等)可能耗时较长。启动子智能体时应设置充足超时时间——至少 30 分钟;若平台支持,建议不设超时限制。
开始测试前,需确认应用已成功部署并可访问:
deploy/start.shcurl 或端口检测命令验证服务可达性start.sh 缺失、服务崩溃、端口不可达),读取 deploy/backend.log 和 deploy/frontend.log,然后进入第 5 步(修复循环),并将部署错误作为本次失败的描述执行 README 中定义的所有类别下的全部测试用例,不得跳过或延迟任一用例。
开始每个类别测试前,先统计 README 中该类别的总测试用例数。每执行一个测试,打印带进度标识的输出,例如:[3/18] api_3 PASS 或 [5/18] api_5 FAIL。该机制可清晰暴露跳过的测试——若计数器从 3 直接跳至 7,则表明测试 4–6 被跳过。
将测试结果记录至 report.md(使用 report-template.md 模板)。若测试失败,需完整记录错误输出(响应体、stderr、日志等)。
运行构建子智能体所配置的 Linter 工具。对可自动修复的问题启用 --fix 参数,然后报告剩余错误。
执行 README 中定义的全部 API 测试用例。使用 curl -s -w "\nHTTP_STATUS:%{http_code}\n" 同时捕获响应体与 HTTP 状态码。测试失败时需打印完整响应体。
E2E 测试通过 mano-afk run 在浏览器中打开应用,借助视觉-语言模型(VLA)与 UI 交互,并验证视觉结果。
前提条件 —— 若任一检查失败,请跳过本节全部内容:
mano-afk 已加入系统 PATH(安装方式为:技能安装时通过 brew metadata 自动完成 —— 切勿自行安装任何包)mano-afk config --get e2e-mode 返回 local 或 cloud(若未设置,则跳过并记录原因至 report.md)数据库重置:运行首个 E2E 测试前,清空所有应用数据表(例如对每个应用表执行 DELETE FROM,或删除并重新初始化 SQLite 文件)。此举可清除 API 测试遗留的数据。注意:不得在单个 E2E 测试之间重置数据库——E2E 测试顺序执行,且后序测试可能依赖前序测试创建的状态。
执行 README 中定义的全部 E2E 测试用例:
mano-afk run "{steps}" --url "{url}" --expect "{expected}"
--url 参数会在智能体启动前于默认浏览器中打开目标页面。智能体将看到已加载完毕的页面——切勿在任务步骤中包含“打开 localhost:...”类指令。
所有执行参数(--local/--cloud、--max-steps、--minimize)均从 mano-afk config 中读取。若 CLI 显式指定标志位,则优先级高于配置。可通过 mano-afk config --list 查看当前配置值。
执行规则:
mano-afk 任务最长允许运行 30 分钟。请将 exec 超时设为至少 1800 秒,或使用 background: true 配合 yieldMs: 1800000。严禁使用过短超时mano-afk stop 解决 409 会话冲突、清理被终止进程的残留、或中止正在运行的任务在前述全部测试均通过后,通过 sessions_spawn 启动对抗子智能体,参数设为 runtime="subagent"。构造 prompt 时需包含以下内容:
PRD.md(含需求与验收标准)和 README.md(含架构与测试用例)内容对抗子智能体不与运行中的应用交互——仅审查需求文档与源代码。
对抗子智能体仅识别潜在问题,不执行任何操作。其返回的发现结果分为两层,每层均以表格形式呈现,列包括:ID、Finding(问题描述)、Severity(严重程度)、Suggested Verification(建议验证方式)。
约束条件:必须覆盖两层问题;不得重复 README 中已有的测试用例;不得标记安全漏洞(如 XSS、SQL 注入、CSRF)。
需由你亲自对每项发现进行分类评估,方法包括:代码检查(用于 Schema/配置类问题)、API 测试(通过 curl 验证后端行为)、或 E2E 测试(验证 UI 渲染、用户流程、视觉状态)。其中,至少 2–3 项发现必须通过 E2E 测试验证。执行对抗子智能体的 E2E 验证前,必须重置数据库,以避免受先前测试污染。每项评估结论(确认 → 进入修复循环 / 驳回 → 注明理由)均需记录至 report.md。
继续流程前,请逐一核对以下各项。若任一项为“否”,请返回补全。
若任一测试失败:
sessions_spawn 启动一个全新的构建子智能体(修复模式),参数设为 runtime="subagent",并提供以下信息:build-pipeline.md 的绝对路径(修复模式无需其他参考文件)progress.md 显示 status: ready_for_testing)E2E 误报处理:若某 E2E 测试失败,但经代码检查确认实现逻辑正确(失败源于视觉模型误判),则在 report.md 中将其标记为误报,并说明理由。误报不得进入修复循环——修复正确代码将浪费迭代次数。
重复失败应对策略:若同一测试连续失败 2 次及以上,需在修复 prompt 中添加备注:“该测试已失败 N 次。此前修复尝试:[简述]。请考虑结构性修复而非补丁式修复。”
迭代耗尽处理:若已达 10 次迭代上限但仍有失败项,则携带当前结果进入第 6 步。在 report.md 中完整记录所有剩余失败项、迭代历史及已尝试的修复措施总结。
references/rules.md(上限 100 条;若已达上限,则移除价值最低的一条)。同时合并构建子智能体在项目根目录下生成的 new-rules.md 文件。references/preferences.mdreferences/ 目录属于本技能本地专属,其中文件随项目演进而持续更新。该目录不会修改任何全局 CLI 配置、系统设置,亦不会影响本技能目录以外的任何文件。
作用范围:这些文件仅被 mano-afk 的构建子智能体与对抗子智能体读取。对其他技能、其他 CLI 工具或宿主系统均无任何影响。
存储内容:
| 文件 | 用途 | 更新时机 | 最大条目数 |
|---|---|---|---|
build-pipeline.md |
构建子智能体指令(含阶段 1–4 及修复模式) | 仅限手动更新 | — |
rules.md |
通用构建规则,源自过往修复循环的经验总结 | 修复循环完成后(第 6 步) | 100 |
preferences.md |
用户界面/体验偏好设置 | 用户给出反馈后(第 6 步) | 50 |
prd-template.md |
PRD 文档生成模板(共五章) | 仅限手动更新 | — |
project-structure.md |
标准目录结构模板 | 仅限手动更新 | — |
readme-template.md |
README.md 生成模板 | 仅限手动更新 | — |
report-template.md |
report.md 生成模板 | 仅限手动更新 | — |
执行过程中仅 rules.md 与 preferences.md 会被修改,其余文件均为只读模板。规则与偏好将在各项目间持久化,使本技能具备长期进化能力。
mano-afk run,将截图与任务描述发送至云端视觉-语言模型(VLA)服务商。该行为仅在通过 mano-afk config 显式将 e2e-mode 设为 cloud 后触发。local 模式及跳过 E2E 测试均不涉及任何云端通信。mano-afk config --set e2e-mode local|cloud)。未配置时,该功能默认禁用。相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.3万人学习
共49课时 | 82.7万人学习
最新文章