@computesdk/loops

中文文档
0.1.19发布于 2026/11/04MITES Module近 30 天下载 3987

不生活在终端的人的循环:一个指令启动一个本地主机UI,运行,监视并引导您回收物中的登山代理.

中文使用文档
文档目录16 节
  1. 命令、提供者和聊天模式
  2. 每个 VM 一个服务器
  3. 运行它
  4. 导航链接
  5. 附着在另一台机器上的服务器
  6. 它的构成
  7. 为什么一个事件流 而不是民意调查
  8. 法官看到照片的证据
  9. 直播:一个服务器,按要求
  10. 判断发生在儿童过程中
  11. 退票不是试图触摸
  12. 清理
  13. 在您下面更改的设置
  14. 行动
  15. 均等
  16. 发展

@ computesdk/ loops (帮助)

不居住在终点站的人的循环:a loops CLI 和本地主机网站 UI, 两者的客户端 @computesdk/pi-loops。扩展是基础——它拥有环路、记录和每一个 能力。 这个软件包没有这些,它驱动引擎.

loops status                  # what ran here, read straight from the records (no pi process, no tokens)
loops doctor --live           # can a round work here? boots serve, runs check, asks the judge to read an image
loops run "<goal>"            # a round — the one verb that costs tokens
loops clean | apply | take | rule | questions | answer
loops serve                   # one browser app for this VM; choose workspaces in the UI

从 npm 安装它是一个命令, 并且这是一个给某人:

npx @computesdk/loops serve

这是一个 真实的 Pi 会话的客户端,而不是重新实施。 聊天状态使用 RPC 和 SSE 而不是 投票或另一个数据库:会议是持久的记录 .pi/loops/ 是一个可以重建的指数 加上它的工作树.

命令、提供者和聊天模式

工作空间是整个应用程序上方的持久水平标签,包括循环检查员. 聊天边栏属于所选的工作空间;当许多工程打开时,标签会独立滚动. 紧凑的对话头打开了完整的仓库细节. 命令(包括模式/提供者行动) 打开通过 /, Ctrl/Cmd K,或紧凑 / 作曲按钮;没有独立的命令或聊天模式按钮. 提供商的设置也可以在第一次聊天之前通过工作空间登入,并通过循环设置提供. 工作空间条,聊天边栏,和谈话在光和暗的主题中使用了明显的中性表面.

使用紧凑 编号 : 控制或按键 计算机/计算机 K键入 / 在作曲中打开相同的键盘可导航菜单. 命令使用一个调色板框架和一个近控. 其他形式和循环设置使用本地模式 对话框/ 工作表; Cmd/ Ctrl K 不将命令堆放在上面, 或取消一个活动提供者连接 . 使用 页:1 浏览和 输入 选择。 模型/提供者表格在准备就绪时重点控制; enter确认选定的模型。 Pi 选择表 也支持QQ/QQ( 加上 Home/ End), 然后是 Enter/ Space 回答 。 单独浏览从不提交选择. 如果您已经开始新的未提交的草案,即将作出的决定将保持重点. Pi发现聊天的扩展命令,即时模板,以及技能;其确切名称和出处被显示. 选择一个将它插入作曲者——审查其论点并明确发送。 未知的斜线命令为 拒绝,没有将他们送到模型。 这不是模仿Pi的完整终端接口.

应用动作行为
/new在选中的工作空间创建新应用程序聊天; 保留旧聊天及其草稿
/model从此作者可用的目录中选择确切的提供者/ 模式
/compact确认潜在的付费收缩; 显示 Pi 的进步/ 结果而不自动重试
/login使用 Pi 的 OAuth/ API 键流连接提供者

发现的Pi名字赢得了碰撞. 对应的应用程序动作移动到可用的 app: 显示的别名 在菜单中,而不是默默地跟踪扩展名、模板或技能。 模式选择更改父 只聊天;不重写循环角色/尝试配置或全局默认. 模型变化和收缩需要闲置 父且没有运行中的背景循环 。 操作既不取代 Pi 会话,也不创建另一个写入器.

连接提供者 也可以在选择聊天前工作。 Pi 的公有供应商元数据决定了可用的 登录方法。 OAuth 支持浏览器授权、远程 VM 的手动调用/ 代码提示以及设备编码 提供者提供时的流动。 在对话框中完成提供者的指示; 在远程 VM 上, 一个本地主机 重定向可能会在您的笔记本上失败,在这种情况下,将它的完整回调 URL 复制到 Pi 的手动提示中. 闭幕 对话框取消其待定流量 。 过期、取消和服务器关机 清理回调收听器 . 注销不能取消已经承诺的证书或撤销账户赠款.

