# @fungi\.computer/mycelium 中文文档

规范地址：https://npmcn.com/package/%40fungi.computer/mycelium/

版本：0\.4\.0
npm 元数据更新时间：2026-11-14T11:58:12.833Z
中文译文更新时间：2026-11-15T18:06:32.051Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40fungi.computer/mycelium
原文对照：https://npmcn.com/package/%40fungi.computer/mycelium/?lang=original
项目主页：https://github.com/fungi-computer/mycelium#readme
源码仓库：https://github.com/fungi-computer/mycelium

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

- 包体积（解压后）：341 kB，88 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：9 个
- 首次发布：2026-10-15T08:00:33.986Z
- 最新版本发布：2026-11-14T11:58:12.613Z
- 近 30 天下载量：14915（2026-10-16 至 2026-11-14，npm 官方下载统计）
- 已发布版本数：21（近 12 个月 21 个）

## 中文简介

带有 Zod 授权执行门的效应自定范围能力生命周期

## 安装

```sh
npm install @fungi.computer/mycelium
```

也可以使用：`pnpm add @fungi.computer/mycelium`、`yarn add @fungi.computer/mycelium`、`bun add @fungi.computer/mycelium`

## README

# 菌丝( M)`@fungi.computer/mycelium`(中文(简体) )

Mycelium 通过一个输入的代理操作 `execute` 工具,并且能够 在MCP上提供同样的目录. 它验证业务,获得一个连贯的 能力快照,并在运行结束时发布. 您也可以执行 已知没有模型的操作.

```sh
npm install @fungi.computer/mycelium zod effect
```

将下面的快速启动复制到一个 HES TypeScript 文件, 用节点 24 运行 : 它注册了一个Zod操作,并调用它没有模型提供者。 菌类 不评估代码本身。 你的宿主提供沙盒,所以.. 快速启动使用一个不孤立的仅测试适配器.

## 设置

