① 国际化字典
t/T 根据当前语言返回界面文案。优点是单文件可运行;代价是新增语言时源码膨胀,并且两种实现都要同步。
面向完全不懂计算机的人,用不到 750 行代码完成“选择 AI CLI → 安装 → 验证 → 把后续指导交给 AI”的跨平台闭环。本页从产品意图、源码结构、状态机、安全边界、测试到学习路线,逐层拆开。
它是一座很短的桥:前半段降低安装门槛,后半段把电脑治理的主导权交给刚装好的 AI。
新手知道 AI CLI 有用,却卡在终端、脚本、环境变量、权限与“装完以后做什么”。
用双击入口 + 中英状态机,逐步显示选择、来源、确认、安装、验证与下一步。
安装不是终点。最后生成一段带安全规则的交接 Prompt,让 AI 成为长期电脑助手。
“一次性脚本”被设计成“人类把控制权安全地交给 AI 的仪式”。
没有框架、数据库、包管理器和构建步骤。三个薄入口把用户导向两份核心脚本;测试用 curl 替身隔离真实网络。
适配双击或系统终端,定位脚本目录,然后把控制权交给对应状态机。
语言、网络探测、供应商选择、确认、安装、验证、错误恢复与 AI 交接。
下载到内存后执行;真正的软件安装行为由供应商脚本决定。
ai-cli-kickstarter/ ├── README.md ├── Start-macOS.command ─┐ ├── Start-Linux.sh ──────┴─→ kickstarter.sh ├── Start-Windows.cmd ─────→ kickstarter.ps1 ├── tests/ │ ├── run-tests.sh │ └── stubs/curl ├── .github/workflows/ci.yml ├── .gitignore └── LICENSE
README.md产品说明、使用方式、信任模型、开发命令与 10 个后续 Mission Prompt。kickstarter.shmacOS/Linux 主逻辑,184 行;检查 OS 与 curl,并通过 bash -c 执行下载内容。kickstarter.ps1Windows 镜像实现,209 行;要求 PowerShell 5+,用 Invoke-Expression 执行下载内容。Start-*每个仅 3 行。macOS/Linux 用 exec bash;Windows 使用 NoProfile + ExecutionPolicy Bypass。tests/真实驱动 Bash 状态机,但把 HOME、PATH、curl 和 stdin 都置于可控环境。ci.ymlShellCheck、Ubuntu/macOS 冒烟测试、Windows PSScriptAnalyzer 三路质量门禁。入口文件不用解释复杂命令;状态机一次只问一个问题;失败后提供“重试 / 换工具 / 退出”三条明确路径。
Bash 与 PowerShell、中文与英文文案都写在代码里。新增状态、供应商或语言时,需要人工同步多个位置。
每一屏对应一个状态。用户选择和外部结果只负责改变 STATE,随后进入下一轮循环,这让流程可解释、可恢复、也容易测试。
README 展示上面 8 个主状态;源码实际还包含 ERROR 与 DONE。
<command> --version;找不到命令只提示重开终端,仍继续交接。核心数据 Version 0.1.0 State 当前流程状态 Language zh / en GoogleStatus 三值网络提示 ProviderName UI 展示名 CommandName 验证与启动命令 InstallUrl 官方脚本地址 LastError 错误说明
Bash 与 PowerShell 互为镜像,但不是逐字翻译:系统能力、下载 API、PATH 模型和进程启动方式不同。
| 环节 | macOS / Linux | Windows | 理解重点 |
|---|---|---|---|
| 用户入口 | Start-macOS.command / Start-Linux.sh | Start-Windows.cmd | 先切到文件所在目录,避免从别处启动时找不到主脚本。 |
| 最低环境 | Bash + curl;OS 必须是 Darwin/Linux | PowerShell 5+ | 不安装项目自身依赖,依赖系统自带能力。 |
| 环境隔离 | 当前 Shell,set -u | -NoProfile,减少用户 Profile 干扰 | 两边都显式处理输入/网络失败,而不是依赖全局“遇错即停”。 |
| 网络探测 | curl:连接 4 秒,总计 7 秒 | Invoke-WebRequest:7 秒 | 204=可达,无响应=不可达,其他 HTTP=不确定。 |
| 安装下载 | curl:连接 10 秒,总计 60 秒 | Invoke-WebRequest:60 秒 | 内容保存在内存变量,不落临时文件。 |
| 动态执行 | bash -c "$installer" | Invoke-Expression $installer | 简单,但把供应链信任直接扩展到远端脚本。 |
| PATH 刷新 | 补入 local/npm/bun/cargo 常见目录 | 合并进程 + Machine + User PATH,并补 CodeBuddy | 只刷新当前会话,帮助马上识别新命令。 |
| 立即启动 | exec 替换当前进程 | & $CommandName 调用后返回 | Unix 成功启动后不会再回到 DONE;Windows 会。 |
| 选择 | 定位 | 命令 | macOS / Linux 来源 | Windows 来源 |
|---|---|---|---|---|
| 1 · 默认 | Qwen Code 大陆友好;独立安装器 | qwen | qwen-code-assets…/install-qwen-standalone.sh | qwen-code-assets…/install-qwen-standalone.ps1 |
| 2 | Kimi Code 首次启动后输入 /login | kimi | https://code.kimi.com/install.sh | https://code.kimi.com/install.ps1 |
| 3 | CodeBuddy CLI 腾讯生态;官方文档标为 Beta | codebuddy | https://www.codebuddy.cn/cli/install.sh | https://www.codebuddy.cn/cli/install.ps1 |
推荐顺序不是从第 1 行读到最后,而是先认清“功能积木”,再看状态循环怎样拼装它们。
t/T 根据当前语言返回界面文案。优点是单文件可运行;代价是新增语言时源码膨胀,并且两种实现都要同步。
固定访问 google.com/generate_204,把复杂网络现象压缩成三值提示。结果与安装选择解耦。
一个数字映射为 ProviderName + CommandName + InstallUrl。这三个字段贯穿确认、下载、验证与启动。
安装器可能刚把命令放到新目录;当前终端不会自动刷新,所以项目主动补齐常见路径再验证。
不是帮助文本,而是下一阶段的“行为合同”:解释、备份、先问、验证、单独测网络、避免过载。
每轮只执行一个状态分支,再更新状态。逻辑集中、跳转显式,因此可以用脚本化 stdin 驱动真实流程。
kickstarter.sh 与 kickstarter.ps1 顶部都写明彼此镜像;README 也要求修改状态或文案时同步两份。这是当前架构最重要的维护约束。
项目没有隐藏这一点:它把三家官方远程脚本下载到内存后直接执行。用户确认的是 URL 和供应商信任,不是某个经过固定校验的脚本版本。
“官方域名”降低了误下载风险,但不等同于“内容已被本项目验证”。把它当作透明的引导器,而不是安全沙箱。
项目把“安装成功”改写成“能力交接”:先给 AI 一套行为边界,再通过 Mission Prompt 把模糊愿望变成可完成任务。
首问:检查当前电脑,并告诉我下一步最值得做什么。
建立必要工具链,并围绕编程、写作、研究、终端、浏览器与 Agent 选择能力。
先盘点和出方案,再逐项确认;清理明确要求未经确认不删除,并优先可恢复方式。
局域网审计保持只读;跨地点网络先比较架构,选定后再逐步实施。
先识别值得自动化的重复工作;长期模式强调最简单可靠方案和渐进式教学。
每个 Mission 都包含目标、范围、权限边界和交付顺序,减少 AI 自作主张;“先列清单、经确认再修复”是最常见控制结构。
角色 + 用户水平 + 目标 + 范围 + 禁区 + 验证 + 下一步。这比一句“帮我优化电脑”稳定得多。
测试不调用任何真实供应商。它通过脚本化输入、临时 HOME、最小 PATH 和 curl 替身,让真实 Bash 逻辑在安全环境中跑完整分支。
精确模拟选择、确认、退出和 EOF。
避免读取真实配置或找到已安装的 CLI。
网络探针固定 204;安装下载可成功或失败。
15 秒超时捕捉无限循环回归。
| 场景 | 断言 | 它防住什么 |
|---|---|---|
| 一开始 stdin 关闭 | 非零退出;不运行安装器 | 无输入时死循环或误装。 |
| 选语言后 EOF | 非零退出;不运行安装器 | 把 EOF 当成默认选择或默认同意。 |
| 下载失败 | 显示失败与下载原因;不进 VERIFY;可退出 | 空脚本被当作成功、错误状态不可恢复。 |
| 模拟安装成功 | 执行桩;进入 VERIFY;提示命令未出现;正常退出 | 状态链断裂、验证失败导致异常退出。 |
| 确认页拒绝 | 不运行安装器;正常退出 | 用户拒绝后仍执行外部脚本。 |
项目测试未覆盖 ShellCheck、PSScriptAnalyzer 和 Windows 功能流程;CI 配置包含前两项,但 PowerShell 目前仍只有静态 lint。
VERIFY 找不到命令时只显示提示,随后仍进入 HANDOFF,用户也可以正常退出。因此退出码代表启动器流程结束,不证明新 CLI 已可用;旧的同名命令还可能造成验证假阳性。
所有提交发生在 2026-07-18。演进顺序不是堆功能,而是连续修正失败、授权、PATH、跨平台一致性、测试与文档。
6e7c0db初始导入导入 v0.1.0 的完整跨平台启动器。24526aa错误处理Bash 把下载失败明确转为 ERROR。230fa86授权安全stdin 关闭时退出,不再无限循环或推定同意。0afce62简化去除无用变量、复用同意判断、报告启动失败。24aac32Windows保留会话 PATH,并验证下载内容非空。adfcc59一致性增加 PowerShell 版本门禁,对齐网络探测与同意语义。f98cf16入口稳健切换脚本目录失败时立即退出。12a2324测试加入 Bash 状态机离线冒烟测试。85a7213自动化加入 Linux/macOS/Windows 三路 CI。353d846开放许可加入 MIT License。3418633透明度补 SmartScreen、信任模型、开发流程和许可证说明。45a4ef1命名把 Windows PATH 函数改名为更准确的 Sync-SessionPath。f3ef5b6产品闭环加入安装后的 Mission Prompt 库。9370aef兼容性clear_screen 改用显式 if,成为本报告快照提交。不要急着逐行背 Shell。每一回合只回答一个问题,并留下一个可以复述或验证的结果。
exec、NoProfile、ExecutionPolicy Bypass 的局部含义。| 问题 | 准确答案 |
|---|---|
| 它内置了 AI 吗? | 没有。它安装外部 AI CLI,并输出后续交接 Prompt。 |
| 会把三款工具都装上吗? | 不会。一次只选择一款,回车默认 Qwen。 |
| Google 不通就不能继续? | 不会拦截。探针只是提示,三家服务仍需分别测试。 |
| 只想看看,确认页按回车安全吗? | 确认页的空输入等于 Yes;只参观应明确输入 n。 |
| 启动器会审查远端脚本吗? | 不会。它展示初始 URL,但不做内容预览、版本固定、哈希或签名校验。 |
| VERIFY 失败等于安装失败? | 不一定,可能只是 PATH 尚未刷新;项目会继续显示 handoff。 |
| 测试会真的联网安装吗? | Bash 冒烟测试不会;curl 已被本地 stub 替换。 |
| 这是成熟大型工程吗? | 不是。它是同日快速加固的小型 v0.1.0,适合学习清晰产品闭环与状态机。 |
以下把源码事实与评审建议分开:左边是已经做好的工程选择,右边是若继续演进最值得优先投入的方向。
这个项目的价值不在技术复杂度,而在“把用户从未知状态安全地推进到可自助状态”。结构、状态机、测试和 Prompt 都围绕同一个用户旅程,没有多余层。
报告基于 main 分支提交 9370aef 的只读快照,并与 GitHub 仓库页交叉核对。没有运行任何真实安装器。
README.md: 1–33目标用户、支持范围、三平台用法。README.md: 35–140通用前置与 10 个 Mission Prompt。README.md: 142–171状态机、网络探测、信任模型、开发流程。kickstarter.sh: 1–184Bash 完整实现;核心状态循环为 131–184。kickstarter.ps1: 1–209PowerShell 完整实现;核心状态循环为 124–209。tests/run-tests.sh: 1–96隔离策略、五场景、14 个断言与超时机制。tests/stubs/curl: 1–12Google 204、下载成功/失败模拟。ci.yml: 1–32三路 CI 与 PowerShell lint 排除项。git log: 14 commits2026-07-18 的演进顺序与修复意图。