- 核心配置: IDENTITY, USER, SOUL, AGENTS, TOOLS, HEARTBEAT, MEMORY - memory/: 每日总结和临时记录 - skills/: 所有已安装技能 - notes/: 语音配置笔记
23 KiB
DOC 编辑引擎 API 参考
本文件包含腾讯文档 DOC 编辑引擎(docengine)的所有工具 API 说明。这些工具专用于 Word 文档的编辑操作,包括文本插入、替换、查找、段落设置、文本属性修改、任务插入、图片插入、分页符和表格插入等。
⚠️ 注意:本文档中的工具仅适用于 Word 文档(doc_type: word) 类型,不适用于智能文档(smartcanvas)等其他类型。
服务信息
| 项目 | 说明 |
|---|---|
| 服务名 | tencent-docengine |
| API 地址 | https://docs.qq.com/api/v6/doc/mcp |
| 调用方式 | mcporter call tencent-docengine <工具名> |
| Token | 与 tencent-docs 共用同一个 Token,完成 tencent-docs 授权(auth.md)后自动配置,无需单独鉴权 |
| 文档类型 | 仅支持 Word 文档类型 |
⚠️ 推荐优先使用
file_url(文档链接)而非file_id来标识文档,用户通常直接提供文档链接,使用更便捷。编辑前推荐先调用
get_outline获取文档大纲结构,了解各标题和正文的可操作位置。当用户要求「在文档开头插入」时,需向用户确认是在「文档标题之前」(使用
HEADING_LEVEL_TITLE的title_start)还是「正文开头/标题之后」(使用HEADING_LEVEL_TITLE的content_start)插入,未明确时应主动询问。
通用说明
文档标识
所有 docengine 工具都支持两种文档标识方式(二选一):
file_url(string): ⭐ 推荐 腾讯文档的文档链接(如https://docs.qq.com/doc/xxxxxxxx),直接使用用户提供的文档链接即可file_id(string): 文档唯一标识符
💡 推荐优先使用
file_url:用户通常会直接提供文档链接,使用file_url无需额外解析file_id,更加便捷。
响应结构
编辑类 API 返回:
base_version(int64): 文档的基准版本号new_version(int64): 编辑后的文档新版本号err_msg(string): 错误信息(成功时为空)trace_id(string): 调用链追踪 ID
查询类 API(如 find)返回:
read_result.version(int64): 文档当前版本号read_result.trace_id(string): 调用链追踪 ID
工具列表
| 工具名称 | 功能说明 |
|---|---|
| find | 查找文本所在位置,返回匹配位置和上下文 |
| insert_text | 在指定位置插入文本 |
| insert_paragraph | 在指定位置插入段落,支持设置标题级别、编号类别和编号级别 |
| replace_text | 替换指定范围内的文本 |
| find_and_replace_text | 查找并替换文档中所有匹配的文本 |
| update_text_property | 更新指定范围内文本的属性(加粗、斜体、下划线、删除线、颜色等) |
| insert_task | 在指定位置插入一个或多个任务,支持设置任务状态和内容文本 |
| insert_image | 在指定位置插入图片 |
| insert_page_break | 在指定位置插入分页符 |
| insert_table | 在指定位置插入表格 |
| insert_comment | 在指定范围插入批注 |
| replace_image | 替换文档中的图片 |
| get_last_operable_pos | 获取文档末尾最后一个可操作位置的索引及前面内容 |
| get_outline | 获取文档大纲结构(标题层级树),包含各标题和正文的可操作起止位置 |
工具详细说明
1. find
功能说明
在 Word 文档中查找指定文本,返回所有匹配位置及其上下文。如果用户需要替换文本,建议先使用 find 查找文本所在的各处位置,让用户确认要替换哪个位置后,再调用 replace_text 进行精确替换。
调用示例
{
"file_url": "https://docs.qq.com/doc/xxxxxxxx",
"text": "要查找的文本"
}
参数说明
file_url(string, 推荐): 腾讯文档的文档链接,与file_id二选一,推荐优先使用file_id(string, 可选): 文档唯一标识符,与file_url二选一text(string, 必填): 要查找的文本内容
返回值说明
{
"text_and_locations": [
{
"range": { "begin": 10, "end": 15 },
"related_text": "...上下文文本..."
}
],
"read_result": {
"version": 1,
"trace_id": "trace_1234567890"
}
}
text_and_locations(array): 匹配到的文本位置列表range.begin(uint32): 匹配文本的起始位置range.end(uint32): 匹配文本的结束位置related_text(string): 匹配位置的上下文文本
read_result.version(int64): 当前文档版本号read_result.trace_id(string): 调用相关的可追踪链路id
推荐使用流程
- 调用
find查找目标文本,获取所有匹配位置 - 将匹配结果展示给用户,让用户选择要替换的位置
- 根据用户选择,调用
replace_text传入对应的range进行替换
2. insert_text
功能说明
在 Word 文档的指定位置插入文本。
调用示例
{
"file_url": "https://docs.qq.com/doc/xxxxxxxx",
"text": "要插入的文本内容",
"index": 0
}
参数说明
file_url(string, 推荐): 腾讯文档的文档链接,与file_id二选一,推荐优先使用file_id(string, 可选): 文档唯一标识符,与file_url二选一text(string, 必填): 要插入的文本内容index(integer, 必填): 插入位置的索引,从 0 开始,请确认好索引后再操作
返回值说明
{
"base_version": 1,
"new_version": 2,
"trace_id": "trace_1234567890",
"err_msg": ""
}
3. insert_paragraph
功能说明
在 Word 文档的指定位置插入段落。支持设置标题级别、编号类别和编号级别,可用于创建标题、有序/无序列表等。
调用示例
{
"file_url": "https://docs.qq.com/doc/xxxxxxxx",
"idx": 0,
"level": "1",
"type": "1",
"numbering_lvl": "1",
"space_cnt": 0
}
参数说明
file_url(string, 推荐): 腾讯文档的文档链接,与file_id二选一,推荐优先使用file_id(string, 可选): 文档唯一标识符,与file_url二选一idx(integer, 必填): 插入位置的索引,从 0 开始level(string, 可选): 标题级别,取值:"0": 未指定(保持原样)"1"~"9": 一级标题 ~ 九级标题"10": 正文(无标题)"11": 标题"12": 副标题
type(string, 可选): 编号类别,取值:"0": 未知/无编号"1": 圆点列表(无序列表)"2": 数字编号列表(有序列表)
numbering_lvl(string, 可选): 编号级别,取值与level相同("1"~"9")space_cnt(integer, 可选): 空格数量
返回值说明
{
"base_version": 1,
"new_version": 2,
"trace_id": "trace_1234567890",
"err_msg": ""
}
4. replace_text
功能说明
替换 Word 文档中指定范围内的文本为新文本。建议先使用 find 工具查找文本位置,让用户确认后再调用此工具进行精确替换。
调用示例
{
"file_url": "https://docs.qq.com/doc/xxxxxxxx",
"text": "替换后的文本内容",
"ranges": [{"start_index": 0, "end_index": 5}]
}
参数说明
file_url(string, 推荐): 腾讯文档的文档链接,与file_id二选一,推荐优先使用file_id(string, 可选): 文档唯一标识符,与file_url二选一text(string, 必填): 替换后的文本内容ranges(array, 必填): 需要替换的文本范围列表,每个范围包含start_index和end_index
返回值说明
{
"base_version": 1,
"new_version": 2,
"trace_id": "trace_1234567890",
"err_msg": ""
}
5. find_and_replace_text
功能说明
在 Word 文档中查找所有匹配的文本并直接替换为新文本。与 find + replace_text 的组合不同,此工具会直接替换所有匹配项,用户无法选择性地替换某个特定位置。
调用示例
{
"file_url": "https://docs.qq.com/doc/xxxxxxxx",
"old_text": "要查找的文本",
"new_text": "替换后的文本"
}
参数说明
file_url(string, 推荐): 腾讯文档的文档链接,与file_id二选一,推荐优先使用file_id(string, 可选): 文档唯一标识符,与file_url二选一old_text(string, 必填): 要查找的原始文本new_text(string, 必填): 替换后的新文本
返回值说明
{
"base_version": 1,
"new_version": 2,
"trace_id": "trace_1234567890",
"err_msg": ""
}
6. update_text_property
功能说明
更新 Word 文档中指定范围内文本的属性,支持设置加粗、斜体、下划线、删除线、小型大写、字体颜色、背景颜色等。建议先使用 find 工具查找文本位置,获取 range 后再调用此工具修改文本属性。
调用示例
{
"file_url": "https://docs.qq.com/doc/xxxxxxxx",
"ranges": [{"begin": 0, "end": 5}],
"property": {
"bold": true,
"color": "#FF0000"
}
}
参数说明
file_url(string, 推荐): 腾讯文档的文档链接,与file_id二选一,推荐优先使用file_id(string, 可选): 文档唯一标识符,与file_url二选一ranges(array, 必填): 需要更新属性的文本范围列表,每个范围包含begin和endproperty(object, 必填): 要设置的文本属性,支持以下字段:bold(bool, 可选): 是否加粗italic(bool, 可选): 是否斜体underline(bool, 可选): 是否下划线strikethrough(bool, 可选): 是否删除线small_caps(bool, 可选): 是否小型大写color(string, 可选): 字体颜色,如 "#FF0000"background_color(string, 可选): 背景颜色,如 "#FFFF00"
返回值说明
{
"base_version": 1,
"new_version": 2,
"trace_id": "trace_1234567890",
"err_msg": ""
}
7. insert_task
功能说明
在 Word 文档的指定位置插入一个或多个任务(待办事项)。每个任务支持设置任务状态(待办/已完成)和任务内容文本。
调用示例
插入单个任务:
{
"file_url": "https://docs.qq.com/doc/xxxxxxxx",
"idx": 0,
"tasks": [
{
"state": 1,
"content": "完成需求文档编写"
}
]
}
插入多个任务:
{
"file_url": "https://docs.qq.com/doc/xxxxxxxx",
"idx": 5,
"tasks": [
{
"state": 1,
"content": "完成需求文档编写"
},
{
"state": 2,
"content": "完成接口设计"
},
{
"state": 1,
"content": "编写单元测试"
}
]
}
参数说明
file_url(string, 推荐): 腾讯文档的文档链接,与file_id二选一,推荐优先使用file_id(string, 可选): 文档唯一标识符,与file_url二选一idx(integer, 必填): 插入位置的索引,从 0 开始tasks(array, 必填): 任务列表,支持一次插入多个任务,每个任务包含:state(integer, 必填): 任务状态枚举值,不允许传递0值,取值:1: 待办(未完成)2: 已完成
content(string, 必填): 任务内容文本
返回值说明
{
"base_version": 1,
"new_version": 2,
"trace_id": "trace_1234567890",
"err_msg": ""
}
8. insert_image
功能说明
在 Word 文档的指定位置插入图片。
调用示例
{
"file_url": "https://docs.qq.com/doc/xxxxxxxx",
"image_url": "https://example.com/image.png",
"index": 0,
"width": 400,
"height": 300
}
参数说明
file_url(string, 推荐): 腾讯文档的文档链接,与file_id二选一,推荐优先使用file_id(string, 可选): 文档唯一标识符,与file_url二选一image_url(string, 必填): 图片的 URL 地址index(integer, 必填): 插入位置的索引,从 0 开始width(integer, 可选): 图片宽度(像素)height(integer, 可选): 图片高度(像素)addon_source(string, 可选): 插件来源类型addon_id(string, 可选): 插件 IDanchor_id(string, 可选): 锚点 IDextra_data(string, 可选): 额外数据
返回值说明
{
"base_version": 1,
"new_version": 2,
"trace_id": "trace_1234567890",
"err_msg": ""
}
9. insert_page_break
功能说明
在 Word 文档的指定位置插入分页符。
调用示例
{
"file_url": "https://docs.qq.com/doc/xxxxxxxx",
"index": 10
}
参数说明
file_url(string, 推荐): 腾讯文档的文档链接,与file_id二选一,推荐优先使用file_id(string, 可选): 文档唯一标识符,与file_url二选一index(integer, 必填): 插入位置的索引,从 0 开始
返回值说明
{
"base_version": 1,
"new_version": 2,
"trace_id": "trace_1234567890",
"err_msg": ""
}
10. insert_table
功能说明
在 Word 文档的指定位置插入表格。
调用示例
{
"file_url": "https://docs.qq.com/doc/xxxxxxxx",
"index": 0,
"rows": 3,
"cols": 4
}
参数说明
file_url(string, 推荐): 腾讯文档的文档链接,与file_id二选一,推荐优先使用file_id(string, 可选): 文档唯一标识符,与file_url二选一index(integer, 必填): 插入位置的索引,从 0 开始rows(integer, 必填): 表格行数cols(integer, 必填): 表格列数
返回值说明
{
"base_version": 1,
"new_version": 2,
"trace_id": "trace_1234567890",
"err_msg": ""
}
11. insert_comment
功能说明
在 Word 文档的指定范围内插入批注(评论)。
调用示例
{
"file_url": "https://docs.qq.com/doc/xxxxxxxx",
"text": "这里需要修改措辞",
"range": {"begin": 5, "end": 15}
}
参数说明
file_url(string, 推荐): 腾讯文档的文档链接,与file_id二选一,推荐优先使用file_id(string, 可选): 文档唯一标识符,与file_url二选一text(string, 必填): 批注内容range(object, 必填): 批注关联的文本范围,包含begin和endref_id(string, 可选): 评论ID,用于回复已有批注
返回值说明
{
"base_version": 1,
"new_version": 2,
"trace_id": "trace_1234567890",
"err_msg": ""
}
12. replace_image
功能说明
替换 Word 文档中的图片。可以通过旧图片的 URL 或 ID 定位要替换的图片,并指定新图片。
调用示例
{
"file_url": "https://docs.qq.com/doc/xxxxxxxx",
"idx": 0,
"source": 1,
"old_url": "https://example.com/old_image.png",
"new_url": "https://example.com/new_image.png"
}
参数说明
file_url(string, 推荐): 腾讯文档的文档链接,与file_id二选一,推荐优先使用file_id(string, 可选): 文档唯一标识符,与file_url二选一idx(integer, 必填): 图片位置索引source(integer, 必填): 图片来源类型,0-未知,1-链接来源,2-附件来源old_url(string, 可选): 旧图片的 URL,与old_id二选一old_id(string, 可选): 旧图片的 ID,与old_url二选一new_url(string, 可选): 新图片的 URL 地址,与content二选一content(string, 可选): 新图片的 base64 内容,与new_url二选一
返回值说明
{
"base_version": 1,
"new_version": 2,
"trace_id": "trace_1234567890",
"err_msg": ""
}
13. get_last_operable_pos
功能说明
获取 Word 文档正文(main story)最后一个可操作位置的索引,以及该位置前面最多 10 个字符的内容。在需要向文档末尾追加内容时,可先调用此接口获取末尾可操作位置,再使用 insert_text/insert_image 等接口在该位置插入内容。
调用示例
{
"file_url": "https://docs.qq.com/doc/xxxxxxxx"
}
参数说明
file_url(string, 推荐): 腾讯文档的文档链接,与file_id二选一,推荐优先使用file_id(string, 可选): 文档唯一标识符,与file_url二选一
返回值说明
{
"position": 100,
"preceding_text": "...前面内容...",
"version": 1
}
position(int64): 最后一个可操作位置的索引preceding_text(string): 该位置前面最多 10 个字符的内容version(int64): 当前文档版本号
14. get_outline
功能说明
获取 Word 文档的完整大纲结构(树形),返回文档标题、各级标题及其下正文的可操作位置范围。可用于:
- 了解文档整体结构和层级关系
- 获取指定标题或正文区域的精确位置(
title_start/title_end、content_start/content_end),以便在对应位置插入或替换内容 - 在操作前先掌握文档大纲,避免盲目使用
find查找
⚠️ 关于「在文档开头插入」的位置说明:文档大纲的根节点通常是
HEADING_LEVEL_TITLE(文档标题),其title_start表示文档标题之前的位置,content_start表示标题之后、正文开头的位置。当用户要求"在文档开头插入内容"时,需要向用户确认具体含义:
- 在文档标题之前插入:使用
HEADING_LEVEL_TITLE节点的title_start- 在正文开头插入(标题之后):使用
HEADING_LEVEL_TITLE节点的content_start如果用户未明确说明,应主动询问确认。
调用示例
{
"file_url": "https://docs.qq.com/doc/xxxxxxxx"
}
参数说明
file_url(string, 推荐): 腾讯文档的文档链接,与file_id二选一,推荐优先使用file_id(string, 可选): 文档唯一标识符,与file_url二选一
返回值说明
{
"outlines": [
{
"title": "文档标题",
"level": "HEADING_LEVEL_TITLE",
"title_start": 0,
"title_end": 5,
"content_start": 6,
"content_end": 100,
"children": [
{
"title": "第一章 概述",
"level": "HEADING_LEVEL_1",
"title_start": 6,
"title_end": 12,
"content_start": 13,
"content_end": 50,
"children": [
{
"title": "1.1 背景",
"level": "HEADING_LEVEL_2",
"title_start": 13,
"title_end": 18,
"content_start": 19,
"content_end": 50,
"children": []
}
]
}
]
}
],
"version": 1
}
outlines(array): 大纲根节点列表(树形结构),每个节点包含:title(string): 标题文本内容level(string): 标题级别,取值说明:HEADING_LEVEL_TITLE(11): 文档标题HEADING_LEVEL_1~HEADING_LEVEL_9(1~9): 一级标题 ~ 九级标题HEADING_LEVEL_BODY(10): 正文(无标题)
title_start(int64): 标题可操作的起始位置(可在此位置前插入内容)title_end(int64): 标题可操作的结束位置content_start(int64): 该标题下正文可操作的起始位置(在标题下方插入内容时使用)content_end(int64): 该标题下正文可操作的结束位置(在正文末尾追加内容时使用)children(array): 子目录项列表(递归结构,构成树形大纲)
version(int64): 当前文档版本号
典型工作流示例
编辑已有 Word 文档
1. 调用 get_outline 获取文档大纲结构,了解文档的标题层级和各区域的可操作位置
2. 根据大纲定位目标区域,或调用 find 查找具体文本位置
3. 按需调用工具进行编辑:
- 插入文本:insert_text
- 插入段落:insert_paragraph
- 替换文本:replace_text
- 全文替换:find_and_replace_text
- 修改文本样式:update_text_property
- 插入任务:insert_task
- 插入图片:insert_image
- 替换图片:replace_image
- 插入分页符:insert_page_break
- 插入表格:insert_table
- 插入批注:insert_comment
- 获取文档大纲:get_outline
查找并替换文本(精确替换)
1. 调用 find 查找目标文本,获取所有匹配位置
2. 将匹配结果展示给用户,让用户选择要替换的位置
3. 调用 replace_text 传入对应的 range 进行精确替换
查找并替换文本(全部替换)
1. 直接调用 find_and_replace_text,一次性替换所有匹配项
格式化文本
1. 调用 find 查找目标文本,获取文本的 range
2. 调用 update_text_property 设置文本属性(加粗、颜色等)
向文档末尾追加内容
1. 调用 get_last_operable_pos 获取文档末尾可操作位置
2. 使用返回的 position 作为 index,调用 insert_text / insert_image / insert_table 等工具追加内容
在指定标题下插入内容
1. 调用 get_outline 获取文档大纲,找到目标标题节点
2. 使用节点的 content_start 作为插入位置(在标题下方开头插入)
或使用 content_end 作为插入位置(在标题下方正文末尾追加)
3. 调用 insert_text / insert_paragraph / insert_image 等工具在对应位置插入内容
在文档开头插入内容
1. 调用 get_outline 获取文档大纲
2. 明确用户意图——是要在「文档标题前」还是「正文开头」插入:
- 文档标题前:使用 HEADING_LEVEL_TITLE 节点的 title_start 作为插入位置
- 正文开头(标题之后):使用 HEADING_LEVEL_TITLE 节点的 content_start 作为插入位置
3. 如果用户未明确说明,应主动询问用户确认具体插入位置
4. 确认位置后,调用 insert_text / insert_paragraph 等工具在对应位置插入内容
为文本添加批注
1. 调用 find 查找目标文本,获取文本的 range(begin/end)
2. 调用 insert_comment 传入 range 和批注内容
替换文档中的图片
1. 调用 replace_image 传入旧图片的 URL 或 ID,以及新图片的 URL 或 base64 内容
注意事项
- 仅支持 Word 文档类型(doc_type: word)
index/idx参数表示插入位置,从 0 开始计数- 操作前需确保拥有文档的写入权限
replace_text的ranges参数中start_index和end_index必须在文档有效范围内- 替换文本的推荐流程:先调用
find查找定位,让用户确认后再用replace_text精确替换;如果需要全部替换可直接使用find_and_replace_text file_id和file_url二选一,推荐优先使用file_url(直接传入文档链接更便捷),两者都传时优先使用file_idget_last_operable_pos返回的position即为文档末尾可安全插入内容的位置get_outline返回树形大纲结构,每个节点的content_start/content_end表示该标题下正文区域的可操作范围,可直接用作insert_text等工具的index参数- 「在文档开头插入」需明确位置:用户要求在文档开头插入内容时,应先通过
get_outline获取大纲,区分「文档标题前」(HEADING_LEVEL_TITLE的title_start)和「正文开头」(HEADING_LEVEL_TITLE的content_start),并向用户确认具体插入位置 insert_comment的range必须在文档有效范围内,建议先用find获取精确范围replace_image需要通过old_url或old_id定位旧图片,新图片通过new_url或content(base64)指定