@b4run/workspace

中文文档
0.15.8发布于 2026/10/31MITTypeScriptES Module构建来源已验证近 30 天下载 5067

B4.run代理应用程序的文件系统和 shell 工作空间合同及工具.

中文使用文档
文档目录10 节
  1. 安装
  2. 示例
  3. 运行时间和稳定性
  4. 获取初始源
  5. 检查文本工作空间
  6. 读取另一个线程的工作空间
  7. 支持的表面
  8. 相关
  9. 成熟和支持
  10. 许可证

@ b4run/ 工作空间

B4. 运行代理工作空间的文件系统和 shell后端合同.

当 : 您正在向 B4 运行应用程序提供文件系统或 shell 后端、 中间软件或工作空间工具 .

安装

pnpm add @b4run/workspace

示例

import { compose, type FilesystemBackend, withFilesystemLogging } from "@b4run/workspace"
import { localFilesystem } from "@b4run/workspace/node"

const base: FilesystemBackend = localFilesystem({ maxFileBytes: 512 * 1024 })
const filesystem = compose(withFilesystemLogging())(base)

运行时间和稳定性

获取初始源

节点入口提供 captureWorkspaceSource, (中文(简体) ), createSourceBundle, (中文(简体) ), verifySourceBundle,以及 readSourceFile 对于不可改变的源捆.

import { captureWorkspaceSource, readSourceFile } from "@b4run/workspace/node"

const source = await captureWorkspaceSource(appRoot, {
  directory: "fixtures/demo",
  include: ["index.ts", "package.json"],
  files: [{ path: "TASK.md", text: "Repair the failing example.\n" }],
})
const original = readSourceFile(source, "index.ts")

路径解析相对 appRoot。 。 。 . include 确切的文件目录; 意外文件导致抓取失败 . excludeDirectories 可明确省略 已有目录子树, 如已安装的依赖 。 其他条目 能够声明 file 路径相对 appRoot 而不是内含 text。 。 。 .

抓取会保存二进制字节和可执行标记,拒绝符号链接和 模糊路径,并返回一个内容不可变的经过验证的文摘。 限制是 10 000个不同的文件系统路径(包括应用程序根和祖先) 目录),每个文件有16个米B,以及64个米B的总文件内容. 源路径 使用具有一致目录外壳的便携式ASCII子集.

抓取读取信任的应用程序树并拒绝在 读取; 这不是原子文件系统快照 。 它不会创造出一个沙盒, 注册运行时间配置,或提供工作空间生命周期恢复.

检查文本工作空间

inspectWorkspace 接受权限约束 ctx.fs 作者手柄, a SandboxHandle,或任何 WorkspaceReadSource - 包括 SandboxWorkspaceReader 提供商的手从 openWorkspaceReader。它们都使用相同的有界限的横道 并需要叶元数据(stat 编号 : lstat)和原始二进制读取;缺少支持 未关闭 .

import { inspectWorkspace } from "@b4run/workspace"

const inventory = await inspectWorkspace(ctx.fs, {
  signal: ctx.signal,
  excludeRootDirectories: [".git"],
  expectedRootSymlinks: { node_modules: "/opt/project/node_modules" },
})
// inventory.files: relative path → exact UTF-8 text (including a leading BOM)
// inventory.symlinks: validated root name → exact readlink target

默认为一万个条目,每个文件有2个米B,以及16个米B文件总字节; maxEntries, (中文(简体) ), maxFileBytes,以及 maxTotalBytes 接受非负式安全整数. 目录和省略的根项数到条目限制; 工作空间 根本身没有。 限制检查报告大小和实际返回的字节. 结果还包括: entries 财务报告和审定财务报表 totalBytes。文件和链接记录 无效原型,所以文件名如下: __proto__ 仍然是普通键.

排除的根名可能缺失,但当存在时必须是目录. 预期 根链接是需要的,必须与其准确、非正常的目标相匹配。 他们 目标从不穿越。 嵌入式条目没有根排除. 所有其他 符号链接,非文件/非目录条目,可执行文件,无效的UTF-8和 含有NUL的二进制数据被拒绝. 叶名不能穿行目录 . 接受没有NUL的UTF-8文本;这不是一个文件格式的分类器.

读取另一个线程的工作空间

withWorkspaceReader(provider, { threadId, signal }, operation) 打开提供者的 对一个线程的工作空间存储的可选只读视图, 将其交给 operation, (中文(简体) ), 并在成功和失败的道路上关闭它。 读者不带文字 方法和没有命令后端,读取不会扰乱线程的活性 沙盒 openWorkspaceReader 可选于 SandboxProvider; 提供者 省略它制造出来的 withWorkspaceReader 而不是默默无声地还原.

这是已经信任的呼叫者的主机侧 API 。 这不是授权 边框,不是代理人可以调用的工具,也不是HTTP表面.

通过一个信号检查每个文件系统调用周围的取消; 沙盒后端 他们也会收到 BackendContext。作者手柄保留现有的 许可政策和取消行为。 帮助者无法中断 正在飞行中。 它使用无外壳和主机文件系统API.

视察不是原子快照,也不是新的隔离边界。 元数据, 列出,并读取单独的后端调用,并可以与并行的作者进行比赛; 写作时要经过考核 或重新鉴定 精确链接验证链接身份, 而不是其外部目标的内容。 后端读取必须尊重所提供的 返回数据前绑定分配的字节上限 .

支持的表面

  • @b4run/workspace 是一个边缘安全、支持的应用程序表面.
  • @b4run/workspace/node 是一个唯一的节点,支持应用程序表面.

工作空间后端定义了运行地点;它们本身不是孤立的边界. 在未信任的执行必须离开主机进程时使用沙盒提供者.

成熟和支持

B4.run为1.0前置,其公用地表可以改变. 所有可公布的 B4. 运行包作为一个固定组一起发布; 审查 @b4run/workspace 更改日志 财务报告和审定财务报表 升级指南 升级前。 用于支持, 使用 GitHub 讨论; 报告缺陷 GitHub 问题。 。 。 .

许可证

麻省理工学院. 见 仓库许可证。 。 。 .

版本与发布记录

@b4run/workspace 共发布 23 个版本,首次发布于 2026/09/09;过去 12 个月发布了 23 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.15.8latest2026/10/317 天前
0.15.72026/10/2810 天前
0.15.52026/10/2712 天前
0.15.42026/10/2612 天前
0.15.22026/10/2514 天前
0.15.12026/10/2414 天前

关于 @b4run/workspace 的常见问题

@b4run/workspace 是什么?

B4.run代理应用程序的文件系统和 shell 工作空间合同及工具.

如何安装 @b4run/workspace?

在项目目录运行 npm install @b4run/workspace,或使用 pnpm add / yarn add / bun add。

@b4run/workspace 支持 TypeScript 吗?

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

@b4run/workspace 支持 ESM 还是 CommonJS?

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

@b4run/workspace 需要什么版本的 Node.js?

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

@b4run/workspace 可以商用吗?

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

@b4run/workspace 的下载量有多少?

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

@b4run/workspace 还在维护吗?

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