API 密钥和授权回复只在 JSON 中与被绑起的被绑起的服务器连接. 它们不是用于聊天、URL、日志或浏览器存储的。 Pi拥有证书持久性和OAuth刷新; uI 不复制或执行提供者令牌存储 。 提交密钥需要后续提示 : 已连接 说明Pi确认的持久性,而不是支付费用的核查请求成功. 刚刚打开 对话框列表中存储存在元数据,而不执行已配置的证书命令或签名. 每个服务器有一个有边框的内嵌登录流量;只有在对话框打开/待用时才会对其状态进行民意调查.

登录后,闲置的作家刷新了Pi的公用型号运行时间,没有模型请求或自动型号开关. 捆绑的 SHA 绑定的 RPC 适配器添加了此元数据刷新; 自定义 Pi 可执行文件而不显示重新启动 警告,并且永远不会自动重新启动。 启动延期决定仍然分开,必须答复 在作者的命令/模型可用之前。 循环设置保留角色配置和检查,同时 现在打开共享提供者对话框.

内审显示的从何而来
记录稿get_messages 从聊天的 pi --mode rpc 儿童
一个循环,它的回合,它的分数页:1 loops-state 简介和 loops-round 输入该会话的扩展附件
当前赢家/ 应用承诺最新的 loops-state 简况( a)best, (中文(简体) ), winner, (中文(简体) ), baseCommit(中文(简体) )
飞行中一轮页:1 loops-progress 条目在工作时附加( 喉咙; 相位变化总是)
问你的问题loops-question 编号 : loops-answer 条目 - 仅附加,所以没有重写
简短/核准卡扩展名 ctx.ui.select,作为一个 extension_ui_request
diffs、截图、工作表仅读取运行的路由和存档镜头 .pi/loops/

视觉预览等待实际截图文件,而不是将已配置的输出路径作为图像处理. 无法获取或失败的图像显示一个明确的状态并重试;重试一个图像不会重跑循环. 尝试细节显示存档抓取,而不需要实时服务器或应用候选人. 使用捕获选择器进行实际的桌面/移动截图,并打开截图检查全部大小. 活页仅在真正活的 URL 存在时才使用沙盒 Iframe.

结果问题属于它们的准确运行和回合。 后来执行可以取代它们(包括记录) 相同回合的重试); 过期/ 叠加的卡片会离开需要您, 但需要您继续用它们的理由交谈 . 这来源于Pi的条目,包括现有的历史,从来没有人造答案. 一般询问 在答复或过期前一直开放。 Stale 答题请求被拒绝; 单独停止不回答卡片 .

已完成的结果将衡量标准、候选人检查、更改文件以及下一步合并为一个标题. 循环缩略图占用自己在工作空间下的独立滚动列,并停止控制,旁边 谈话和作曲 并不是浮起的 电话保留了内流水平条. “应用的跟踪编辑”要求记录引擎 best.applied 执行; 回答应用问题 没有证明成功。 没有这个事实的旧记录仍然未经证实。 已添加/ 删除的文件称为 因为引擎的履带文件应用不包括它们。 应用留在谈话中. “最佳版本对原文”及其文件列表继续比较第一轮记录的叉子承诺 胜出候选人,甚至在申请、恢复或退职后。 这是历史证据,不是 声明添加/删除的文件已降落在您的离职。 没有原始主播的遗产记录 记录执行- 基准比较; 服务器不会从后一轮中猜出正本或承诺父版本 .

聊天目录来自 Pi 本身: 每个会话头记录其 cwd。 。 。 . 服务器恢复该目录中的确切会话文件; 选择工作空间不能移动聊天 . Pi仍然是唯一的会话写作机,每个打开的聊天有一个RPC孩子,由它的浏览器订阅者共享. 没有第二笔录店,也没有全工作空间的编辑锁.

workspaces.json 索引会话和持续的工作空间ID,会话位置,以及哪些标签是打开的 . 关闭标签会保留其工作空间、聊天约束和会话 。 恢复可以从会话标题中重建绑定 如果注册簿丢失, 但完整注册簿的封存标签会在整个重启期间关闭.