包船只实行无害环境管理。 运行时间依赖性包括Zod, Effect, `acorn`, (中文(简体) ), Cloudflare代码模式,MCP服务器SDK, [凯恩](https://npmcn.com/package/%40fungi.computer/cairn/README.md), (中文(简体) ), [饲料](https://npmcn.com/package/%40fungi.computer/forage/README.md), (中文(简体) ), [木浆](https://npmcn.com/package/%40fungi.computer/mule/README.md) 财务报告和审定财务报表 [纸球](https://npmcn.com/package/%40fungi.computer/puffball/README.md),所有自动安装。 词根 入口是承诺主机的外观. `@fungi.computer/mycelium/effect` 提供范围效应 API。 两者都生产出一种效应-内生木耳工具. 这个 `./sandbox-guest`, (中文(简体) ), `./sandbox-wire`, (中文(简体) ), `./sandbox-failure`, (中文(简体) ), `./sandbox-boundary`, (中文(简体) ), 财务报告和审定财务报表 `./semaphore-transition` 子路径支持主机的沙盒适配器 。 一个主机 提供沙盒 真正评估代码和强制隔离, 外部访问和取消.

## 快速启动没有模型

此示例注册 `demo.ping`,执行已知绑定和打印 `{"value":"pong"}`。直接回调会故意忽略提交的代码。 这个 实值 **不隔离**: 它具有主机权限和检查注册, 论证与清理.

```ts
import { Mycelium } from "@fungi.computer/mycelium";
import { directSandbox } from "@fungi.computer/mycelium/testing";
import * as Effect from "effect/Effect";
import * as Stream from "effect/Stream";
import { z } from "zod";

const runtime = await Mycelium.make({
  modules: [
    Mycelium.module({
      id: "example-demo",
      name: "demo",
      operations: {
        ping: Mycelium.operation({
          input: z.object({}),
          output: z.object({ value: z.string() }),
          execute: async () => ({ value: "pong" }),
        }),
      },
    }),
  ],
  sandbox: directSandbox((bindings, signal) => {
    signal.throwIfAborted();
    const ping = bindings.demo?.ping;
    if (ping === undefined) throw new Error("Missing demo.ping binding");
    return ping({});
  }),
});
const lease = await runtime.acquire();
try {
  const prepared = await Effect.runPromise(
    lease.executeTool.prepare({
      type: "toolCall",
      id: "example-execute",
      name: "execute",
      arguments: { code: "return demo.ping({})" },
    }),
  );
  const parts = await Effect.runPromise(Stream.runCollect(prepared.execute()));
  const text = parts[0]?.result.content[0];
  if (text?.type !== "text" || text.text !== '{"value":"pong"}') {
    throw new Error("Unexpected execute result");
  }
  console.log(text.text);
} finally {
  await lease.release();
  await runtime.close();
}
```

这个 [公共进口固定装置](https://npmcn.com/package/%40fungi.computer/mycelium/test/stranger/runtime.mjs) 使用同样的 已知约束模式。 真正的评估者必须执行公共沙盒 合同。 它的请求带有代码,执行身份,限制和被接受 装订。 在主办方的特权程序中不要以评价取而代之.

## 作业和发现

宣告输入和输出带有效果方案或任何标准Schema的输入和输出 执行标准JSON Schema,例如Zod 4. Mycelium 解码输入 手术前的计策 效果输出计划编码结果( 因此) 诸如 `Schema.NumberFromString` 返回时 `"1"`a 标准输出 计划验证了它。 效果计划交换为它的 Cononical JSON 编码 (单位:千美元)`Schema.toCodecJson`因此,描述,解码器和编码器都同意. A 类 丢弃过滤器或变换是主机错误, 从未向模型报告 作为无效的输入。 稳定模块ID识别权威. 名称变为 模型化名。 输入命令不选择两个身份 。 饲料 为所捕获的图表编写有限度的发现目录.

穆尔收到这个运行时间 一个顶级 `execute` 工具。 内部操作, 包括 `forage.search` 财务报告和审定财务报表 `forage.describe`留在那个工具后面 这个 操作回调只接收其已声明的输入和执行上下文 . 进入检查和授权门在行动前运行。 产品 成员、资源所有权和最后外部访问检查仍然是东道方 责任.

每个 `execute` 调用在新沙盒中运行, 而不是 REPL: 无变量, 函数 或全球生存在呼叫之间。 在每一次召唤中,你应当重新定义援助者 状态到文件并读回.

### 执行中的操作身份

每一次注册行动电话都会被冻结 `InvocationContext` 带有 零基数 `operationOrdinal`一个计数器覆盖所有登记方法和 模块。 绑定时同步分配 在同步录用或操作工作之前 同时开始的电话有不同的立场。 饲料的内在发现 帮助者不使用注册操作位置.

每次执行尝试的计数器重置 。 重放相同的调用 序列给出相同的正文,即使 `executionId` 是新鲜的。 一个东道主 将存储的会话和命令身份结合起来 与 `toolCallId` 财务报告和审定财务报表 `operationOrdinal`; 单靠普通话不是全球性的 独一无二的身份 不同调用顺序没有承诺相同的位置, 效应所有者仍必须比较预期操作和有效载荷 重弹. 此元数据既不授权也不允许重放不安全 工作时.

直接 `invokeModuleOperation` 呼叫者提供自己的上下文 执行中没有附加调用序列, 因此 `operationOrdinal` 也许 缺席,就像 `toolCallId` 可能缺席。 需要执行身份的主机 必须拒绝缺少身份的写作,而不是发明倒置.

## 访问标签和赠款

每个操作的作者都标出它所做的: `access: "read"` 观察到, `access: "write"` 改变一些东西, 一个没有标签的操作是 `write`。一个 作者可以添加 `confirm: true` 每次打电话前都要问一个人 标签是 操作的固定事实; 主机从不编辑它们.

主办方将其决定作为数据传送至 `access`。 。 。 . `grants` 映射模块 编号为 `"write"` (每次行动), `"read"` (仅限 `read` 操作)或 `"none"`。一个主机名称不全称的模块,所以主机是 不允许写权限代码 . `sessionGrants` 读取当前 每次通话都存储着会话赠款;它们会覆盖 `grants` 键按键,所以 取消的补助金适用于下一个电话。 键入 `required` 失败已关闭 : 当两个名字都没有的时候,就是 `"none"`标签在定义中解析为 `ToolPolicySchema`: 任何不确切的东西 `"read"`编号 :`"write"` 和布尔 `confirm` 是一个定义错误. `confirm` 是宿主如何问一个人; 没有它,一个 `confirm` 操作被拒绝, 并且从未被询问.

```ts
const runtime = await Mycelium.make({
  modules: [notes],
  sandbox,
  access: {
    grants: { notes: "read" },
    confirm: (request) => askPerson(request),
  },
});
```

在手术输入之前 解码器运行。 拒绝的呼叫返回 a `AccessRefusal` (单位:千美元)`module`, (中文(简体) ), `operation`, (中文(简体) ), `reason` 和平原 `message`作为其通常的结果. `onRefused` 观察 每一次拒绝日志或计量,绝不改变决定. `Mycelium.grantAs` 似乎一个模块的赠款 由更广泛的所有者的关键,例如 它的扩展。 贴有标签的直接工具 `tools` 坐后边 同样的支票,回来的租借 `tools`。 。 。 . [准入测试](https://npmcn.com/package/%40fungi.computer/mycelium/test/access.test.ts) 包括每个规则.

## 嵌入式命名空间

构建模块 `operations` 以显示任何命名空间深度。 所附内容 模块标识仍然是权威身份; 儿童注册标识不创建 新的权威 例如,一个名为 `bazaar` 与 `namespace: ["apps"]` 财务报告和审定财务报表 `operations: { windows: windowModule }` 揭发孩子的 `open` 操作 作为 `env.apps.bazaar.windows.open(...)`儿童本身 `namespace` 添加部分 在其注册密钥之后。 奥米 `namespace` 用于普通深度-1形式 `env.demo.ping(...)`; 现有 `demo.ping(...)` 形式也起作用.

> 操作密钥也可能是点缀的相对路径: `operations: { "repos.list": op }` 称为 `env.<module>.repos.list(...)`就像一个儿童单元 `repos` 与 操作 `list`。安装时拒绝既是操作又是操作的密钥 命名空间前缀( n)`files` 与 `files.read`) (中文(简体) ).

每片叶子都保留其申报的输入/输出类型. 附加模块上的门 查看相对路径, 如 `windows.open`搜索、列出和描述用途 完整的逻辑路径, 并声明相同的嵌入, 可调用 `env`。名称在逻辑命名空间中分配,所以 App 和 a 计算机也可以在不重命名的情况下共享名称. 运输别名和平面 操作表仍然是只限东道方执行的细节。 使用沙盒适配器 `/sandbox-guest`解析命名空间元数据 `sandboxGuestProgram` 改为 选项; 提供者适配器也使用 `sandboxProviderOperationName` 以避免代码的点名相撞.

## 不断变化的能力和寿命

使用 `sources` 当主机必须获取当前计算机、连接或其他 能力预测。 消息源返回其限制的快照和等待的快照 释放函数。 内容 `invalidate()` 那张快照被打倒了 这个 下一个租约将建立一个新的连贯的图表。 现有租约保留了它 示意图.

解除每次租借并关闭运行时间. 已取消部分获取 以倒序顺序获取源 。 Mycelium拥有它的范围资源 获取,而东道主拥有持久的关系、证书和当前 政策。 抓获的快照不能作为最后权威检查缺失的理由.

## 取消和错误

执行有期限、取消承认的宽限期和限制 JSON结果。 取消中止引用信号并等待支持 沙盒结算。 如果沙盒忽略它,结果报告 `acknowledged: false`。不要报告停止的工作.

输入失败频道包括语法错误、 来宾例外、 丢失 运输、不良反应、能力失效、最后期限/取消和无效 或结果过大。 外国投球就变成 `Unknown`。模型收到 范围 `sandboxFailureMessage` 投影与参考。 主机收到 操作员通过的证据 `onSandboxFailure` 和现有报告路径. 在不向客人发送主机诊断的情况下,保护证据.

### 沙盒录取

仅限主机 `execution` 选项接受 `sandboxCapacity` (正保险箱) 整数)和 `admissionWaitMs` (从1到90万毫秒的整数). 以 默认, 录取等待引用 `timeoutMs` 预算(180 000美元) 略出后为毫秒),而不是5秒后失败. 明确 主机等待仍受原始引用期限的限制。 还是客人 仅提交 `code`。省略的能力来自可用的核心,被夹住 2.32;没有便携式核心观测设备的主机使用 2. 节点捕捉其 亲和感核心计数,每次运行一次 `node:os.availableParallelism()`,位于外部平台条件模块后 工人输入图表。 明显有效的能力超过绕行观察 并且没有被夹住,包括超过32的数值.

