@betteroffice/agents

中文文档
0.3.0发布于 2026/10/27Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 7648

搜索、检查、提议、预览和导出Office文档,通过打入的工具和MCP进行编辑.

中文使用文档
文档目录9 节
  1. 安装
  2. 使用量
  3. MCP 服务器
  4. SDK 软件
  5. 入境点
  6. MCP工具
  7. 编辑和参考
  8. 限制
  9. 文档

@ betteroffice/ 代理服务器

通过 TypeScript SDK 从代理服务器搜索、阅读、编辑和预览 DOCX、 XLSX 和 PPTX 文件 或 betteroffice-mcp 服务器。 代理处理大型文件的方式 : grep,读取一个小区域,进行精确的编辑,检查结果,导出.

不需要模型提供者,API密钥或代理框架.

安装

bun add @betteroffice/agents

要求节点.js 22或后.

使用量

MCP 服务器

bunx --package @betteroffice/agents betteroffice-mcp --root /absolute/path/to/documents

服务器在stdin/stdout上会说出MCP,所以从一个MCP客户端连接. 例如,使用 Codex :

codex mcp add betteroffice -- /absolute/path/to/node_modules/.bin/betteroffice-mcp --root /absolute/path/to/documents
旗帜说明
--root <directory>要求。 每个文件路径都会针对它解决,包括同义链接.
--read-only仅展示检查工具:不推荐、编辑、接受或导出.

导出时总是写出一个新的文件, 并且绝不覆盖已有的文件 。 路径检查不是 操作系统沙盒,所以使用您控制的工作空间目录.

SDK 软件

import { readFile, writeFile } from 'node:fs/promises';
import { openDocx } from '@betteroffice/agents';
import { renderDocxPage } from '@betteroffice/agents/render';

const doc = await openDocx(await readFile('report.docx'), {
  name: 'report.docx',
  renderer: renderDocxPage,
});

try {
  const [hit] = doc.grep({ query: '€4.2 million' }).matches;
  if (!hit) throw new Error('Revenue text not found');
  const proposal = doc.propose({
    author: 'report-agent',
    note: 'Update the executive summary revenue',
    edits: [{ match: hit.match, newText: '€5.1 million' }],
  });

  const preview = await doc.render(1, proposal.id);
  await writeFile('preview.png', preview.png);
  console.log(doc.review(proposal.id), await doc.verify(proposal.id));
  await writeFile('report-revised.docx', await doc.export(proposal.id), { flag: 'wx' });
} finally {
  doc.close();
}

出口待决提案后,该文件保持不变。 要应用它,打电话 await doc.accept(proposal.id) 接下来 doc.export() 没有身份证 对于Word跟踪的变化, 调用 doc.accept(id, { tracked: true, date: '2026-09-27T12:00:00Z' })。 。 。 .

入境点

导出说明
openDocx(bytes, { name?, renderer? })在自己的会话中打开 DOCX 文件.
attachDocx(session, options?)包装活编辑器 YrsSession。关闭适配器后,会话开始.
openXlsx(bytes, { name?, wasm? })打开 XLSX 工作手册:单元格读取和单元格提议.
attachXlsx(handle, options?)包成活页 WorkbookHandle。 。 。 .
openPptx(bytes, { name?, wasm? })打开 PPTX 演示文稿:大纲、幻灯片读取、文本提案、原子 edit 批次和 preview。 。 。 .
attachPptx(handle, options?)包成活页 PresentationHandle。 。 。 .
renderDocxPage (从) @betteroffice/agents/render(中文(简体) )DOCX 页面预览的节点画布渲染器 .
renderPptxSlidePPTX 幻灯片预览的节点画布渲染器.
createOfficeMcpServer({ root, renderer?, readOnly? }) (从) @betteroffice/agents/mcp(中文(简体) )MCP服务器,用于连接自身运输的主机.

DOCX 和 PPTX 文档阶段文本编辑 grep, (中文(简体) ), read 财务报告和审定财务报表 propose; 工作手册的使用 readCells 财务报告和审定财务报表 proposeCells 换句话说 所有适配器共享 review, (中文(简体) ), accept, (中文(简体) ), reject, (中文(简体) ), verify, (中文(简体) ), export 财务报告和审定财务报表 close。 。 。 . openXlsx 财务报告和审定财务报表 openPptx 在节点装入捆绑的 Web Assembly; 在 a 浏览器,将模块字节传递为 wasm。浏览器中的 DOCX 预览需要自定义 DocumentRenderer 而不是节点帆布渲染器.

MCP工具