每个 VM 一个服务器

服务器默认为 127.0.0.1远程监听需要一个无记名符号(在需要时自动生成); 此进程可以提示一个代理 bash 访问,所以保护符作为VM的密码. SSH隧道是另一个选项(ssh -L 8001:127.0.0.1:8001 …) (中文(简体) ).

后面一个 正在认证反向代理,保持听众的回放,并明确命名其公共来源:

loops serve --public-origin https://my-vm.exe.xyz,https://my-vm.exe.xyz:8001 --no-open

这完全信任那些主机/欧里金的名字,而不是任意的 X-Forwarded-* 头. 代理必须限制谁可以访问应用程序;此旗帜不会添加认证. 不要用它来暴露 一个未经认证的代理人。 见 deploy/loops.service.example 接受监督的离职部署。 重建 并重新启动服务器 更新后; 仅重建SPA 可以让新客户端与旧后端交谈.

运行它

开始一次机器,然后打开工作空间发射器的目录:

npx @computesdk/loops serve        # from npm — one server, independent of launch directory
# from a checkout:
loops serve                        # or: node server/index.ts --port 8001
# optionally seed a workspace:
loops serve --cwd ~/code/some-repo

它作为一个捆绑的服务器以及已建成的SPA来运送,所以在另一端没有建造步骤. 这个 pi-loops 扩展 和 Pi 运行时作为运行时的依赖性安装. 聊天者默认使用捆绑的 Pi RPC 跑道; --pi <executable> 明确选择另一个 Pi 安装.

它打印地址并打开它:

  open  http://127.0.0.1:8001
  loopback only

--no-open (或 LOOPS_UI_OPEN=0)在不启动浏览器的情况下打印地址。 当 URL 带有一个符号时——关闭 回放——打开的地址是附件表, /?server=…&token=…。应用程序通过它一次,并移除了符号 从地址栏和当前历史条目。 一个非机密的外部服务器地址会留在导航链接中.

一个回路需要引擎,所以靴子说当它缺失时,而不是让你在第一个提示上发现: 如果选中的 Pi 可执行文件或一个 --extensions 路径不存在, 它打印出什么是错的, 并显示在 !! a loop cannot run here yet,以及 /api/health 报告 ok: false 名单相同。 该应用程序仍然服务——您可以添加 重新整理和读取已经运行.

A 类 工作空间是连接 VM 上的目录与其聊天,运行,和 .pi/loops.json。 。 。 . + 打开发射装置:选择最近的工作空间,浏览VM目录,或粘贴绝对路径(~/ 工作) (中文(简体) ).

工作空间、聊天和循环视图都有可书签的 URL :

/workspaces
/workspaces/<workspace-id>
/workspaces/<workspace-id>/chats/<chat-id>
/workspaces/<workspace-id>/chats/<chat-id>/loops/<run-id>
/workspaces/<workspace-id>/chats/<chat-id>/loops/<run-id>?round=2&attempt=R2-safe

ID和尝试名称是 URL 编码的,持久的标识符,而不是显示标题. 链接支持复制链接, 新建标签、重新装入和浏览器后/前置。 明确的联系优先于记忆中的选择; 惟留下的遗产是赤裸的 / 条目恢复上一个选择,并取而代之的是其具体的 URL. 打开链接从不创建聊天或重新组合其目录 。 已知的封闭工作空间随 同样的身份证。 未知、不可用或不匹配的目标显示错误和恢复链接,而不是另一个 聊天的内容或动作. 回合/尝试焦点根据该聊天的实际循环历史来验证.

当附加到另一个后端时,链接包括 ?server=… (除任何圆/试参数外), 绝不然,绝不然, 接收者需要自己进入服务器 只有服务器链接不能 转发另一个后端保存了证书; 同一来源的认证链接在重新装入时保留了它们的符号 . 一个没有服务器参数的明确链接是指服务UI的出处,而不是 stale add-server的偏好. Home, Up, breadcrumbs, and Show 隐藏导航服务器的文件系统,而不是浏览器的计算机. 采取者显示 Git 是否有承诺; 打开目录从不初始化 Git 或编辑工程 .

