连接您的代码(/projects/connect/code)可将aiKit项目与您已有的Git代码库(例如GitHub上的Laravel应用)以及其运行位置关联起来:您自己的服务器或aiKit托管。此后,您只需在项目的托管标签页中用日常语言提出更改要求。aiKit的AI会编辑代码副本、运行项目的检查、向您展示差异和预览,并且只有在您团队中的某人批准后才会部署。每次部署都是一个编号的发布版本,您可以一键回滚。您的代码库仍是唯一可信来源,您的服务器也将继续像以前一样部署。
连接您的代码 →为项目命名,然后粘贴代码库地址(从GitHub绿色的Code按钮获取)以及网站运行所基于的分支,通常为main。选择aiKit访问代码库的方式。GitHub令牌:您在GitHub上为此单一代码库创建的细粒度令牌,并将Contents设置为Read and write;它与https://地址配合使用。部署密钥:仅为此代码库创建的密钥对,将其公钥添加到代码库的Settings、Deploy keys下,并勾选Allow write access;它与git@地址配合使用。公共代码库:只读,因此已批准的更改无处保存;仅用于查看。
您需要自行粘贴令牌或密钥。它会加密存储在aiKit的引擎中,且永远不会再次显示给任何人。页面只会显示指纹。连接代码库时,系统会将代码复制到引擎,并识别项目类型(Laravel、JavaScript或静态文件)。代码库中的任何内容都不会被更改。
您已有的项目也可以连接:在其托管标签页上,所有者会看到连接您的代码。
您自己的服务器:网站保持原样。请输入服务器地址、SSH端口(通常为22)、aiKit使用的登录账户(设置步骤会创建名为aikit的账户)、网站文件夹(对于Laravel Forge网站,为/home/forge/your-site.com)、网站已在使用的部署命令(通常为bash scripts/deploy.sh),以及每次部署后必须响应的页面,每行一个完整地址。粘贴服务器登录的私钥(在设置步骤1中创建)。保存并检查连接。
aiKit首次连接服务器时,会显示服务器指纹并询问:这是您的服务器吗?请将其与服务器在设置步骤6中打印的内容进行比对。只有在两者完全一致时才点击匹配,然后连接。此后,该地址上的其他服务器将被拒绝。检查通过后,页面会显示服务器当前运行的版本。
aiKit托管:aiKit自行构建和提供代码服务,起步时提供免费地址。最适合网站和前端。
在服务器设置下,页面列出了八个可复制粘贴的步骤,并已填入您的值;每个步骤都有复制按钮。步骤1和8在您的电脑上运行,步骤2至7在服务器上以具有sudo权限的用户身份运行。
它们会创建:一个没有密码且没有Shell的登录账户(步骤2)。其唯一密钥被限定在一个小型网关脚本中(步骤3和5),该脚本只接受两个命令:status(查看运行的版本以及网站是否处于维护模式)和针对某个确切提交的deploy。Deploy通过一条sudo规则以网站自身的用户身份运行,检查GitHub上的分支是否指向该确切提交,然后原样运行您现有的部署脚本。步骤4设置文件夹权限,使该登录账户只能访问网站文件夹:不能访问同一主目录中的其他网站,也绝不能访问.env。步骤7测试所有内容,并说明每一行应显示什么;步骤8在您将其密钥粘贴到aiKit之前,从您的电脑测试该登录。
如果一台服务器还托管其他企业的网站,这一点至关重要:aiKit登录账户只能部署这一个网站,无法部署其他任何网站。网站代码仍以网站自身用户的身份运行,与您自己从GitHub部署时完全相同,这也是每项更改都经过审核、且高风险文件受到保护的原因。
顶部有四个方块。代码库:代码库、分支、最新提交以及项目类型。运行位置:您自己的服务器(显示登录账户以及上次响应时间)或aiKit托管。当前发布版本:网站正在运行的版本、发布者和发布时间。页面:在上次检查时,必须响应的页面中有多少已正常响应;立即检查会再次访问这些页面,任何未响应的页面都会列在下方并显示其返回内容。
方块下方是:请求更改(或当前打开的更改)、发布版本、更改日志、受保护文件,以及(仅限所有者)连接。
输入需要更改的内容,注明页面及您希望看到的效果,然后点击进行更改。卡片会变为更改 #1,并实时显示进度:获取最新代码、AI读取和编辑的文件,然后是每项检查。AI只编辑文件,不运行任何命令。每个项目同一时间只能有一个更改处于打开状态,每次请求都计入该项目的AI用量限额。
完成后,您会看到:请求内容及提出人;AI说明其所做的操作;每项检查,并带有对勾或叉号及其输出;已检查页面的预览按钮;标有已添加、已更改或已删除的文件,适用时还会显示受保护标记;以及逐个文件的差异,绿色表示新增行,红色表示删除行。该差异正是将被提交和部署的内容。
点击“批准并部署”(仅限所有者和构建者)后,更改会提交到分支,提交信息会注明谁提出请求、谁批准。随后推送(绝不强制推送:如果期间有人推送了内容,更改会标记为“已过期”,且不会部署)、部署并检查页面。“放弃”会在确认后丢弃更改,未进行任何部署。审阅者可以查看全部内容,但两个按钮都无法点击。
“通过检查后”是“连接、检查与审阅”下的一项设置。默认选项是“等待批准”。“自动部署”仅在所有检查都通过且没有修改受保护文件时,才会自动部署更改;其他情况仍需等待。
对于 Laravel 项目,检查内容包括:每个修改过的 PHP 文件都能正常解析(php -l);每个 Blade 视图都能编译(php artisan view:cache);前端能够成功构建(npm run build);应用能在测试运行环境中启动,使用一次性的 SQLite 数据库,并从代码库执行迁移和填充数据,同时“页面”中列出的每个测试页面都必须返回 200。这些检查在 aiKit 的引擎上运行,绝不会在您的服务器上或针对您的正式数据库运行。项目的 .env 文件永远不会被复制或读取;测试运行使用的是一次性设置。
检查失败会阻止“批准”。只有所有者可以勾选“部署”,即使检查失败,前提是失败原因不影响正式网站。
“预览”会在新标签页中打开测试运行中的修改版应用,测试数据和表单已关闭。它在最后一次使用 15 分钟后自动停止,并在更改被批准或放弃时结束。
AI 不会改动受保护的文件。列表默认包含:已在正式网站上运行过的迁移(正式版本中的每个迁移,因为每次部署都会运行它们)、新的迁移(下次部署时会更改正式数据库)、部署脚本,以及依赖文件(composer.json、composer.lock、package.json、package-lock.json)。每一项都会说明原因。所有者可以添加文件或文件夹(例如 config/** 表示 config 下的所有内容)并填写原因,也可以删除条目,然后点击“保存受保护的文件”。
如需有意修改受保护的文件,所有者需勾选本次请求的“允许修改受保护的文件”。此时更改会显示其修改了哪些受保护文件,并且只有所有者可以批准,需勾选“是,部署对受保护文件的更改”。未勾选任何选项的构建者无权访问受保护文件。
.env 文件、私钥和 auth.json 属于更严格的级别:永远不会被读取、修改或包含在差异中,且任何人都无法关闭此保护。
aiKit 首次连接您的服务器时,会将服务器当前运行的版本记录为发布 1,即“aiKit 之前”,因此即使是 aiKit 的首次部署也可以回滚。此后,每次部署都会形成一个编号的发布:更改(已批准的更改,点击名称可打开该更改)、重新部署或回滚,并显示其提交、执行人、状态(正在运行、较早版本、正在运行但页面出错、部署失败)、成功响应的页面数量以及部署日志。aiKit 会保留最近 5 个版本。
“部署最新代码”会在确认后部署分支上当前最新的内容,例如有人直接推送了修复时使用。
“回滚到此版本”针对较早的发布,会创建一个新的提交,其文件与该发布完全一致,推送该提交,并以正常方式部署,然后检查页面。历史记录从不被改写,因此回滚本身也可以被回滚。
列出每个请求及其编号、请求内容、提出人、批准或放弃的人、时间以及当前状态。点击某一行即可打开该更改,查看其检查结果和差异;地址会带有 ?change=<id>,因此您可以将链接分享给团队。
想快速问个具体问题?查看常见问题。