无极开物Docs

从 Monorepo 克隆运行(仓库本地模式)

在 Kaiwu monorepo 根目录下使用 yarn 命令运行无栈本地栈、安装操作系统服务并配置 Tailscale。

如果克隆了 Kaiwu monorepo,你可以直接在仓库根目录下运行 yarn 脚本,处理大部分日常工作流。

注意:GitHub 仓库的默认分支是 dev,可能不够稳定。若希望在基于源码运行时获得更稳定的环境,建议签出 preview。

该模式为仓库本地(repo-local,即无栈)模式:它会在 ~/.KAIWU/stacks/⟦K28⟧/... 下为当前签出目录创建隔离的栈,且无需指定栈名称。

重要说明:仓库本地模式本质上仍是基于源码运行(source-backed)的流程。

  • yarn tui、yarn dev 以及仓库本地的 yarn start 均直接运行自当前签出源码。
  • 若需要栈本地生产构建产物(web + server + daemon)及激活的运行时快照,请搭配 hstack stack build ⟦K29⟧ --activate-runtime 使用具名栈。
  • 如果你想让第二个栈指向同一个签出目录,同时免受源码重新构建带来的变动影响,具名栈是理想选择。

前置准备

  • 启用 Node + Corepack
  • 在 monorepo 根目录下运行 yarn install

快速上手(开发模式)

cd /path/to/KAIWU
yarn dev

若要使用交互式终端 UI(TUI):

yarn tui

如果设备已被 Agent 任务完全占满,可使用救援调度优先级启动控制面:

yarn tui --rescue

救援模式支持 macOS 和 Linux。它会请求 sudo 仅提升 TUI 和栈控制进程的优先级;新启动的 Agent 会话则会恢复为较低的调度优先级,不会继承控制面的提速权限。以普通用户身份运行 Yarn 即可——该命令仅在执行 renice 时请求提权。

在有人值守的 TUI 启动等待过程中,即便超过了就绪检测间隔,也不会直接销毁栈。只要归属的启动生命周期仍处于活跃状态,该检测间隔就会生成一个可见的“仍处于启动中”检查点,TUI 将继续等待。退出 TUI 依然是唯一的取消机制。非交互式栈和服务命令则保留有限的超时时限。

包含移动端(启动带 --mobile 的开发栈,从而可以使用 Expo dev-client 二维码流程):

yarn tui:with-mobile

命令模型(仓库本地模式工作原理)

所有仓库根目录的运行时脚本均遵循以下包装器结构:

node ./apps/stack/scripts/repo_local.mjs <hstack-subcommand> [args...]

该包装器会自动处理以下关键操作:

  • 强制基于当前 monorepo 签出目录执行(不会重定向到全局安装)。
  • 使用与各签出目录隔离的栈名称(repo-⟦K30⟧-⟦K31⟧)。
  • 在 ~/.KAIWU/stacks/⟦K32⟧/... 下设置栈作用域的环境变量文件和 CLI 主目录。
  • 默认使用无栈模式的固定端口范围:
    • 服务端起始端口 52005
    • Expo 起始端口 18081
  • 在大多数运行时命令执行前,按需自动安装依赖。

包装器默认行为与便捷改写规则:

  • yarn tui 会变为 hstack tui dev(在未传入额外参数时)。
  • yarn stop 会变为 hstack stack stop ⟦K33⟧。
  • yarn mobile:install 会变为 hstack stack mobile:install ⟦K34⟧ --name="Kaiwu (Local)",除非显式传入 --name。

传递参数与获取帮助

使用 Yarn v1 的参数转发机制,配合 -- 传参:

yarn logs -- --component=daemon --lines 200 --no-follow
yarn auth login -- --method=mobile --no-open
yarn service:enable -- --auth-now -- --method=web --webapp=hosted

查看帮助:

yarn <script> -- --help
yarn service -- --help
yarn remote -- --help

在任意位置运行 Kaiwu CLI(基于当前仓库签出)

若希望在任意终端中运行的 hstack / KAIWU 命令都基于当前克隆版本执行(而非运行时全局安装版本), 可以激活仓库本地 shim:

yarn cli:activate

若要同时将 ~/.KAIWU-stack/bin 自动添加到 Shell 的 PATH(会修改 Shell 配置文件):

yarn cli:activate:path

类生产环境启动(本地)

yarn start 会以类生产环境(prod-like)模式运行本地栈(包括服务端、守护进程,以及可选托管的预构建 UI 产物包)。

在执行 yarn start 之前,先构建导出的静态 UI 产物:

yarn build
yarn start

默认情况下,yarn build 会将 Web UI 导出产物写入当前栈的根目录:

~/.KAIWU/stacks/<repo-stack>/ui

这里仅包含 Web 产物包。仓库本地模式目前不会为服务端和守护进程组装栈本地运行时快照。

若需要该级别的隔离,请改用具名栈:

hstack stack new prod-dev --repo=/absolute/path/to/this/checkout
hstack stack build prod-dev --activate-runtime
hstack stack env prod-dev set KAIWU_STACK_RUNTIME_MODE=prefer
hstack stack start prod-dev --runtime

系统服务(开机自启)

你可以安装系统服务,使 hstack start 在后台常驻运行(macOS 使用 launchd,Linux 使用 systemd)。

推荐做法(先构建 UI 再安装服务):

yarn service:install
yarn service:enable

首次认证(推荐)

如果是首次在该设备上运行栈,服务会保持服务端和 UI 运行,但守护进程可能会处于停止状态,直到完成认证。

适合无图形界面环境(打印二维码/深度链接,不会自动打开浏览器):

yarn service:enable -- --auth-now -- --method=mobile --no-open

适合笔记本电脑环境(使用托管 Web 应用呈现授权审批界面):

yarn service:enable -- --auth-now -- --method=web --webapp=hosted

注意事项:

  • 如果已启用服务,之后可通过 yarn auth login ... 完成认证——服务会自动检测凭据并启动守护进程。
  • 若栈的公网 URL 为 localhost / 127.0.0.1(或为空)且未启用 Tailscale Serve,在配置公网 URL 之前无法通过手机使用 --method=mobile(详见下文 Tailscale 部分)。

其他服务相关命令:

yarn service status
yarn service logs
yarn service tail
yarn service restart
yarn service:disable
yarn service:uninstall

Linux 系统服务(高级):

yarn service:install:system

Tailscale Serve(HTTPS 安全上下文)

如果使用 Tailscale,可以配置 tailscale serve 通过 HTTPS 暴露本地栈。

yarn tailscale:enable
yarn tailscale:url

其他 Tailscale 命令:

yarn tailscale status
yarn tailscale:disable

日志

持续跟踪日志(默认跟踪 --component=auto 选中的日志):

yarn logs

常用日志流(无需额外参数):

yarn logs:all
yarn logs:server
yarn logs:expo
yarn logs:ui
yarn logs:daemon
yarn logs:service

高级用法:向 hstack logs 传递参数(Yarn v1 需要使用 -- 才能将参数转发到底层命令):

yarn logs -- --component=server --follow
yarn logs -- --component=expo --follow
yarn logs -- --component=daemon --lines 200 --no-follow

环境变量(针对单个仓库本地栈)

yarn env list
yarn env set KEY=VALUE
yarn env unset KEY

这些修改会持久化保存在:

~/.KAIWU/stacks/<repo-stack>/env

移动端

安装 iOS Release 构建版本(执行完整流程,无需指定栈名称):

yarn mobile:install

其他仓库本地移动端工作流:

yarn mobile
yarn mobile-dev-client

命令参考(仓库本地运行时脚本)

本节汇总了 monorepo 根目录下提供的运行时命令,有意略过了面向维护者的测试、构建和发布脚本。

核心生命周期

Yarn 脚本底层命令用途常用参数
yarn devhstack dev以开发模式启动本地栈(编排服务端 + UI + 守护进程)。--restart, --mobile, --no-ui
yarn tuihstack tui dev (default)在分屏 TUI 中运行开发栈(或显式传入 hstack 参数)。--restart, --mobile, --no-browser, --rescue
yarn tui:with-mobilehstack tui dev --mobileTUI + 移动端 dev-client 就绪流程。在 -- 后追加额外的 TUI 参数
yarn buildhstack build为类生产环境启动/服务构建并导出 UI 资源。--tauri, --no-ui, --json
yarn starthstack start启动类生产环境本地栈。--restart, --mobile, --no-ui
yarn stophstack stack stop ⟦K35⟧停止该仓库本地栈,无需手动传入栈名称。在 -- 后追加栈停止参数

认证、守护进程与 CLI 入口