工具目的
office_files列出DOCX,XLSX和PPTX文件,子目录和打开文档ID.
office_open打开文件并返回其文档ID,格式和能力.
office_outline通过 DOCX 段落, PPTX 幻灯片段落或 XLSX 工作表的页面.
office_grep带有上下文的字形搜索;返回匹配ID或单元格手柄.
office_read读取段落或单元格字段; DOCX 读取内容包括运行格式.
office_cellsXLSX:读取一个有值,公式和单元格手柄的A1范围.
office_proposeDOCX/PPTX: 阶段1-32文本替换为 { match, newText }。 。 。 .
office_propose_cellsXLSX:阶段1-32全细胞输入或公式.
office_review列出提案或显示一项提案的修改前后.
office_accept将提案应用为倒置步骤; DOCX 可以将其保留为跟踪更改 .
office_reject弃取正议.
office_renderDOCX:当前或拟议页面的PNG.
office_verify保存并重新打开内存; 检查运行的报告 .
office_export将已接受的编辑或待决建议写入新文件 .
office_close发布一份公开文件及其建议.
docx_editDOCX: 原子直接编辑段落样式、粗体/斜体/下行、段落、表格行、单元格合并、注释(添加、回复、解决或重开)和页面设置 insert_section_break 财务报告和审定财务报表 set_section· ; runFormat: 'anchor' 复制插入时的第一个普通运行.
xlsx_outline, (中文(简体) ), xlsx_read_rangeXLSX:工作表,被使用的范围,表格和被定义的名称;范围读取有版本.
xlsx_write_range, (中文(简体) ), xlsx_format, (中文(简体) ), xlsx_sortXLSX:已版本的值和公式写入,格式化和排序.
xlsx_list_defined_names, (中文(简体) ), xlsx_edit_defined_namesXLSX:用页标列出完整的名称;在原子上设置或删除工作簿和工作表所标注的名称,包括隐藏的旗帜.
xlsx_edit_grid, (中文(简体) ), xlsx_edit_sheetsXLSX:插入或删除行和列;添加,重命名,删除或移动工作表.
xlsx_set_auto_filterXLSX:设置,扩展或去除工作表的过滤按钮;表格过滤器被拒绝.
xlsx_list_charts, (中文(简体) ), xlsx_read_chart_text, (中文(简体) ), xlsx_edit_chartsXLSX:通过完整的标题,名称和引用来检查工作表和图表表及页面上的图表;替换或去掉标题并编辑序列名称,类别 refs和值 refs 原子.
xlsx_list_conditional_formats, (中文(简体) ), xlsx_read_conditional_format_formula, (中文(简体) ), xlsx_edit_conditional_formatsXLSX: 通过完整的公式列出绑定规则预览和页面; 添加或删除 cellIs 财务报告和审定财务报表 expression 使用不同格式的规则.
xlsx_find_replace, (中文(简体) ), xlsx_previewXLSX: 查找并替换已显示的文本; 范围为 PNG.
pptx_outline, (中文(简体) ), pptx_read_slidePPTX:幻灯片,布局和形状;形状树,段落,运行和注释. office_outline 与 story: 'comments' 列出讨论情况; office_read 读取全文.
pptx_edit, (中文(简体) ), pptx_previewPPTX:原子文本,幻灯片,布局映射,形状,图像,注释,注释(add_comment, (中文(简体) ), reply_comment, (中文(简体) ), resolve_comment)和表格结构编辑(insert_table_row, (中文(简体) ), delete_table_row, (中文(简体) ), insert_table_column, (中文(简体) ), delete_table_column); 幻灯片的PNG.

编辑和参考

  • 参考资料ref, (中文(简体) ), match, (中文(简体) ), revision, (中文(简体) ), version)属于公开会议。 重新打开文件 创造出新的。 页面,幻灯片和段落编号为一基;文本抵消为零基.
  • DOCX和PPTX搜索默认为字面和大小写不敏感. XLSX 密码 office_grep 搜索 以区分大小写的方式显示值.
  • 一项提案有1-32个单独的替换人,在一份临时副本之前经过验证 原子更新. 改变目标使其变得僵化(STALE_TARGET:再读再求婚.
  • 新文本采用第一个被替换字符的格式。 保留几种风格 将该段改为整个段.
  • 段落间隔、内嵌和现有跟踪改动不受文本提案的影响.
  • 承诺的 XLSX 或 PPTX 编辑无效所有未完成的手柄、光标和为此提出的建议 文档.
  • 结果被分解(nextCursor, (中文(简体) ), nextOffset, (中文(简体) ), nextStart) (中文(简体) ). 结果的一页从来不是 彻底搜索.

限制

  • 最多16 000个UTF-16单元的读取返回和100个格式化运行;最多100个项目的读取返回.
  • MCP服务器最多可打开10个文件,每个文件最多64个米B,每个文件最多可保存64个提案 文档。 所有状态都在内存中:关闭客户端前导出.
  • Stdin上面的MCP消息封顶为一米B.
  • verify 证实保存的文件重新打开 。 它不检查视觉的忠诚度或者 编辑完全正确;为此使用读取并预览.
  • 预览使用 BetterOffice 版式引擎和捆绑的字体,而不是像素等同的字体 办公室 安装 @betteroffice/fonts-cjk 为CJK格言.

文档

版本与发布记录

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

版本发布日期距今
0.3.0latest2026/10/2711 天前
0.2.02026/10/2613 天前
0.1.02026/10/2315 天前
0.0.0-stage2026/10/2315 天前

关于 @betteroffice/agents 的常见问题

@betteroffice/agents 是什么?

搜索、检查、提议、预览和导出Office文档,通过打入的工具和MCP进行编辑.

如何安装 @betteroffice/agents?

在项目目录运行 npm install @betteroffice/agents,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 betteroffice-mcp,可以用 npx betteroffice-mcp 直接运行。

@betteroffice/agents 支持 TypeScript 吗?

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

@betteroffice/agents 支持 ESM 还是 CommonJS?

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

@betteroffice/agents 需要什么版本的 Node.js?

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

@betteroffice/agents 可以商用吗?

@betteroffice/agents 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@betteroffice/agents 的下载量有多少?

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

@betteroffice/agents 还在维护吗?

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