@cogitator-ai/studio

中文文档
0.10.1发布于 2026/10/29MITTypeScriptES Module近 30 天下载 1万

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

中文使用文档
文档目录12 节
  1. 开始吧
  2. 它会做什么
  3. 插件
  4. 小组讨论会
  5. 插件端点
  6. MCP 应用程序
  7. 常规:收件箱和时间表
  8. 常规终点
  9. 如何运作
  10. 警卫
  11. API 密码
  12. 许可证

校对:soup

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

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

开始吧

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

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

插件

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

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

小组讨论会

一个板块插件注册, ui.panels 在其表内或 context.registerPanel({ id, title, html, handlers }) 代码( 参见 工作室面板),列在 小组讨论会 在侧边栏中打开一个框式沙盒 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时也会将页面放入其中,而沙盒则防止它打开窗口,导航工作室的页面并下载文件.

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

<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/pluginsPluginsState数字 : 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 应用程序 (电话分机) 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)前往应用程序来自的服务器,并且只到对应用程序开放的工具(avisibility 与 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 在侧边栏和命令调色板中再得到两页.

时间表 列出常规,代码,常规存储和插件中的常规,每个程序都有它的任务,它运行的代理或工作流程,它的重叠规则,它运行的线程以及它运行或排队的运行. 每个触发器都显示其类型,它的反应(一个时刻表的克龙表达和时区,一个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/schedulesTriggersState数字 : 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 密码

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所需经费运行的项目
host127.0.0.1要监听的界面; 其他需要符号的
port4321端口,下一个免费,除非 strictPort
token超越回转的随机托肯请求必须携带
watchtrue当工程文件更改时重新加载
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 共发布 57 个版本,首次发布于 2026/10/07;过去 12 个月发布了 57 个版本。

版本发布日期距今
0.10.1latest2026/10/2912 天前
0.10.02026/10/2912 天前
0.9.42026/10/2912 天前
0.9.32026/10/2912 天前
0.9.22026/10/2912 天前
0.9.12026/10/2812 天前

关于 @cogitator-ai/studio 的常见问题

@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 和提交记录判断。