`normalizeSandboxAdmissionPolicy(options, availableCores?)` 验证和 解决这些主机事实,不提供等待时使用180 000毫秒. 它不保留一个槽或启动一个沙盒。 两个公共运行时间外观 运行时间打开时验证并捕获策略 .

录取属于现有的全运行时间辅助工作跟踪器,而不是每个 租赁、组合或修订。 一个完整的池子等待一个槽打开或更早 截止时间和截止时间 **原始援引期限**。 。 。 . 入园等待期满产量 `SandboxBusy`,稳定代码 `sandbox-busy`,与 保险 `capacity` 财务报告和审定财务报表 `waitedMs` 事实; 提交的程序尚未运行 . 电话-死线过期 `DeadlineExceeded`,包括两者 最后期限相同。 取消电话 `Cancelled`。排队不会 重新启动执行超时 。 不授权自动重放 .

运行时间使用一个维持的Effect semaphore跨源修改和 中断的最后期限 API 。 排队工作在等待前注册. 取消会删除已队列的工作; 过期/ 取消的服务员不会在稍后开始 。 A 类 在实际支持解决之前,包括在 未承认的中止 。 等待不能维持所需的生命周期/修正门 释放或关闭.

`SandboxBusy` (a) 由现有的自有-误差解码器、安全运输系统接收, 主线和运算符语法;这是争论,而不是 `Unknown` 卫生 警报 执行工具保留其安全输入原因和可操作编码 消息不更改穆尔的错误合同。 与外国无关的失败依然存在 `Unknown`:不将诊断道具、无包装任意原因链分类,或 错误标记任意适配器 `AbortError` 作为呼叫者授权的取消.