打开目录从不创建聊天. 一个新的工作空间从它的聊天列表开始,没有Pi孩子. 选择已有的聊天或明确创建其中的聊天 新建聊天 在工作空间。 活动全路径保持可见. 返回工作区会恢复其上次选中的聊天( 必要时恢复该作者) , 为每个连接的服务器分别记住. × 只关闭一个标签: 它不停止它的代理, 删除历史,或更改会话目录。 从最近的工作空间重新打开它.

第一次发射没有隐含的项目; --cwd 可选种子一。 所有标签都可以关闭. Canonical paths deduducle symmlink 化名,同名目录保留明显的稳定ID,并缺失 目录因无法使用而仍然可见,而不是悄悄地回到另一个工作空间.

如果 Pi 退出, 聊天会保持其诊断性, 而不是在每次阅读时重新启动孩子 . 重试代理 明确在问题解决后重新启动同一会话. 启动扩展决定(包括exe.dev首个运行的LLM设置)可以在浏览器中直接回答. 默认跑者使用 Pi 1. 4.0 的自有 CLI 并带有狭义的内嵌相容性修补: 附加 RPC 输入读取器 在等待启动扩展之前,立即处理他们的答案,并持有普通命令直到设置完成. 它在应用定点前验证被绑定的版本和准确的上游源;没有修改全球Pi文件. Pi仍然拥有会话,扩展,模型配置,以及所有决定.

捆绑的循环扩展是一个倒置: 如果启用了 Pi, 信任的软件包已经提供了 @computesdk/pi-loops,默认的跑取器使用该安装而不是加载第二个副本. 其他扩展仍然有效,真正的冲突仍然失败。 这个选择也是 SHA 所标注的 到 Pi 1. 4.0 资源加载器; 明确 --extensions 或者说 --pi 保留正常的 Pi 加载语义 . 失败的解答提交件仍然可见,但存在可重试错误;循环永远不会接受或拒绝您的集成. 明确 --pi 绕过此兼容运行, 因此可执行文件必须支持启动对话框本身 .

服务器元数据在 ~/.pi/loops-ui;浏览器导航状态和未发送的草稿保存在本地存储中. 草稿和失败的消息被扩展到连接的服务器和聊天. 寄件者保留其草稿直至确认; 错误保留信件以供审查和重试,包括切换聊天或重新加载后. loops serve 是一个前景服务器命令,而不是附加命令:启动一次(或作为服务对其进行监督), 然后对每个工作空间使用该 URL。 在同一端口再次运行它不会取代或附加第一个进程.

旗 (每个有: LOOPS_UI_* 环境变量 :

旗帜默认含义
--port8001应用程序听
--cwd未设定可选择种子一个工作空间; 发射目录不相关
--pi捆绑 Pi RPC 跑道明确覆盖 Pi 执行器每个聊天产物
--extensions../pi-loops/extensions/loop.ts逗号分隔 -e 儿童的道路
--data~/.pi/loops-uiworkspaces.json 和每回波的聊天
--host127.0.0.1关闭后监听需要一个无记名符号
--public-origin未设定以逗号分隔的可信认证反向代理的精确来源
--model皮的默认值每个聊天开始的模型
--no-open关不打开浏览器而打印 URL ()LOOPS_UI_OPEN=0(中文(简体) )
--dev关代理 SPA 到 Vite 上 :5173 (单位:千美元)npm run dev(中文(简体) )

附着在另一台机器上的服务器

SPA是客户端. 默认情况下,它与服务于它的过程交谈;它可以指另一个过程:

# on the box that owns the repos — off-loopback listening needs a token
node server/index.ts --port 3000 --host 0.0.0.0 --token     # prints the URL + token once

# anywhere else: either open the served UI at box:3000, or attach this one to it
http://box:3000/?server=http://box:3000&token=<printed>

这个 server编号 :token 双取一并取出地址栏;之后,边栏页脚取出 服务器。 在一个日志中着陆的 URL 不是一个问题,因为符号生活在 localStorage 之后,但把它当作密码: ~/.pi/loops-ui/token,模式0600, --token 旋转.

API是产品. 任何想要自己的聊天UI,自己的循环画布,或自己的需要 - 您的收件箱应该 用它而不是这个 SPA: 看 API.md 每条路线和循环生命周期,以及 client.ts 对于一个可以直接导入到另一个应用程序的已输入客户端(没有依赖性).

路线是合同,而不是SPA: GET /api/workspaces, (中文(简体) ), /api/chats?ws=, (中文(简体) ), /api/state?chat=, (中文(简体) ), /api/config?chat=, (中文(简体) ), POST /api/chat|prompt|steer|answer|ui|config|live,以及 每个聊天一个事件流数字 :

GET /api/chats/:id/events        Accept: text/event-stream
  id: <session entry id>         ← the cursor; send it back as Last-Event-ID after a drop
  event: state                   ← the same snapshot /api/state returns
  event: ping                    ← keep-alive every 20s

SSE 结束 fetch (无) EventSource)所以信使可以在信头中行走,所以从光标中恢复连接 而不是开始盲目.

