# @computesdk/loops 中文文档

规范地址：https://npmcn.com/package/%40computesdk/loops/

版本：0\.1\.19
npm 元数据更新时间：2026-11-03T22:37:56.851Z
中文译文更新时间：2026-11-10T14:58:45.254Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40computesdk/loops
原文对照：https://npmcn.com/package/%40computesdk/loops/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：15.1 MB，384 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=22\.18\.0
- 运行依赖：4 个
- 首次发布：2026-11-02T20:32:08.408Z
- 最新版本发布：2026-11-03T22:37:56.658Z
- 近 30 天下载量：3987（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：21（近 12 个月 21 个）

## 中文简介

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

## 安装

```sh
npm install @computesdk/loops
```

也可以使用：`pnpm add @computesdk/loops`、`yarn add @computesdk/loops`、`bun add @computesdk/loops`

## README

# @ computesdk/ loops (帮助)

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

```sh
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 安装它是一个命令, 并且这是一个给某人:

```sh
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 …`) (中文(简体) ).

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

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

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

## 运行它

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

```sh
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 :

```text
/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_*` 环境变量 :

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

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

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

```sh
# 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`](https://npmcn.com/package/%40computesdk/loops/API.md) 每条路线和循环生命周期,以及 [`client.ts`](https://npmcn.com/package/%40computesdk/loops/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.json`iframe 获得不透明来源(`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`](https://npmcn.com/package/%40computesdk/loops/PARITY.md) 用于逐州比较.

## 发展

```sh
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 是什么？

不生活在终端的人的循环:一个指令启动一个本地主机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 和提交记录判断。