带有承诺沙盒的效果主机 `fromTypedSandbox`,等待着 承诺在中断时和解。 混凝土沙盒和经纪人决定 如何停止支持工作。 主机提供工人装入器装订和 证明人监护权。 仅限工人 `@fungi.computer/mycelium/workers` 条目 出口 `createCodemodeSandbox(loader, adapter?, options?)`,编码器适配器 可以在工人和手机上运行。 它禁用来宾网络访问,只绑定 提供操作, 保存输入失败并等待支持执行 在无法确认取消时。 仅在工人中导入此条目 主机; root 和其他节点条目不加载.

适配器转发请求已存在 `timeoutMs` 作为工人的预算 装入器 `cpuMs` 限制,保留任何更严格的装载器限制。 云层和单元格 执行本地 CPU 限制 。 当地工人的发展没有;仍在执行 运行。 当地主办方声明 `{ localDevUnenforcedLimits: ["cpu"] }` 作为第三个论点。 菌体指纹 `CPU limits are not enforced in local dev` 每跑一次,穿过沙盒 实例。 主机也可以宣布不强制 `memory`, (中文(简体) ), `output` 财务报告和审定财务报表 `cancel` 控件;每个都得到自己的一次性诊断。 备选办法报告事实; 它没有增加执行或客座政策。 取消仍在等待支持 和解,而且墙壁超时不能证明孤立终止.