循环回放的服务器只回答它自己的源头( N)127.0.0.1, (中文(简体) ), localhost, (中文(简体) ), [::1] 并且只在这些港口下 名称 Host 页眉 — 下半部分是将自己的主机名指向 127.0.0.1 财务报告和审定财务报表 成为同一起源。 循环服务器对此不需要任何令牌,因为边界就是名称. 一旦该端口 可从机器上取出代号是授权,任何来源都可以附加; --allow-origin a,b 缩小它.

它的构成

server/
  index.ts      Hono: /api/state, /api/prompt, /api/ui, /api/steer, /api/shot, /api/diff, /ws, static
  chats.ts      one Chat per session: spawns `pi --mode rpc`, folds its events into one snapshot
  pi-rpc.ts     the RPC client: JSONL framing, id correlation, extension dialogs
  runs.ts       the durable session entries first, the `.pi/loops` index as fallback -> the shapes the canvas draws
  workspaces.ts the repos this process may touch; chats are bound to one
  directories.ts bounded, authenticated directory browsing on the server
  config.ts     settings with provenance, agent-write proposals, and the doctor checks
  live.ts       one live server for the winner, on demand
src/
  shared/      the wire types both halves use
  client/      the SPA (React 19 + Tailwind v4), ported from the POC at ~/factory/mock

为什么一个事件流 而不是民意调查

循环运行 一、导 言 皮语: loop 工具在回合开始后立即返回,回合卡到达 后为谕. 在一个很好终点站——状态线和卡已经足够了. 画布需要更多 所以 扩展附件 a loops-progress 输入(每1.5秒最多一个,总是在阶段变化)和呼叫 setStatus,哪个 到达我们作为一个 extension_ui_request中, 服务器会用光标重新读取会话 (单位:千美元)get_entries?since=) (中文(简体) ). 一个事件,最多一个便宜的读出, 一个重新装入中回合的浏览器重建同样的 图片从单条目.

法官看到照片的证据

一个从未收到过影像的裁判 reasons: "Image unavailable" 旁边是5比5的"Tie" 两种机制使得无法错过:

  • 先检查申报的能力. 法官(或小组成员),其模型不声称图像输入是 在尝试运行前被拒绝, 设置要改变 。 没有模特,没有圆.
  • 每个有判断力的截图 右上角都有密码. 法官必须读回来 (单位:千美元)"tokens": {"<label>": "<code>"}); 将一个编辑分解为一个错误读取的计数,其他的都完全不计数. A 类 未读回代码的候选人是 unseen: 它会得到 无分数,圆是标记 无结论 (决不是"甚至"),并被提出一个问题——重试,调换法官,或保持当前最好的.

代码仅活于像素中,因此无法从快取回. lib/shot.ts 标记 (单位:千美元)stamp, (中文(简体) ), canaryImage, (中文(简体) ), lib/judge.ts 比较sameCode),以及 probeVision() 可以解决模型的 能力离线——不是在工具呼叫中,在启动一个会话时等待转弯的运行时间.

直播:一个服务器,按要求

