@north-light/cli

中文文档
0.3.573发布于 2026/11/02UNLICENSEDTypeScriptES Module

带有内存、插件和市场的代理运行时

中文使用文档
文档目录11 节
  1. 安装
  2. 快速启动
  3. 它是做什么的
  4. 它们是如何组合在一起的
  5. 从应用程序中使用路由器
  6. 在容器中运行它
  7. 延长克劳特
  8. 包
  9. 开发
  10. 安全
  11. 许可证

crouter—代理运行时:画布上的持久代理,由CLI或SDK驱动

crouter

npm node discord

crouter是Node.js的代理运行时。每个代理都是一个 节点:带有目标、上下文目录和分离进程(它的进程)的记录 代理),它承载模型会话。一个守护进程, crtrd,拥有每个节点的状态和生命周期。你用 crtr 命令行、终端查看器或类型化TypeScript SDK——这三者都是同一个本地API的客户端。每个模型会话运行 π开源编码代理工具;crouter在它周围添加守护进程、节点图、上下文系统和CLI。

关闭终端不会停止代理,正在等待的代理根本没有进程。节点可以产生子节点,向订阅它们的任何人报告,并共享当其他代理变得相关时显示的降价文档。路由器不是模型,也不绑定模型:您在安装期间登录到模型提供程序。它也不是托管服务;它在您的机器上运行,或者在您启动的容器中运行。

文档 · 开始 · 概念 · SDK · 插件 · 市场 · 不和

安装

npm install -g @north-light/cli
crtr

第一个 crtr 在机器上打开安装程序安装程序。它将您登录到模型提供者,然后提供配套软件包(包括官方插件市场)和系统依赖项,如tmux。设置后, crtr 打开与代理的对话,代理将提供有关路由器工作原理的简短介绍。 crtr sys setup 稍后重新打开安装程序。

要求:

  • Node.js 22.19及以上版本。这是pi包所依赖的下限;CI和Docker镜像运行Node 24。
  • Tmux,用于终端内查看器。第一次运行的安装程序提供安装它,并且 crtr 开始在外面tmux打开一个 crouter Tmux会话,在那里运行。
  • macOS是CI练习的对象。在Linux上,支持的路由是Docker镜像(参见 在容器中运行它)。

快速启动

从您希望代理在tmux外部工作的目录中, crtr 为你启动它):

crtr                                           # a conversation here
crtr . "Inspect this repository and report the failing tests."   # with a first message
crtr -c                                        # return to the latest conversation here
crtr -r <node-id>                              # reopen one conversation by id (`crtr -r` alone picks)

输入发送消息;Alt+Enter (Mac上的选项+Enter)或Shift+Enter开始新行。

要在不接管终端的情况下从脚本或其他代理启动代理,请创建一个根节点:

crtr node new --root "Inspect this repository and report the failing tests."

--root 创建独立节点并启动其代理。在tmux内部,该命令为它打开一个查看器窗格;在tmux外部,它打印节点id,你自己打开查看器:

crtr surface attach to <node-id>

观众不是代理人。关闭它,节点继续工作;稍后为保存的对话再次打开它。查看画布上的每个节点:

crtr canvas dashboard     # the subscription tree as ASCII: status, kind, context size
crtr canvas browse        # interactive navigator with tabs and search
crtr canvas attention list  # nodes waiting on you

这个 第一次会议指南 按顺序进行讲解。

它是做什么的

每个项命名执行该操作的命令。 crtr <command> -h 打印出他们所有人的确切合同。

节点和委托。 crtr node new 创建一个子进程并订阅其父进程;这个孩子报告说 crtr push update 以 crtr push final,这个报告唤醒了父母。 --worktree <branch> 给子进程自己的git工作树 crtr/<node-id> 分支, --fork-from 从另一个节点的会话启动它,并且 --output-schema 使其最终结果成为根据模式验证的JSON文档。决定其工作划分为独立部分的节点运行 crtr node promote 成为了一名管弦乐演奏家。

等待不需要付出任何代价。 无事可做的节点结束了它的回合并处于休眠状态:没有代理,没有模型调用。一个孩子的报告,一条信息(crtr node message send),一个人类的回答,或者一个cron唤醒它的对话完好无损。如果代理崩溃,守护进程保留节点的行、会话、等待和收件箱; crtr canvas revive --all 重新启动后重新连接每个断开连接的节点。

