尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Mastra Factory 实战指南:从 Issue 到已评审 Pull Request 的编码 Agent 环境搭建

Mastra Factory 实战指南:从 Issue 到已评审 Pull Request 的编码 Agent 环境搭建 Mastra Factory 实战指南从 Issue 到已评审 Pull Request 的编码 Agent 环境搭建【免费下载链接】mastraMastra is the modern TypeScript framework for AI-powered applications and agents.项目地址: https://gitcode.com/GitHub_Trending/ma/mastra导读Mastra Factory 是 Mastra 开源生态中一套面向编码 Agentcoding agents的软件交付环境把 GitHub 仓库接入后一个 Issue 可以被自动转化为实现计划、代码实现直至生成经过评审的 Pull Request。本文以create-factory脚手架生成的 Factory Server 项目mastracode/mastra-factory/template/README.md为主线完整讲解项目初始化、凭据加密、启动登录、首个 Issue 全流程、逐项配置、两种部署方式、内置脚本与常见故障排查并结合 mastracode/mastra-factory 与 mastracode/factory 的源码带你看到脚手架背后的自动化供给platform provisioning与 Factory 后端的模块化设计。读完本文你将能独立部署一套可运行、可定制、可上生产的 Mastra Factory 实例。Mastra Factory 是什么Mastra Factory 是一个开源的用编码 Agent 构建软件的环境。它的核心工作流是连接你的代码仓库GitHub把 Issue 变成计划plan——由 Agent 调查、理解并输出实施方案把计划变成实现implementation——Agent 在沙箱中写代码把实现变成已评审的 Pull Requestreviewed pull request——自动创建 PR 并经历代码评审关卡。整个项目由create-factory这个 npm 脚手架创建包名create-factory见 mastracode/mastra-factory/package.json。生成的项目包含 Factory Server 与其配置需要与你想让 Agent 修改的仓库分开存放——Factory 本身是一个独立运行的服务器而不是嵌入到业务仓库中的代码。从仓库结构看Mastra Factory 由多个包协同组成mastracode/mastra-factorycreate-factory脚手架 CLI 与模板负责项目生成mastracode/factorymastra/factory可复用后端拥有存储领域storage domains、路由routes、规则rules、集成integrations、沙箱sandboxes与 Factory 专属的 Agent 行为mastracode/factory-uiFactory 的 React 前端mastracode/web宿主host接线层mastracode/web/src/mastra/index.ts是规范的宿主示例mastracode/sdk共享的 Agent 控制器行为。创建 Factory 项目环境要求与安装命令脚手架要求Node.js 22.13.0 或更高版本对应create-factory的engines.node字段见 mastracode/mastra-factory/package.json。使用任意主流包管理器均可# npm npx create-factorylatest # Yarn yarn dlx create-factorylatest # pnpm pnpm create factorylatest交互式初始化到底做了什么脚手架背后并不只是拷一份模板mastracode/mastra-factory/src/create.ts 中的create()流程依次完成询问项目名并校验目录不存在克隆模板cloneTemplate()优先用npx degit拉取默认模板仓库失败则回退git clone后移除.git见 mastracode/mastra-factory/src/utils/clone.ts改名把模板package.json的 name 改写为你的项目名toPackageName会做合法 npm 包名清洗复制.env.example为.env并立即收紧为0600权限为后续写入密钥做准备安装依赖自动探测包管理器npm/pnpm/yarn/bun见 mastracode/mastra-factory/src/utils/pm.ts并执行 install平台供给platform provisioning默认开启见下文Git 初始化先把.env追加进.gitignoreensureEnvGitignored再git init git add -A git commit。如果.gitignore写失败脚手架宁可跳过 git init也不会把平台密钥提交进历史——这点在源码注释中被明确视为必须 fatal的边界。默认的平台供给与 --no-platform默认情况下安装向导会调用 Mastra 平台服务用于认证、存储与沙箱。供给流程runPlatformProvisioning完整走一遍浏览器登录 → 选择组织 → 选择区域eu/us→ 创建平台项目 → 铸造sk_组织级 API Key → 配置生产环境 → 挂载 Neon Postgres 并轮询就绪 → 回写.envMASTRA_ORGANIZATION_IDMASTRA_PROJECT_IDMASTRA_PLATFORM_SECRET_KEYsk_开头的密钥平台只展示一次所以脚手架把它先累积到内存再一次性刷入.envMASTRA_ENVIRONMENT_IDDATABASE_URLNeon 的 Postgres 连接串如果你希望完全自托管、不依赖平台可以在创建时跳过平台供给npx create-factorylatest -- --no-platform跳过平台后认证、存储、沙箱三个服务都可以各自独立替换本地自托管、或继续用平台、或混搭例如存储与认证用平台、沙箱用本地。这是 Factory 设计上刻意保持的灵活性——Using Mastra platform services is optional。CLI 完整选项运行npx create-factorylatest --help可以看到全部选项对应 mastracode/mastra-factory/src/index.ts 中 commander 的定义选项说明[project-name]项目目录名缺省时交互询问--template name从指定模板创建公开 GitHub URL默认是官方 softwarefactory 模板--no-platform跳过 Mastra 平台登录、项目与 Neon 供给--org org组织 ID 或名称跳过交互式组织选择器按 id 或精确 name 匹配未命中会报错--region region平台项目区域eu或us缺省时交互询问-v, --version输出版本号启动 Factory Server第一步准备凭据加密密钥在连接模型提供商之前先检查.env中是否存在FACTORY_CREDENTIAL_ENCRYPTION_KEY。若缺失为本项目一次性生成一个密钥openssl rand -base64 32把输出保存为.env中的FACTORY_CREDENTIAL_ENCRYPTION_KEY。这条密钥用于静态加密存储的模型提供商密钥、自定义提供商 API Key 与集成密钥需要在每次重启和部署之间保持不变否则已加密的凭据将无法解密妥善备份并受保护存放。从源码看mastracode/factory/src/factory.ts 的prepare()中当启用了认证但未提供secretEncryption时会打印一条启动警告说明持久化的模型凭据将以明文存储——因此FACTORY_CREDENTIAL_ENCRYPTION_KEY是生产环境的推荐配置而不是可选项。第二步启动开发服务器从 Factory 项目目录启动npm run dev默认配置下服务器会打印一个本地 URL打开后通过 Mastra 平台登录。一个服务器同时提供 Factory UI 与 API默认端口4111对应publicUrl默认值http://localhost:4111相关变更记录在 mastracode/factory/CHANGELOG.md。登录后你会看到引导向导onboarding wizard在其中选择 Agent 应修改的仓库。如果仓库未出现用Manage GitHub connection授权 GitHub App 访问可选地接入 Linear。随后连接模型提供商用 API Key 或支持的订阅并选择 Factory 使用的模型。如果你在安装时跳过了平台设置则参考官方 Get started 文档自行配置替代的认证、存储与沙箱提供商。跑通你的第一个 Issue以Issue → 计划 → 实现 → 已评审 PR的完整链路为目标按下面三步走打开Settings → Work Intake → GitHub issues启用Sync GitHub issues并选择你的仓库。每个团队成员可以各自选择自己的 Issue 来源。创建一个小的 GitHub Issue例如为仓库 README 增加贡献指南contribution guidance。在Work → Intake中找到该 Issue选择Investigate调查打开其会话跟随 Agent 的工作过程。之后继续官方提供的issue-to-pull-request演练即可看到 Agent 输出计划、人工评审计划、进入实现、最终创建并走完 PR 评审。从源码理解 Issue 的旅程mastra/factory的后端把这条链路实现为看板Board驱动的状态机。默认安装 Work 与 Review 两块板见 mastracode/factory/src/boards/work.ts 与 mastracode/factory/src/boards/review.tsWork 板intakeresting→triage/planning/execute/reviewworking角色分别为triage、plan、work、work→done/canceledterminalReview 板intakeresting→reviewworking角色review→done/canceledterminal。Board 的三种阶段语义见 mastracode/factory/README.md 的 Board phase semantics 一节resting卡片停泊人工将卡片移出 resting 阶段会武装自主权移回则解除workingAgent 座位seat持有卡片必须声明roleterminal卡片完成进入该阶段会释放沙箱并允许清理机制取代过期决策。GitHub 集成mastracode/factory/src/integrations/github负责事件驱动Issue 打开、评论、label 变化等 webhook 会把卡片在 Work 与路由看板之间移动并刷新标签元数据。Work 板还内置了submit_plan工具结果规则当 Planning 座位上的 Agent 返回以Plan approved.开头的结果时卡片自动流转到 Execute。配置你的 Factory配置总览认证、存储、沙箱可以独立选择模型提供商与 Issue 来源通过 Factory UI 配置服务器设置都存放在.env中修改后需要重启服务器生效。配置项可以修改的内容Models提供商访问、个人或组织凭据、默认模型GitHub仓库访问与个人 Issue 接入Linear工作区连接、项目选择、把 Issue 路由到 FactorySlackApp 设置、账号关联、从 Slack 发起会话AuthMastra 平台登录或其它支持 Server 与 Studio 的提供商Storage数据库连接或 Factory 存储适配器SandboxesMastra 平台、本地执行、或其它 Mastra 沙箱提供商存储PostgreSQL pgvector生成的服务器使用DATABASE_URL连接PostgreSQL带 pgvector。要使用随项目附带的本地 PostgreSQL 服务运行npm run db:up然后在.env中把DATABASE_URL设为它的连接串。生成的docker-compose.yml里包含完整连接设置不需要时用npm run db:down停止。从后端看MastraFactory的构造要求必须传入storage——一个FactoryStorage后端例如PgFactoryStorage部署用或LibSQLFactoryStorage本地开发用。prepare()会在该存储上注册全部领域表Intake、Audit、WorkItems、ModelCredentials、ModelPacks、MemorySettings、CustomProviders、QueueHealth、Integrations、FactoryProjects、Filesystem、SourceControl、ChannelIdentity、WorkItemComments 等见 mastracode/factory/src/factory.ts 的prepare()。沙箱平台、本地与 SANDBOX_PROVIDERMastra 平台沙箱使用MASTRA_PLATFORM_ACCESS_TOKEN或MASTRA_PLATFORM_SECRET_KEY配合MASTRA_PROJECT_ID与MASTRA_ENVIRONMENT_ID。如果希望命令直接运行在 Factory Server 所在机器上在.env中加入这个覆盖项FACTORY_SANDBOX_PROVIDERlocal使用本地沙箱时需要在该机器上安装 Git 和你的仓库构建工具。注意认证与存储可以继续使用 Mastra 平台——这就是每个服务独立替换的体现。另外还有一个单独的SANDBOX_PROVIDER设置它选择的是Mastra 平台沙箱所使用的后端与FACTORY_SANDBOX_PROVIDERFactory Server 自身如何执行命令是两个不同的开关。部署方式一部署到 Mastra 平台将 Factory Server 部署到你的 Mastra 平台项目npm run deployCLI 会输出部署后的 Factory URL。平台部署适合不想维护服务器基础设施、且已在使用平台服务的团队。方式二自托管Self-host在虚拟机或容器中把 Factory 作为持久化 Node.js 服务运行配置持久化存储如上述 Postgres设置MASTRACODE_PUBLIC_URL为公网HTTPS origin注意与PORT保持一致并同步更新任何认证/集成 App 的回调 URL通过部署环境提供你的提供商凭据构建并启动npm run build npm run start注意npm run build/npm run start依赖生成项目自带的 CLI 依赖需要保持其安装。自托管时依然可以使用 Mastra 平台服务例如认证与沙箱走平台、服务器本体自己托管。关于MASTRACODE_PUBLIC_URL它决定 OAuth 回调 URL 与认证重定向的 origin。默认值为http://localhost:4111Factory 服务器同时服务 UI 与 API如果你把 SPA 部署在独立 origin如 Vite 开发服务器的 5173 端口必须显式设置它。内置脚本速查脚本作用npm run dev启动本地 Factory Server含 UI 与 APInpm run check对 Factory Server 做类型检查npm run build构建服务器与 Factory UI 到.mastra/outputnpm run start运行生产构建npm run deploy构建并部署到 Mastra 平台npm run db:up/npm run db:down启动 / 停止可选的本地 PostgreSQL 与 Redis 服务故障排查运行时使用与项目package.json中engines.node匹配的 Node.js 版本当前要求 22.13.0。端口变更设置PORT并同步更新MASTRACODE_PUBLIC_URL同时更新你管理的所有认证/集成 App 的回调 URL。Issue 缺失检查仓库访问权限与Work Intake中的选择。GitHub 集成只有在仓库被绑定routing到某块看板后才会作为候选 feed 提供GitHub 上未路由的 Issue 默认进入 Work 板。也可以从 Intake 排障指南查看 intake 为空的相关处理。其它登录、提供商访问与沙箱错误参考官方的 Troubleshooting 与 Environment variables服务器设置文档页。进阶理解 Factory 的模块化架构如果你打算深入定制了解下面几个设计要点会很有帮助宿主接线模式宿主应用调用MastraFactory.prepare()然后构造Mastra实例new Mastra(...)必须留在宿主入口文件中Mastra 的 deployer 才能检测并打包它最后调用MastraFactory.finalize()。mastracode/web/src/mastra/index.ts 是规范的宿主示例。看板自定义通过defineBoard()可以声明自定义看板指定initialPhase必须为 resting、各 phase 的kind与 working phase 的role以及transitionPolicy转移策略可要求人工批准与onEnter/onExit生命周期处理器、tools.onResult工具结果规则。默认的 Work 与 Review 会自动安装设置includeDefaultBoards: false可只安装自定义看板但work与review两个 ID 是保留的。集成事件规则GitHub 与 Linear 集成的事件处理器如issueOpened、issueCommentCreated、issueObserved、issueClosed可以通过集成构造器的rules选项替换函数替换默认处理器或禁用null不再有全局 rules 对象——每个规则都有唯一所有者看板拥有生命周期/转移策略/阶段语义/工具结果规则集成拥有事件处理器。配置版本configVersion是运维维护的部署标签盖在转移审计行、延迟决策与会话 kickoff 头上用于把审计记录追溯到产生它的部署默认值为factory-config-v1。许可Mastra Factory 模板项目以Apache-2.0协议开源见 mastracode/mastra-factory/template/README.md 的 License 一节以及 mastracode/mastra-factory/package.json 中的license字段。【免费下载链接】mastraMastra is the modern TypeScript framework for AI-powered applications and agents.项目地址: https://gitcode.com/GitHub_Trending/ma/mastra创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表