一个截图是一个已经运行的应用程序的静态—— lib/shot.ts 开始 serve 在工作树上 这个. Run it 让同一个服务器为赢家活着:一个插槽,当您问起,当您停止时杀死 10分钟后,或者当这个过程退出。 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}只有回扣已经付了 serve 内 .pi/loops.jsoniframe 获得不透明来源(sandbox,没有 allow-same-origin因为里面的代码是 由尝试编写.

判断发生在儿童过程中

会期 prompt(text, { images }) 不提供图片在这个 Pi 上 提供方请求不会,所以需要查看截图的法官会通过 pi --print (同一个二进制, 模型和认证,与 @file 参数,其中包含图像。 两条管线规则都很重要,而且都花了很多钱 每个: 关闭 stdin (ignore)或(或) --print 等待永远的EOF, 和剖析 仅退出 (pi在stderr上发出警告).

退票不是试图触摸

尝试已经崩溃并继承了 repo 的绝对路径, 这样它就可以编辑或承诺您的退出, 而不是它的退出 工作树。 因此,每轮检查,在尝试之后:头部是否移动,工作树是否得到改变,而 每一个尝试 自己的工作树 停留在基地? 如果是这样的话,则回合无结果(他们无一例外) 比较一下,你的树被放回去,卡片上写着发生了什么——循环的保证是,你的退票是 未触及至 loop_apply。 。 。 .

清理

工作树是刮痕的复制品:承诺者生活在收割地和树枝上 loops/<run>/rN-<style>因此删除一个 工作树只损失了 尝试没有承诺. clean up (或 /loop clean [run|all])移除尝试' 工作树 掉掉掉的树枝和跑道 git worktree prune保持胜利者的工作树 持久会议 快照,JSON索引,会话和存档截图. loop_apply 尽快为失败者做 胜利者着陆.

在您下面更改的设置

.pi/loops.json 决定哪个模型判断,什么是检查和多少运行。 服务器看它和应用程序 显示变化( e)models judge exe/… → particle/…) 当它打开时——代理编辑配置是一个真实的事件,而不是 一个细节.

行动

按钮对着引擎,而不是对一个模型: /loop take, (中文(简体) ), /loop apply, (中文(简体) ), /loop stop, (中文(简体) ), /loop rule, (中文(简体) ), /loop talk, (中文(简体) ), /loop answer需要判断的任何东西("再两回合","按此方式")都会作为信息发送给特工, 因为这是代理商的决定.

停止响应 中止当前聊天的父回合 . 停止循环 只取消命名的背景运行, 即使同时 父母忙碌;其工作树木会留下。 控制器只在目标活跃时出现 除了作曲家, 循环活动,或检查员(包括移动)。 每个目标在按钮移动时都会有一个持续控制器 在视图之间,通过调整大小和检查导航来保存待决状态和出错. 他们保护重复的请求并显示错误。 识别按钮未标记已停止的工作:已流出 语句状态必须确认。 缺少信号、判断不全和预算/超时失败没有标注完成 . 所有运行动作都保留精确的所选运行ID;尝试选择发送其持久名称,而不是其A/B显示字母.

无效的监视 .pi/loops.json 不再终止服务器。 被拒绝的文本保存在配置旁边, 如果可能,最后一个被接受的设置会被恢复,一个工作空间范围错误解释了如何恢复.

均等

npm run shots 写入 ./shots/ 1440、1024和430宽。 此端口的通过条件是 POC 的屏幕 ~/factory/mock 显示同一密度;见 PARITY.md 用于逐州比较.

发展

npm run dev      # Hono on :8001 proxying the SPA to Vite on :5173
npm run check    # typecheck the server and the client separately
npm test         # offline engine/API tests, including workspace restart and routing regressions
npm run test:browser # build first; real Chromium workspace navigation, with a fake Pi (no model calls)
npm run shots    # headless-chrome screenshots of every state

版本与发布记录

@computesdk/loops 共发布 21 个版本,首次发布于 2026/11/03;过去 12 个月发布了 21 个版本。

版本发布日期距今
0.1.19latest2026/11/046 天前
0.1.182026/11/046 天前
0.1.172026/11/046 天前
0.1.162026/11/046 天前
0.1.152026/11/046 天前
0.1.142026/11/046 天前

关于 @computesdk/loops 的常见问题

@computesdk/loops 是什么?

不生活在终端的人的循环:一个指令启动一个本地主机UI,运行,监视并引导您回收物中的登山代理.

如何安装 @computesdk/loops?

在项目目录运行 npm install @computesdk/loops,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 loops、pi-loops-ui,可以用 npx loops 直接运行。

@computesdk/loops 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/computesdk__loops 是否存在。

@computesdk/loops 支持 ESM 还是 CommonJS?

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

@computesdk/loops 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.18.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@computesdk/loops 可以商用吗?

@computesdk/loops 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@computesdk/loops 的下载量有多少?

根据 npm 官方下载统计,@computesdk/loops 在 2026/10/11 – 2026/11/09 这 30 天内被下载 3,987 次,日均约 133 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@computesdk/loops 还在维护吗?

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