画布上。 每个节点、文档、后台作业和所有者都是一个具有名称的对象。 crtr canvas read, list, search 和 edges 努力解决所有问题。阅读或编写对象使您成为观察者,因此稍后的编辑和报告将到达您的收件箱。 crtr canvas history 搜索目录中过去的运行被告知和说了什么。

文档。 知识(咨询)和偏好(遵循)是节点、repo、配置文件、用户或插件拥有的标记文档。传递规则决定是否向代理显示文档的名称,它的一行“读取时”预览,或者它的整个主体——在启动时,当它读取文件时,或者在命令之前。 crtr doc write 和 crtr doc edit 把它们写; crtr sys context 解释为什么载入或不载入; crtr sys sync 导入 CLAUDE.md, AGENTS.md, .claude/rules 还有技能包。

人类的收件箱。 crtr human send 将键入的页面(选择器、表格、自由文本)放入收件箱;您的答案被传递回请求的节点。 crtr human review 打开带有固定注释的文档以供查看 crtr human show 将文件保存在tmux窗格中。

调度。 crtr cron add 存储守护进程每次或每次运行的bash命令(--at, --every),并可以将其输出路由到节点的收件箱或新节点(--sink node:<id> / spawn:<kind>). 退出75的命令被视为尚未合格,下一个节奏将重新检查它。

范围。 节点或远程令牌携带允许列表(crtr:llm, crtr:act, crtr:schedule, crtr:memory:read:user,…),守护进程在执行操作的路由上检查。 crtr sys connect --app <id> --scopes … 生成一个令牌,其列表包含应用程序可以创建的所有内容。

插件和市场。 市场是一个git插件仓库; crtr pkg market add <git-url> 注册一个及 crtr pkg plugin install <marketplace>/<plugin> 从它安装。插件可以添加命令(本地可执行文件或HTTP)、文档、代理类型和二进制文件。 crtr custom-object register 使外部服务成为画布上的可观察对象。

它们是如何组合在一起的

flowchart LR
  CLI[crtr CLI] --> API["/v1 API"]
  SDK[SDK application] --> API
  Viewer[Terminal viewer] --> API
  API --> Daemon[crtrd]
  Daemon --> Canvas[Canvas state]
  Daemon --> Broker[Detached broker per node]
  Viewer -. live session .-> Broker

crtrd 是唯一的画布状态的作者和唯一的经纪人的启动器。命令行、查看器和SDK应用程序调用其 /v1 API;它们都不会打开画布数据库或启动自己的引擎。在一台机器上,他们使用一个专用的Unix套接字。浏览器或远程进程使用TCP侦听器和承载令牌(crtr sys connect)。

代价是:必须运行一个守护进程(CLI和SDK在第一次使用时启动它),并且远程客户机上的网络故障导致请求失败,而不是重放请求。它所购买的是状态的一个所有者,因此节点比终端、查看器或创建它的应用程序更长寿。 为什么是守护进程? 涵盖了推理。

从应用程序中使用路由器

npm install @north-light/sdk zod
import Crouter from '@north-light/sdk';
import { z } from 'zod';

const client = new Crouter(); // local daemon; started on first request if it is not running

const run = await client.nodes.parse({
  prompt: 'Read package.json and return its name and version.',
  cwd: '/absolute/path/to/project',
  output_schema: z.object({ name: z.string(), version: z.string() }),
});

if (run.kind === 'result') console.log(run.output_parsed.name, run.output_parsed.version);
else console.error(run.reason, run.detail);

nodes.parse 返回类型化结果或显式失败;它永远不会返回需要解析的文本。 nodes.stream 将运行的文本和工具调用管道到UI。看到 SDK文档 和 食谱.

在容器中运行它

docker run --cap-add SYS_ADMIN --cap-add NET_ADMIN --security-opt seccomp=unconfined --security-opt apparmor=unconfined \
  -e CRTRD_TOKEN=<a-secret-you-choose> -p 7777:7777 ghcr.io/northlight-systems/crtrd
