@alwith/module-drive

中文文档
0.6.2发布于 2026/11/05SEE LICENSE IN LICENSETypeScriptES Module零依赖构建来源已验证近 30 天下载 2880

预发共享驱动模块. 这个软件包将前端和私人本地 Drive 图书馆(native/); Tauri 插件 alwith-drive (crates.io)携带公共类型,打出的命令和交易的Rust API. 前端和库 ve

中文使用文档
文档目录5 节
  1. 入境点
  2. 东道方合同
  3. 当前边界
  4. 发展
  5. 桌面能力

@ alwith/ 模块驱动

预发共享驱动模块. 这个软件包将前端和私人本地 Drive 图书馆(native/); Tauri 插件 alwith-drive (crates.io)携带公共类型,打出的命令和交易的Rust API. 前端和库版本总是相匹配. 该引擎取自AL With桌面; desktop-provenance.json (kept in the source,未发布)记录出源修订.

入境点

  • @alwith/module-drive:生成协议类型,传输接口和控制器.
  • @alwith/module-drive/react:控制器订阅,发射装置/设置/状态面板,权限,徽章,质量-删除确认,本地化和被绑入帮助器. 注入主机阴影控制与导航.
  • @alwith/module-drive/content:评论,Markdown/HTML集成,协作,前题,版本,知识活,聊天建议,跨项目移动和文件链接帮助者.
  • @alwith/module-drive/tauri数字 : createTauriDriveTransport() 超过插件的命令和 drive:event。 。 。 .
  • @alwith/module-drive/commands: 生成了已键入的插件命令和事件.
  • @alwith/module-drive/styles.css:有范围化的语义-token风格.

东道方合同

登记册 .plugin(alwith_drive::init(Config::new(|app| ...).event_windows(["main"]).development_directory(development_directory))); 关闭打开一个 DriveService 从应用程序数据,共享所有者注册,默认本地目录,保留遗留的应用程序目录,设备身份和一个系统浏览器打开器. 启动失败由每个命令保存并返回 。 插件发送 drive:event 以新快照(生成/序列合同)取代一个已忽略的用户跳出的事件; 失败的运输流(队列溢出) 被报告为出错, 绝不是重同步 。 赠款 alwith-drive:default (单位:千美元)allow-request用于使用 Drive 的窗口. alwith-drive:allow-session-request (MCP和合作证书: mcpSessionConfig, (中文(简体) ), collabSession和 alwith-drive:allow-collaborative-write (单位:千美元)writeCollaborativeDocument)是单独的权限;授予每个应用程序与用户的 Drive 会话信任的窗口,例如桌面聊天窗口. 插件不将其限制在窗口标签上 。 保存从快照、日志和持续前端状态的证书 .

在获取初始快照前订阅 . createDriveController 缓冲此间隔并调和生成/序列间隙。 窗口的处理会停止它的收听器,而不是应用程序服务. 出发前 app.state::<Drive>()数字 : begin_shutdown() 一次,然后等待着 shutdown() (取消交易、排水和停止同步、结束事件交付),然后退出; is_stopped() 告诉出口钩让出口通过.

所有可以相接 Drive 根的本地文件系统突变必须贯穿 DriveService::with_filesystem (或 with_collaborative_filesystem, (中文(简体) ), with_move_to_filesystem)在主机路径授权后;放下未来会取消交易。 传递精确的写入目的地并删除源路径 。 它以完整的同步回合来序列本地更改,检查索引为只读/协作状态,并记录成功的去除意图. 这个粗糙的协调员可以在转移时延迟操作. 它不是一个OS sandbox:外部编辑和代理使用普通文件系统权限.

新的根必须默认为空. 主机可选择加入 DriveService::with_existing_default_root() ,以仅在已配置的默认根上采用已存在的文件。 这不会移动或删除文件,也不会放松对已注册根或自定义目录的所有权检查. 由cononical root,count/server和主机数据目录持续拥有所有权;重叠的root和被另一个剖面重用被拒绝. 遗留客户端不参与注册:共享默认目录需要相同的服务器/账户和严格的相继操作,之前的同步进程完全停止. 主机从 AL 升级并带有桌面通过 OpenOptions::new().legacy_desktop(LegacyDesktopProfile { store, settings, index }) 改为 DriveService::open数字 : store 属于桌面 drive.json 已命名仓库( e)baseUrl, (中文(简体) ), token, (中文(简体) ), deviceId, (中文(简体) ), localRoot, (中文(简体) ), userName, (中文(简体) ), settings 联合国 settings.json (单位:千美元)drive.* (按键)和 index 联合国 drive/index.sqlite3当插件没有时 profile.json 然而, Drive 报告桌面配置已配置; 第一个需要它的操作( 通常为 start)识别账户,采用"桌面"目录,将索引(有WAL文件)移入配置文件,并用"桌面"的偏好,下载阈值,服务器配置和本地服务器覆盖来写入配置文件. 没有网络,操作就失败了,进口就待处理; logout 拒绝它。 桌面除索引之外的其他文件从未被更改,一个书面的配置文件,在或不签名的情况下,永远结束导入.

证书被存储在原生原子剖面文件(Unix上只有所有者的权限);保护主机OS上包含的应用数据目录. 日志保存本地文件 。 退位保留了被取出引擎的清理/剩余行为. 测试撤销时使用专用账户和临时目录.

当前边界