Yarn 脚本底层命令用途常用参数
yarn authhstack auth ...当前仓库本地栈的登录/状态/开发密钥认证辅助工具。status, login, seed, `--method=mobile
yarn daemonhstack daemon ...在栈作用域内管理守护进程(start、stop、restart、status)。status, restart, --identity=⟦K36⟧, --json
yarn KAIWUhstack KAIWU ...针对当前仓库本地栈上下文运行 Kaiwu CLI。透传提供商/CLI 参数
yarn cli:activatehstack init --cli-root-dir=⟦K37⟧/apps/stack --no-runtime --no-bootstrap将全局 hstack/KAIWU shim 指向当前克隆版本。--home-dir=...
yarn cli:activate:path同上 + --install-path功能同 cli:activate,并同步更新 Shell PATH。无(透传额外参数)

日志

Yarn 脚本底层命令用途常用参数
yarn logshstack logs --follow跟踪自动选取的日志流。--component=⟦K38⟧, --lines N, --no-follow
yarn logs:allhstack logs --follow --component=all跟踪所有组件日志(可用时优先使用 runner)。--lines N
yarn logs:serverhstack logs --follow --component=server仅服务端日志。--lines N, --no-follow
yarn logs:expohstack logs --follow --component=expo仅 Expo/Metro 日志。--lines N, --no-follow
yarn logs:uihstack logs --follow --component=ui仅 UI 网关日志。--lines N, --no-follow
yarn logs:daemonhstack logs --follow --component=daemon仅守护进程日志。--lines N, --no-follow
yarn logs:servicehstack logs --follow --component=service系统服务日志(launchd/systemd 输出)。--lines N, --no-follow

--component 的有效值包括:auto、all、runner、server、expo、ui、daemon、service。

环境变量

Yarn 脚本底层命令用途常用参数
yarn env listhstack env list打印当前仓库本地栈生效的持久化环境变量。--json
yarn env set KEY=VALUEhstack env set KEY=VALUE设置/更新持久化环境变量。多个 KEY=VALUE 键值对
yarn env unset KEYhstack env unset KEY删除持久化环境变量。多个键名
yarn env get KEYhstack env get KEY读取单个持久化环境变量。变量名
yarn env pathhstack env path显示栈环境变量文件路径。--json

系统服务(开机自启)

Yarn 脚本底层命令用途常用参数
yarn servicehstack service ...通用服务入口。install, enable, status, logs, tail, restart
yarn service:installyarn build && hstack service install先构建 UI,再安装服务 unit/plist 文件。无(通过 yarn service install -- ... 传入自定义参数)
yarn service:install:useryarn build && hstack service install --mode=user显式安装用户级服务。无
yarn service:install:systemyarn build && hstack service install --mode=system安装 Linux 系统级服务。yarn service install -- --mode=system --system-user=⟦K39⟧
yarn service:enablehstack service enable启用/启动持久化服务。--auth-now -- --method=...
yarn service:disablehstack service disable禁用/停止持久化服务。无
yarn service:statushstack service status显示当前服务状态。--json
yarn service:logshstack service logs输出近期服务日志(非实时跟踪)。`--mode=system
yarn service:tailhstack service tail持续跟踪服务日志。无
yarn service:restarthstack service restart重启受托管的服务。无
yarn service:uninstallhstack service uninstall移除服务 unit/plist 文件。无

服务日志输出行数默认为 120;可通过 KAIWU_STACK_LOG_LINES=⟦K40⟧ 覆盖该默认值。

Tailscale

Yarn 脚本底层命令用途常用参数
yarn tailscalehstack tailscale ...Tailscale Serve 通用命令入口。status, enable, disable, url
yarn tailscale:statushstack tailscale status查看当前 tailscale serve 状态。无
yarn tailscale:enablehstack tailscale enable为仓库本地栈的 URL 配置 tailscale serve。--json
yarn tailscale:disablehstack tailscale disable重置/禁用 tailscale serve 配置。无
yarn tailscale:urlhstack tailscale url打印解析后的 HTTPS Serve URL(若已配置)。无

移动端

Yarn 脚本底层命令用途常用参数
yarn mobilehstack mobile针对仓库本地栈上下文的 iOS 辅助工具。命令专有参数
yarn mobile:installhstack stack mobile:install ⟦K41⟧ --name=Kaiwu (Local)栈作用域应用构建的完整安装流程,无需指定栈名称。--name=..., --device=..., --configuration=...
yarn mobile-dev-clienthstack mobile-dev-client安装/管理共享的 hstack iOS dev-client 应用。--install, --device=..., --clean

高级工作流

Yarn 脚本底层命令用途常用参数
yarn providershstack providers ...列出/安装提供商 CLI。list, install --providers=...
yarn eashstack eas ...注入栈环境变量上下文的 EAS 构建包装器。`build --platform=ios
yarn setuphstack setup-from-source ...引导式配置预设(selfhost、dev、local-repo)。--profile=dev, --profile=local-repo, --json
yarn remotehstack remote ...通过 SSH 进行守护进程/服务端的远程配置辅助工具。daemon setup --ssh user@host, server setup ...
yarn self-hosthstack self-host ...托管中继运行时安装与生命周期管理(支持时会委托给 KAIWU relay host ...)。install, status, update, rollback, uninstall
yarn menubarhstack menubar ...SwiftBar 菜单栏集成。install, uninstall, open, mode, status

hstack 与 npx 的等价关系

是的,用户可以直接使用 hstack 或 npx 来运行许多工作流,但两者有一个重要区别:

  • yarn ⟦K42⟧ 会自动应用仓库本地包装器语义。
  • hstack ... / npx ... hstack ... 则以纯粹的 hstack 行为运行,除非自行配置了等效的环境变量或栈参数。

示例:

# Published CLI (works, but not repo-local wrapper semantics by default)
npx --yes -p @KAIWU-dev/stack@latest hstack dev

# Equivalent to repo-local wrapper behavior from this checkout
node ./apps/stack/scripts/repo_local.mjs dev

# Recommended for contributors: activate this clone, then use hstack everywhere
yarn cli:activate
hstack dev
© 乾元执中(南京)科技有限公司 · WUJI-Labs

On this page