curl -H "Authorization: Bearer <a-secret-you-choose>" http://localhost:7777/healthz

图像运行 crtrd TCP背后的无头;每个请求都需要承载令牌。它的沙盒启动程序需要两个功能和不受限制的seccomp/AppArmor配置文件。它不包含模型凭据,所以在创建运行之前给代理一个。挂载指定卷 /volume 以便在重新启动时保持画布和已安装的凭据。从节点, @north-light/env-docker 为您启动和停止此容器。详情见 docker/README.md.

延长克劳特

应用程序将类型化操作公开为本机操作 crtr 命令与 @north-light/plugin定义一次命令树,它就会生成HTTP处理程序和它的归档文件 crtr pkg plugin install --endpoint <url> --name <name> 读取。这个 插件文档 涵盖命令、参数、输出、错误和部署。

现成的插件就在 官方市场: exa-search, capture, tsym, bird, github-asset, dev, vercel, fly, railway, cloudflare等等。第一次运行的安装程序提供注册它。

包

包它是什么?来源
@north-light/cli这个 crtr CLI, crtrd Daemon和终端查看器src/
@north-light/sdk类型节点和浏览器客户端:运行、流、结果、文件、bash、内存packages/crouter-sdk
@north-light/plugin从一个类型的命令树编写HTTP插件packages/crouter-plugin
@north-light/api这个 /v1 API合同: CrtrClient, dto,路由,错误packages/crouter-api
@north-light/env-docker开始或连接到 crtrd 容器packages/crouter-env-docker
@north-light/identity验证访问令牌并评估作用域packages/crouter-identity

大多数应用程序只需要 @north-light/sdk. 其他存储库内容: docs/ 是文件的来源, apps/docs 是TanStack Start网站,在crouter.docs.northlight.ai上发布。 docker/ 构建 crtrd 形象, examples/ 包含SDK配方和本地主机演示。

开发

源存储库是北极光系统私有的;本节是针对其开发人员的。

git clone [email protected]:Northlight-Systems/crouter.git
cd crouter
npm ci
npm run build

考试分三车道进行——单位(npm test),集成,以及针对编译的接缝 dist/. 用 npm run test:isolated,它将签出复制到临时的 HOME 首先:该套件拒绝针对您的真实帐户运行,因为运行时安装程序和项目范围查找可能会写入它。 test:isolated 使用 /usr/bin/lockf 和 /Users/Shared,所以它运行在macOS上。

npm run test:isolated                    # unit lane
npm run test:isolated -- integration seam
npm run test:isolated -- path/to/file.test.ts

文档站点运行于 apps/docs 与 npm run dev. CONTRIBUTING.md 有北极光系统开发人员的下拉请求约定。

安全

要报告漏洞,请执行以下操作 SECURITY.md 而不是公开问题。

许可证

路由器是专有软件。版权所有2026 Northlight Systems版权所有。源存储库是私有的;这些包以编译后的、缩小的构建版本的形式发布到NPM。看到 许可证.

版本与发布记录

@north-light/cli 共发布 161 个版本,首次发布于 2026/10/10;过去 12 个月发布了 161 个版本。

版本发布日期距今
0.3.573latest2026/11/021 天前
0.3.5722026/11/021 天前
0.3.5712026/11/021 天前
0.3.5702026/11/021 天前
0.3.5692026/11/012 天前
0.3.5682026/11/012 天前

关于 @north-light/cli 的常见问题

@north-light/cli 是什么?

带有内存、插件和市场的代理运行时

如何安装 @north-light/cli?

在项目目录运行 npm install @north-light/cli,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 crtr、crtrd、crouter、crtr-launcher,可以用 npx crtr 直接运行。

@north-light/cli 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@north-light/cli 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@north-light/cli 可以商用吗?

@north-light/cli 使用 UNLICENSED 许可。作者声明为 UNLICENSED,即不授予公开使用许可(与公共领域的 Unlicense 不同)。使用前需获得作者授权。以上为概括,不构成法律意见,请以许可原文为准。

@north-light/cli 还在维护吗?

最新版本 0.3.573 发布于 2026/11/02(1 天前);至今共发布 161 个版本,其中过去 12 个月发布了 161 个;首次发布于 2026/10/10。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。