资讯动态

no-mistakes 安装与升级完全指南:macOS / Linux / Windows 多平台部署、更新机制与卸载清理

发布时间:2026/9/16 12:36:29 来源:尧图企业网站定制
no-mistakes 安装与升级完全指南macOS / Linux / Windows 多平台部署、更新机制与卸载清理【免费下载链接】no-mistakesgit push no-mistakes项目地址: https://gitcode.com/GitHub_Trending/no/no-mistakes本篇技术指南以 no-mistakes 官方安装文档docs/src/content/docs/start-here/installation.md为核心骨架系统讲解该项目在 macOS、Linux、Windows 三大平台的全部安装方式官方安装脚本、PowerShell 脚本、go install、源码编译、前置依赖检查、后台守护进程daemon的托管与重启逻辑、no-mistakes update的版本发现与安全替换机制以及从仓库移除与彻底卸载的正确姿势。读完本文你将掌握 no-mistakes 从零部署到日常升级再到完整卸载的端到端技能并能理解其安装器与更新器背后的源码级设计取舍。安装前的整体认知no-mistakes 是一个「git push 门禁」gated push工具它拦截你对远端仓库的推送把提交送入本地裸仓库触发流水线由 AI 代理完成代码审查、测试、文档与 lint 检查通过后才真正推送到远端并创建 PR。因此它的安装产物不只是单个 CLI 二进制还包含一个常驻的后台守护进程daemon——CLI 负责交互daemon 负责监听推送事件并驱动流水线。这也是为什么所有官方安装路径在装完二进制后都会自动执行no-mistakes daemon restart如果守护进程重启失败安装命令本身会失败。从 install.sh 的末尾可以看到这一行为脚本下载解压并放置二进制后直接调用$BIN_PATH daemon restart /dev/nullPowerShell 版 install.ps1 同样以Start-Process ... daemon restart收尾并检查退出码非零则抛出异常中止安装。另一个需要提前理解的默认行为是遥测telemetry官方发布的正式版二进制内嵌了默认的自托管 Umami 遥测主机与网站 ID见 Makefile 中的DEFAULT_UMAMI_HOST与DEFAULT_UMAMI_WEBSITE_ID。如果你不希望上报任何数据安装后设置NO_MISTAKES_TELEMETRY0即可全局关闭也可用NO_MISTAKES_UMAMI_HOST与NO_MISTAKES_UMAMI_WEBSITE_ID覆盖默认收集端点。关于遥测的详细隐私边界哪些低基数事件会上报、哪些数据永不离开本机可阅读 docs/src/content/docs/reference/environment.md。macOS / Linux官方安装脚本macOS 与 Linux 使用同一份 POSIX shell 安装脚本curl -fsSL https://raw.githubusercontent.com/kunchenguid/no-mistakes/main/docs/install.sh | sh安装脚本做了什么结合 docs/install.sh 的源码这一行命令实际完成以下步骤解析平台与架构通过uname -s/uname -m归一化平台与 CPU 架构x86_64/amd64→amd64arm64/aarch64→arm64不支持的组合直接报错退出。发现最新版本脚本特意使用 GitHub 的/releases/latestHTML 重定向来获取最新 tag而不是调用/releases/latestREST API——后者对未认证请求有 60 次/小时/IP 的速率限制脚本注释里明确说明了这一点。更新器no-mistakes update也采用同样的「release-asset 清单而非 REST API」策略见下文。下载并解压下载no-mistakes-VERSION-os-arch.tar.gz到临时目录解压出二进制。放置二进制真实二进制被放在~/.no-mistakes/bin/no-mistakes可用NO_MISTAKES_INSTALL_DIR环境变量覆盖安装目录。建立符号链接在~/.local/bin或/usr/local/bin中创建指向真实二进制的no-mistakes软链。选择逻辑是若$HOME/.local/bin已在PATH中则优先使用它否则回退到/usr/local/bin后者可能需要sudo若安装目录与链接目录解析为同一路径则跳过建链。这一步的关键设计是未来no-mistakes update只重写用户目录下的真实二进制而不会去原地修改系统级二进制从而避免权限问题。重启守护进程执行no-mistakes daemon restart。守护进程的托管方式是有优先级的macOS 优先使用 launchd 托管服务Linux 优先使用 systemd 用户级服务若该路径不可用则回退为独立的分离式detached守护进程。重启失败则安装失败。安装后的目录结构安装完成后你的用户目录下会出现这些关键路径均位于~/.no-mistakes即默认数据目录可用NM_HOME覆盖~/.no-mistakes/bin/no-mistakes真实二进制~/.local/bin/no-mistakes或/usr/local/bin/no-mistakesPATH 中的软链~/.no-mistakes/config.yaml全局配置~/.no-mistakes/repos/id.git每个仓库对应的本地裸仓库gate~/.no-mistakes/worktrees/repoID/runID/流水线运行用的临时工作树~/.no-mistakes/state.sqlite本地状态数据库~/.no-mistakes/socket、daemon.pid、daemon.lock守护进程通信与管理文件WindowsPowerShell 安装Windows 上使用 PowerShell 一行命令安装irm https://raw.githubusercontent.com/kunchenguid/no-mistakes/main/docs/install.ps1 | iex结合 docs/install.ps1 的源码其行为与 Unix 版对应根据PROCESSOR_ARCHITECTURE判断arm64或amd64调用 GitHub REST API 获取最新 release 的tag_name。下载no-mistakes-VERSION-windows-arch.zip到临时目录并解压。将no-mistakes.exe移动到%LOCALAPPDATA%\no-mistakes\no-mistakes.exe。若该目录不在用户级PATH中则自动追加修改后需重启终端。以no-mistakes.exe daemon restart重启守护进程Windows 上优先使用计划任务Task Scheduler托管失败时回退到独立分离进程重启退出码非零则整个安装脚本报错。与 Unix 版一致通过官方脚本安装的正式版二进制同样内嵌默认遥测主机与网站 ID可用NO_MISTAKES_TELEMETRY0关闭或以上述两个环境变量覆盖。Go install从源码编译但免去克隆仓库如果你已经安装了 Go 工具链可以跳过安装脚本直接编译安装go install github.com/kunchenguid/no-mistakes/cmd/no-mistakeslatest这一路径有一个重要差异go install构建出的二进制不会内嵌遥测网站 ID。因此遥测默认处于关闭状态除非你后续在运行时显式设置NO_MISTAKES_UMAMI_WEBSITE_ID。这体现了遥测配置的三级优先级见 internal/telemetry/config_test.go 中的测试用例与 Makefile 的构建逻辑运行时环境变量NO_MISTAKES_UMAMI_HOST/NO_MISTAKES_UMAMI_WEBSITE_ID优先其次是 dev 构建时仓库本地.env文件中的同名变量最后是构建期通过-ldflags注入internal/buildinfo.TelemetryHost/TelemetryWebsiteID的嵌入值正式 release 构建默认使用https://a.kunchenguid.com与内置的默认网站 ID。go install产物因为没有第 3 层嵌入值所以遥测默认不启用。从源码构建make build 与 make install想要最新开发版或需要自定义构建参数时可从源码构建git clone gitgithub.com:kunchenguid/no-mistakes.git cd no-mistakes make build make installMakefile 中的构建细节看 Makefile 可以精确理解遥测参数的嵌入顺序UMAMI_HOST的取值优先级仓库本地.env中的NO_MISTAKES_UMAMI_HOST→ shell 环境变量UMAMI_HOST→ 默认值https://a.kunchenguid.comDEFAULT_UMAMI_HOST。UMAMI_WEBSITE_ID的取值优先级仓库本地.env中的NO_MISTAKES_UMAMI_WEBSITE_ID→ shell 环境变量UMAMI_WEBSITE_ID→ 默认网站 IDDEFAULT_UMAMI_WEBSITE_ID。最终通过-ldflags -X ...TelemetryHost... -X ...TelemetryWebsiteID...注入到internal/buildinfo包。make build产出bin/no-mistakes面向当前平台make install会先构建再把二进制安装到$(go env GOPATH)/bin/no-mistakesmake install后二进制位于$(go env GOPATH)/bin并依次执行daemon stop与daemon start完成守护进程切换。仓库还提供make dist交叉编译 darwin/linux/windows 六大平台amd64 arm64并打包成 tar.gz / zip正是官方安装脚本所下载产物的来源。前置条件与安装后体检no-mistakes doctor必选依赖git必需gate 机制完全建立在本地裸仓库、hook 与 worktree 之上。至少一个受支持的 Agent Runnerclaude、codex、grok、acli对应 Rovo Dev、opencode、pi、copilot、agy对应 Antigravity或者配置好的 Cursor/ACP runner如agent: cursor。ACP 类 runner 的具体要求见 docs/src/content/docs/reference/global-config.md。可选用于 PR 与 CIghCLIGitHubglabCLIGitLabNO_MISTAKES_BITBUCKET_EMAIL与NO_MISTAKES_BITBUCKET_API_TOKENBitbucket Cloud带azure-devops扩展的azCLIAzure DevOpsteaCLIGitea各托管平台host的完整 PR/CI 配置指引见 docs/src/content/docs/guides/provider-integration.md。用 doctor 完成体检安装完成后立即运行no-mistakes doctor它会检查原生 Agent 是否可用、cursor之类的 ACP 别名配置、各 provider 工具是否就位以及配置的全局 runner 能否成功启动一个校验门validation gate。这一点至关重要每一个校验门都要求有一个可运行的流水线 Agent否则会在第一个流水线步骤之前就失败。也就是说装好二进制只是第一步no-mistakes doctor全部通过才代表环境真正可用。升级no-mistakes update 的完整机制no-mistakes update # 升级到最新稳定版 no-mistakes update --beta # 订阅预发布版仅当有比当前稳定版更新的 beta 时安装 no-mistakes update -y # 非交互应答「daemon 可执行文件不一致」提示更新流程与安全设计根据 internal/update/update.go 与 internal/update/release.go 的实现更新流程是版本发现走 release-asset 清单而非 REST APIno-mistakes update从 GitHub 的 release-asset CDN 清单获取最新版本信息绕开未认证 REST API 的速率限制与安装脚本的设计一致。若设置了GITHUB_TOKEN或回退的GH_TOKEN更新器会以 Bearer 头认证 release 资产下载token 不会被打印、记录或持久化。下载并校验 SHA-256 校验和资产下载后先验证校验和不匹配则报checksum mismatch错误并中止对应 internal/update/release_test.go 的verifyChecksum should fail on mismatch用例。原子替换二进制校验通过后原子地替换现有可执行文件。重置守护进程替换后重启 daemon使其加载新二进制。更新器优先走托管服务路径launchd / systemd 用户服务 / Task Scheduler服务路径不可用或失败时回退到独立分离进程。更新时的三重守卫更新并非无条件执行源码与测试internal/update/update_test.go、internal/update/active_runs.go证实了以下守卫逻辑活跃流水线守卫若存在 pending 或 running 状态的流水线运行更新会拒绝重启 daemon并打印每个活跃运行的 ID、状态、分支与短 head SHA。必须显式传--force才能强行重启那些运行可能因此失败注意-y/--yes不会绕过这一守卫。相关测试见TestUpdaterRunRefusesWithActiveRunsAndListsThem与TestUpdaterActiveRunGuardAllowsForce。daemon 可执行文件不一致提示若正在运行的 daemon 由另一个二进制启动例如曾手动替换过更新仍会在替换前弹出确认提示-y/--yes用于非交互地应答这一提示。相关行为由confirmDaemonTakeoverinternal/update/daemon.go实现测试见TestUpdaterRunFailsWhenDaemonUsesDifferentExecutable与TestUpdaterRunReplacesDaemonWhenDifferentExecutableConfirmed。daemon 路径不可解析即中止如果无法确定 daemon 可执行文件路径更新在替换二进制之前就中止TestUpdaterRunFailsWhenDaemonExecutableCannotBeResolved。若二进制替换成功但 daemon 未能干净地回来新二进制仍然保持安装状态命令会报告 daemon 重置失败TestUpdaterRunFailsWhenDaemonResetFails、TestUpdaterRunFailsWhenDaemonResetLeavesDaemonOffline。后台更新检查除update命令本身与版本查询--version/-v保持无副作用外每次 CLI 调用都会自动执行一次后台更新检查获取 release-asset 频道清单将结果缓存到$NM_HOME/update-check.json发现新版本时在 stderr 打印一行通知。可通过NO_MISTAKES_NO_UPDATE_CHECK1关闭dev 构建非 semver 版本号会自动跳过该检查。更完整的行为说明见 docs/src/content/docs/reference/environment.md 的NO_MISTAKES_NO_UPDATE_CHECK一节。另外提醒update安装的是最新官方 release 二进制因此会携带默认遥测主机与网站 ID——如需关闭记得设置NO_MISTAKES_TELEMETRY0。从仓库中移除no-mistakes eject如果某个仓库不再需要门禁no-mistakes ejecteject会删除no-mistakesgit remote、删除对应的本地裸仓库、清理 worktree、移除数据库记录。它不会删除no-mistakes init生成的仓库级 Agent skill 文件这些文件在skills/目录中按需手工清理即可。eject 只影响单个仓库的 gate 接线不会卸载 CLI 本身。卸载完整清理指南卸载分三步停守护进程 → 删二进制 → 清状态no-mistakes daemon stop rm -f ~/.local/bin/no-mistakes /usr/local/bin/no-mistakes rm -rf ~/.no-mistakes注意daemon stop同样受活跃运行守卫保护存在运行中的流水线时会拒绝停止需先处理运行或使用--forceinternal/cli/daemon_lifecycle_test.go 验证了这一点。卸载时还需要处理分散在系统各处的托管服务与额外数据若在全局配置中配置了worktree_roots同时删除其放置在~/.no-mistakes之外的运行工作树目录。macOS删除~/Library/LaunchAgents/com.kunchenguid.no-mistakes.daemon.*.plistlaunchd 托管服务。Linux删除~/.config/systemd/user/no-mistakes-daemon-*.servicesystemd 用户服务。Windows删除no-mistakes-daemon-*计划任务Task Scheduler task。若曾用NM_HOME自定义过数据目录记得同时清理对应位置。至此 no-mistakes 才算真正从系统中移除干净。常见问题速查场景处理方式安装脚本下载很慢 / 被限流安装脚本与更新器均避开 REST 速率限制走/releases/latest重定向或 release-asset 清单安装后no-mistakes命令找不到确认~/.local/bin或/usr/local/bin在PATH中安装脚本结束时会提示no-mistakes doctor报 Agent 缺失安装任一受支持的 Agent runner或按 docs/src/content/docs/reference/global-config.md 配置 ACP runner如agent: cursor更新被活跃运行拦截等待运行结束或显式使用--force有运行失败风险不想上报遥测设置NO_MISTAKES_TELEMETRY0升级后希望重新接线仓库在仓库目录重新运行no-mistakes init可安全刷新 gate 与 Agent skill安装并体检通过后下一步就是初始化第一个仓库并跑通首次门禁推送完整流程见 docs/src/content/docs/start-here/quick-start.md。【免费下载链接】no-mistakesgit push no-mistakes项目地址: https://gitcode.com/GitHub_Trending/no/no-mistakes创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价