这个 [工人加载器自定义限制合同](https://developers.cloudflare.com/dynamic-workers/usage/limits/) 和被钉住的单元格引用类型曝光 `cpuMs` 财务报告和审定财务报表 `subRequests`。他们会 不显示每次调用的内存或输出封顶, 或执行取消 操作。 适配器在没有发明的情况下保留所支持的加载器限制 字段。 全主机内存限制仍为主机配置; 他们不是一个客座宽放的沙盒设置。 犬科菌丝 申请权所有者检查其JSON结果预算 `Sandbox` 界面不运行所有者的结果验证.

发送前中止 。 执行时中止 支持解析后的权威: 适配器承诺拒绝键入 `Cancelled { by: "caller" }` 而不是解决一个迟到的成功。 保留主机 援引监护权,直到承诺解决;中止不能解除监护权 早点 Codemode没有立即取消API. 本地资格 通过真正的工人加载器检查此行为以及信任的 , CPU 转发和一次性本地通知。 这些是沙盒支票; 无法证明 Workflow 主机的取消路径 .

## API 和实例

使用 [生成 API 引用](https://npmcn.com/package/%40fungi.computer/mycelium/docs/api/README.md) 财务报告和审定财务报表 [出口](https://npmcn.com/package/%40fungi.computer/mycelium/package.json)根与根 `/effect` 暴露生命周期构造。 这个 沙盒子路径暴露了铁丝网、客人、故障和边界合同 适应器.

[能力生命周期测试](https://npmcn.com/package/%40fungi.computer/mycelium/test/capability-plane.test.ts) 覆盖源更新 并释放. [大门测试](https://npmcn.com/package/%40fungi.computer/mycelium/test/gate.test.ts) 运动拒绝. [沙盒边界测试](https://npmcn.com/package/%40fungi.computer/mycelium/test/sandbox-boundary.test.ts) 练习失败 预测。 这些软件包的证明不具有特定沙盒的隔离性 或部署.

## 贡献和许可证

在最近的容量,闸口或沙盒测试中加入回归. 从根出:

```sh
pnpm --dir packages/mycelium run test
pnpm --dir packages/mycelium run docs
```

麻省理工学院. 见 [自由主义](https://npmcn.com/package/%40fungi.computer/mycelium/LICENSE) 财务报告和审定财务报表 [第三层( P)](https://npmcn.com/package/%40fungi.computer/mycelium/THIRD_PARTY_NOTICES)。 。 。 .

## MCP 磁共振

`@fungi.computer/mycelium/mcp` 出口 `createMcp({ catalog, authenticate })`, (中文(简体) ), 返回时 `{ handleRequest, close }`挂载 `handleRequest` 在主机的MCP 路线。 每个 HTTP 请求,包括通知和 断开,在每次操作之前。 也回来 `{ kind: "admitted", principal }` 或者说 `{ kind: "refused", status: 401 | 403 }`。 。 。 . 校长是主持人的"犬科演员":具有其角色的成员 (单位:千美元)`{ actor: { kind: "member", memberId }, role }`),或代理或团队密钥 (单位:千美元)`{ actor: { kind: "agent", agentId } }`, (中文(简体) ), `{ actor: { kind: "team-key", keyId } }`) (中文(简体) ). 它的ID识别证书的 演员,从不记名.

对于安装的 App 主机, `createMcpCatalog({ load, sandbox })` 适应普通 菌体能力来源. `load(principal)` 返回当前 `{ instructions, sources, grants }` 授权的本金。 又开始运行了 执行前和批准后。 每次援引必须重新开始 权威已读; 返回较旧的缓存快照无法建立当前 赠款。 赠款是明确的:一个省略的模块被拒绝。 供应的沙盒 仍然是主机的孤立执行器; 本条目不提供主机比对 倒计时。 此目录在进程内存中最多保存了8个打开的连接 ,并在请求完成后释放每个获得的工具运行时间.

执行持久代理主机 `McpCatalogProvider` 相对于现有会话 拥有者. `open` 在解剖学上保留了连接线, `resume` 返回只打开主会话,并且 `refresh` 发送电流 赠款。 MCP服务器独立检查被存储的主机. 会议 `call` 必须携带 `McpExecutionContext.access` 进入其普通的Mycelium 执行,包括直接工具,而不持续要求回调.

MCP不强制确认每封信。 东道主的持久认可 由所有者决定是否申请、等待批准或被拒绝 目录中的赠款仍然是授权上限,而不是批准决定。 明确 操作级别确认标签仍然使用表征并刷新 接受后的权力。 缺少或拒绝明确确认 执行。 服务器支持 MCP `2025-11-25` 可流式的HTTP 这样的批准 可以在未重放已完成的情况下暂停执行 操作。 核准申请中包含模块、操作和访问标签, 不属于证书数据或操作参数. `close()` 关闭运输流; 保留会话和连接的持续时间仍然与目录所有者有关. 运输过程损失后,恢复连接没有记录客户端 诱导能力与拒绝写作。 删除连接并初始化 一个新的谈判形式 再次引来.

## 常见问题

### @fungi\.computer/mycelium 是什么？

带有 Zod 授权执行门的效应自定范围能力生命周期

### 如何安装 @fungi\.computer/mycelium？

在项目目录运行 npm install @fungi\.computer/mycelium，或使用 pnpm add / yarn add / bun add。

### @fungi\.computer/mycelium 支持 TypeScript 吗？

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

### @fungi\.computer/mycelium 支持 ESM 还是 CommonJS？

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

### @fungi\.computer/mycelium 可以商用吗？

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

### @fungi\.computer/mycelium 的下载量有多少？

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

### @fungi\.computer/mycelium 还在维护吗？

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