在获得实际服务和多客户接受之前,这仍然是一体化候选人。 专门小组单独提供 launcher, (中文(简体) ), settings 财务报告和审定财务报表 status 模式; 主机提供本地目录选择、导航、设置路由和外部打开。 它利用现有的工作空间,而不是制造出第二棵树. 下载偏好在保留暂停状态的同时修改了引擎的加载.

通过挂起选择内容集成 DriveContentProvider,将管理过的文档以 CommentSurface合并 drivePreviewIntegrations 输入共享编辑器主机。 供应 saveDocument 并跟踪协作所有权。 路线授权协作原子写入 with_collaborative_filesystem; 普通写作仍然受约束 with_filesystem。锁定源编辑与协作预览权限分开。 内容条目需要它的可选的 Milkdown, Yjs 和编辑端对等依赖性.

挂载 DriveMassDeleteDialog 在主窗口中独立于面板可见度. ChatCondenseEntry 选择主机首选项存储其30天 snooze; 将批准的工作传递给 DriveCondense.initialJob。将对话框所有权保留在临时上下文菜单之外。 主机选择他们的OS链接方案;避免声称另一个应用程序的注册协议.

存档默认已禁用 。 主办方通过现有对话拥有者获得明确同意,进行出口对话,并提供 expectedGeneration 每个上传。 本地代码在过滤和上传前重新检查同意,私会排除,工作空间标记和生成. 存档元数据包含散列和状态,而不是第二个对话商店. 为每个明确的会话工作空间确定知识和MCP配置。 在启动本地引擎前配置一个技能目录 .

清除意图是继承的内置引擎状态;不提供崩溃安全删除/移动恢复。 共享服务没有添加数据库迁移计划。 编辑器主机必须保存脏缓冲并检查预期的文件版本. 原生的工作空间大小限制在下载后仍然适用. 只云文件不能在本地编辑;协作文件需要明确的所有者适配器而不是普通的源写.

生成的JSON数字字段使用JavaScript数字,匹配了已存在的传输. JavaScript安全整数范围以外的值不支持;远程标识符保存字符串变体.

发展

bun install
bun run bindings   # regenerates src/generated/commands.ts and src/contract.ts from the plugin
bun test src
cargo test --manifest-path rust/Cargo.toml
bun run build

使用仓库 scripts/build-npm.ts 建会者. 当地图书馆建成后, ALWITH_NATIVE_DIRECTORY=<target/debug> cargo test --manifest-path rust/Cargo.toml -- --ignored 练习客户端对抗它。 只有在明确发布决定和真实的原生,多进程和被支持的平台验证后才能发布.

桌面能力

  • DriveService::open(options, OpenOptions) 添加主机选择 : session_archive_directory (内在会话存档), default_preferences (未选择任何配置文件的首选项;桌面使用) knowledgeInject: true和 legacy_desktop (上经. DriveService::new(options) 保持之前的行为.
  • 会话归档: 与 session_archive_directory,在对话目录开始时驱动该目录,每5分钟一次 archiveSyncNow时 sessionArchive 正在打开, 跳过标为私下的会话 。 每发子弹 archive 活动(syncing 真实的,然后是假的 archiveStatus 报告本地档案。 没有目录, 主机会继续导出对话 archiveSession,以及 archiveSyncNow 是一个错误.
  • 服务器覆盖 : serverOverrides 编号 : setServerOverrides { overrides } 读取和更改 webBaseUrl, (中文(简体) ), collabRelayUrl, (中文(简体) ), transferConcurrency (第1至64段) maxUploadMb (0无限制). 他们坚持在签注范围之外。 地址仅在服务器未发布客户端配置时才应用; maxUploadMb 输出到服务器限制。 运行中的引擎会重新启动, 并保留暂停状态 .
  • moveToCloudDirectory { sources, directory } 将驱动项移动到未降落在本地的云文件夹并回答 cloudMove { moved, error }。 。 。 .
  • recheckCloudOnly 答题 cloudOnlyRecheck 及其计数,引擎重新检查时会发出 cloudOnly 事件(合同生成2).
  • searchUsers { query, limit? }:1至50个用户,缺席时为20个.
  • knowledgeContext 每个工作空间缓存10分钟,然后通过任何配置、偏好或引擎变化来清除.

版本与发布记录

@alwith/module-drive 共发布 15 个版本,首次发布于 2026/10/22;过去 12 个月发布了 15 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.6.2latest2026/11/052 天前
0.6.12026/11/043 天前
0.6.02026/11/034 天前
0.5.32026/11/035 天前
0.5.12026/10/308 天前
0.5.02026/10/308 天前

其他发布通道:next → 0.1.0-rc.24。

关于 @alwith/module-drive 的常见问题

@alwith/module-drive 是什么?

预发共享驱动模块. 这个软件包将前端和私人本地 Drive 图书馆(native/); Tauri 插件 alwith-drive (crates.io)携带公共类型,打出的命令和交易的Rust API. 前端和库 ve

如何安装 @alwith/module-drive?

在项目目录运行 npm install @alwith/module-drive,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(^19.3.1)、react-dom(^19.3.1)、@tauri-apps/api(^3.0.0-alpha.3)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@alwith/module-drive 支持 TypeScript 吗?

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

@alwith/module-drive 支持 ESM 还是 CommonJS?

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

@alwith/module-drive 可以商用吗?

@alwith/module-drive 使用 SEE LICENSE IN LICENSE 许可。许可条款写在包内的独立文件中,请阅读该文件确认可否商用。以上为概括,不构成法律意见,请以许可原文为准。

@alwith/module-drive 的下载量有多少?

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

@alwith/module-drive 还在维护吗?

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