提示词编写指南
一、核心理念
平台 Agent ≠ ChatGPT
平台 Agent 拥有工具调用能力——它可以主动检索知识库、翻页阅读文档、生成文件、编辑二进制文档。 更重要的是,平台内置了Skill 技能系统,Agent 能调用专业技能来完成特定领域的复杂任务。
| 维度 | 普通对话 | 平台 Agent 提示词 |
|---|---|---|
| 信息来源 | 全靠模型记忆 | 可调用知识库、文档、历史产出 |
| 任务长度 | 一轮完成 | 可多轮、多阶段、多任务串联 |
| 输出形式 | 纯文本 | 可生成 Excel / Word / Markdown,可编辑已有文档 |
| 专业能力 | 通用模型 | 可通过 Skill 触发文档编辑、格式化等专业流程 |
| 质量保障 | 靠人工审阅 | 可在提示词中内嵌检查规则 + ES 验证闭环 |
提示词不是越长越好
本手册列出了十大技法,但绝大多数场景不需要全部用上。Agent 本身有不错的理解和规划能力,很多简单任务一两句话就能做好。
简单任务示例——以下提示词已经足够:
什么时候需要写得更细? 当你发现 Agent 跑完一遍之后:
- 漏了文档没读 → 加"逐个文档扫描"的约束
- 编号格式不对 → 加精确的格式规则和示例
- 对比太粗糙 → 加对比维度清单
- 中间丢了进度 → 加分阶段落盘
核心原则:先用简单提示词跑一遍,不满意再针对性加约束。 本手册里的技法是你的"工具箱",按需取用,不是每次都要全套上。
二、Skill 技能系统——平台的"专家模块"
什么是 Skill?
Skill 是平台预置的专业能力包。每个 Skill 封装了特定领域的操作流程和专业知识。用户在提示词开头用 /skill名 触发,Agent 就会按照该 Skill 的专业流程来执行任务。
常用 Skill 速查
| Skill 名称 | 触发方式 | 能力 | 典型场景 |
|---|---|---|---|
| document-editing | /document-editing | 知识库文档的部分编辑 | 修改知识库中的 Word/Excel 文档 |
| docx | /docx | Word 文档创建和编辑 | 新建 Word 报告、编辑已有 Word 格式 |
| patent-agent | /patent-agent | 专利撰写 | 从技术交底书生成专利申请文件 |
| patent-doc-formatter | /patent-doc-formatter | 专利格式化 | 将专利文档转为符合规范的 docx |
怎么在提示词中触发 Skill?
在消息开头加上 Skill 标记即可:
Skill 可以组合使用——上面的例子同时触发了 document-editing(负责知识库文档检索定位)和 docx(负责 Word 文档的 XML 级别编辑)。它们的分工:
| Skill | 职责 |
|---|---|
| document-editing | 工作流编排:ES 检索 → 定位 → 调用技术 Skill → ES 快照更新 |
| docx | 技术实现:XML 操作 / 格式处理 / 创建新文档 |
简单说:document-editing 负责"找到位置",docx 负责"修改内容"。
什么时候需要触发 Skill?
| 任务类型 | 是否需要 Skill | 说明 |
|---|---|---|
| 纯分析对比(读文档 → 出报告) | 不需要 | 用 list_chunks/search 读,execute_code 生成报告 |
| 修改知识库中的 Word/Excel | 需要 /document-editing + /docx | 涉及二进制文件编辑 |
| 从零创建 Word 文档 | 需要 /docx | 用 docx-js 生成 |
| 专利撰写 | 需要 /patent-agent | 按专利法规范生成 |
三、十大核心技法
先看这里:不是每个技法都要用到
下面的技法按"什么时候真的需要写这么细"分成了三个等级:
| 标记 | 含义 | 什么时候用 |
|---|---|---|
| 🔴 必要 | 不写 Agent 大概率会出错 | 涉及精确规则、二进制编辑、多任务依赖 |
| 🟡 推荐 | 写了效果明显提升,不写也可能凑合 | 大文档对比、复杂分析、生产级提示词 |
| 🟢 可选 | 锦上添花,简单任务可以不写 | 一次性任务、探索性分析、文档不多的情况 |
经验法则:
- 2-3 个文档的简单分析 → 一段话描述清楚任务 + 指定知识库就够了,Agent 自己能搞定
- 10+ 个文档的系统对比 → 需要用上分阶段、索引表、落盘等技法
- 编号/格式化/超链接等精确操作 → 规则必须写死,否则 Agent 会自作主张
- 一次性的探索分析 → 先用简单提示词跑一遍,看哪里不满意再针对性加约束
技法 1:先总结建索引,再精确对比 🟡
详细度建议:2-3 个短文档直接让 Agent 对比就行,不需要先建索引。5 个以上文档、或单个文档超过 50 页时,建索引的收益才明显。
问题:10 份文档,每份几十上百页,Agent 的上下文窗口不可能一次放下全部内容。直接让 AI "对比所有文档" → 必然丢信息。
解法:分两步走——
第一步:逐文档扫描,生成带"定位信息"的摘要索引
让 Agent 逐个文档读取(可以分页翻读),对每个文档输出一份"摘要条目表",每条摘要必须包含:
- 条目名称(如"驾驶模式默认值")
- 条目属于哪个功能模块
- 来源定位信息(文档名 + chunk_id)
这样做的目的是:把散落在几百个 chunk 里的信息,压缩成一张结构化的索引表,但不丢失回溯路径。
提示词写法示例:
第二步:基于索引表做横向对比
有了索引表,Agent 就知道"驾驶模式默认值"这个条目在 10 个文档中各自出现在哪个 chunk。需要对比时,用 list_chunks(chunk_ids=...) 精确取回原文,不需要重新全文搜索。
提示词写法示例:
为什么这样比"直接对比"好?
| 方式 | 缺点 |
|---|---|
| 直接让 AI 对比全部文档 | 上下文溢出,丢失细节,无法回溯 |
| 先建索引再对比 | 每次对比时精确取回原文,可审计、可回查 |
技法 2:分阶段执行 + 中间落盘 🟡
详细度建议:如果任务 3-5 轮就能完成,不需要刻意分阶段。任务预计超过 10 轮、或中间有明确的"里程碑产物"时,分阶段 + 落盘才有意义。
问题:复杂任务(如分析 10 个文档的需求差异)可能需要 Agent 执行几十轮。如果不分阶段,一旦中间出错,所有工作白费。
解法:把任务拆成明确的阶段,每个阶段完成后立即用 write_file 保存中间产物。
提示词写法示例:
关键细节:
- 阶段间传递上下文:后续阶段开始前,让 Agent 先
read_file读取前一阶段的产物。这样即使中间 Agent 上下文被压缩,也不会丢失关键信息。 - 进度追踪:对于批量任务,让 Agent 维护一个待办清单,标记每个子任务的完成状态。
技法 3:横向交叉提取——从 N 个文档中抽出相同条目 🟡
详细度建议:两个文档之间找对应关系,Agent 通常自己能搞定,只需告诉它"对比这两个文档"。文档数量多(5+)或文档结构差异大时,才需要明确写出"确定基准 → 搜索匹配 → 反向检查"的流程。
问题:10 个文档里都有"驾驶模式"相关的描述,但每个文档的章节结构、命名方式、粒度都不一样。怎么让 Agent 把这些"对应"的内容找出来?
解法:三步走——确定基准 → 语义搜索匹配 → 上下文验证。
步骤 1:确定基准文档
从所有文档中选一个"条目最全"的作为基准(比如内部需求规格书),以它的条目列表为锚点。
步骤 2:逐条语义搜索
对基准文档中的每个条目,到其他文档中做语义搜索。注意:不能只按标题做精确匹配,因为不同文档对同一功能的命名可能不同。
步骤 3:反向检查
扫描完基准文档的所有条目后,还要反过来检查——其他文档中是否有基准文档没覆盖的条目?
技法 4:维度发现——让 AI 自己从文档中发现分类体系 🟢
详细度建议:只有当文档存在多个平行分类(如同时按车型、架构、动力类型区分)时才需要。如果文档结构简单、没有交叉分类,这个技法可以跳过。
问题:汽车行业文档通常按多个维度分类(车型平台、电子架构、动力类型……),如果提示词里预设了维度,可能漏掉文档中实际存在的新维度;如果不指定,AI 可能随意混淆。
解法:告诉 Agent"从文档中发现维度,不要预设",但给出参考示例帮助理解。
提示词写法示例:
为什么要发现维度?
因为对比必须在同一维度值下进行。比如 AH8 的驾驶模式和 A8R 的驾驶模式是不同的东西,不能放在一起对比。维度发现后,后续所有分析都要遵循。
技法 5:强制引用溯源——每条结论都必须有出处 🟡
详细度建议:日常探索性分析("帮我看看这个文档讲了什么")不需要强制引用。但如果分析结果要交付给他人审阅、或者作为正式报告,引用溯源就很重要——没有出处的结论无法验证。
问题:AI 容易"凭印象概括"——看了一堆文档后,输出的结论既没有来源,也无法验证。
解法:在提示词中明确要求每条结论都必须附带引用。
提示词写法示例:
引用格式建议统一:
这样做的好处:
- 可审计——用户看到结论可以直接通过 chunk_id 回查原文
- 防幻觉——Agent 必须真的读过才能写出 chunk_id
- 可迭代——发现引用有误时,可以快速定位修正
技法 6:对比粒度控制——告诉 AI 到底要比什么 🟡
详细度建议:如果只是想快速了解"两个文档大体上有什么不同",不用写对比维度清单,Agent 会自动做高层级概述。但如果需要信号级、参数级的细致对比,就必须明确告诉 Agent 要比哪些维度——不说它就不会主动深入。
问题:AI 默认会做高层级的功能对比("两个文档都有驾驶模式功能"),但真正有价值的是细节层面的差异。
解法:在提示词中明确列出对比维度清单。
提示词写法示例:
同时定义差异分类标签,让结果更结构化:
技法 7:二进制文档编辑——知识库文档的完整编辑闭环 🔴
详细度建议:只要涉及修改知识库中的 Word/Excel/PPT,这个流程必须遵守——不是写不写的问题,而是
/document-editingSkill 本身就会按这个流程走。用户需要理解这个流程,才能在出问题时知道是哪一步有问题。
问题:知识库中的 Word/Excel 是二进制文件,不能直接用文本编辑器改。而且编辑后如果不更新 ES 索引,后续搜索就找不到新内容。
解法:遵循平台的 Copy → Edit → Snapshot → Verify 四步闭环。
提示词写法示例:
关键概念:ES-first 原则
知识库中的二进制文档已经被 DeepDoc 解析成了 chunks 并索引到了 ES(Elasticsearch)。读取这些文档的内容时,必须优先用 ES 检索,不要用 read_file。
| 操作 | 正确做法 | 错误做法 |
|---|---|---|
| 查某个需求的内容 | search(query="前雾灯", doc_ids="ws_doc_id") | read_file("合同.docx") 读整个文件 |
| 对比两份文档 | 对每个条目分别搜两个文档的 doc_id | read_file 读两个完整文档再逐行比 |
关键概念:snapshot_and_index
每次编辑产出新文件后,必须调用 snapshot_and_index 创建 ES 快照。不做这步 = 后续 Agent 搜索不到新文件的内容。
⚠️ 多步编辑时每步都要 snapshot:如果任务分为"编号 → 超链接 → 格式化"三步,每步产出新文件后都要 snapshot_and_index,不能只在最后一步做。
技法 8:多任务串联——前置任务的输出是后续任务的输入 🔴
详细度建议:只要有两个以上任务存在先后依赖,必须写清楚输入输出路径和依赖关系。这不是"可选的细节"——不写的话,Agent 很可能在任务二中重新做一遍任务一已经完成的工作,或者找错文件。
问题:复杂项目往往需要多个任务串联执行,后面的任务依赖前面任务的产出物。如果不明确标注依赖关系和文件路径,Agent 容易搞混。
解法:在提示词中明确标注每个任务的输入/输出文件路径,以及任务间的依赖关系。
提示词写法示例:
命名约定:用后缀区分版本——_numbered(已编号)、_linked(已加超链接)、_highlighted(已高亮)。这样每个中间版本都可追溯。
核心要点:
- 明确标注"前提":防止 Agent 在任务二中重复做任务一的工作
- 写明文件路径:输入输出都列清楚,Agent 不需要猜
- 禁止篡改前置产物:任务二"只添加超链接,不要修改编号或文本内容"
技法 9:操作类任务的精确规则定义 🔴
详细度建议:编号、格式化、超链接等"操作类"任务,规则必须写死。这是所有技法中最不能偷懒的一个——分析类任务 Agent 说错了你还能看出来修正,操作类任务做错了可能批量污染几百个条目,很难发现。
问题:编号、标注、格式化等"操作类"任务(区别于"分析类"),需要极其精确的规则定义。稍有模糊,Agent 就会自作主张。
解法:用"格式 + 范围 + 排除 + 计数规则 + 示例"五要素定义操作规则。
提示词写法示例(编号规则):
五要素拆解:
| 要素 | 作用 | 缺了会怎样 |
|---|---|---|
| 格式 | 定义编号的具体样式 | Agent 随意发明格式 |
| 范围 | 定义哪些内容要编号 | Agent 把所有标题都编了 |
| 排除 | 定义哪些内容不编 | 目录页也被改了 |
| 计数规则 | 定义序号怎么算 | 所有编号从 01 一路到底 |
| 示例 | 给一个前后对比的实例 | Agent 对规则理解偏差 |
提示词写法示例(映射规则):
技法 10:验证闭环——编辑完必须用 ES 抽样检查 🟡
详细度建议:Agent 默认会做基本的代码级验证(assert 计数等)。如果你对结果精度要求高(比如编号要绝对准确、超链接不能错位),在提示词中加上验证步骤可以让 Agent 自查。日常不太要紧的编辑可以省掉这一步,自己打开文件看一眼就行。
问题:代码执行(批量编号、创建超链接、格式修改)容易出现 off-by-one、匹配遗漏、映射错位等 bug。如果不验证就交付,用户拿到的可能是错误的产物。
解法:在提示词中明确写出验证步骤和验证标准。
提示词写法示例:
为什么不能只靠代码内部验证?
代码可以 assert 检查行数/计数,但无法验证语义正确性(编号是否对应到了正确的需求项、超链接是否指向了正确的位置)。ES 搜索是唯一能从"用户视角"验证内容的方式。
四、提示词结构模板
模板 A:分析对比类(读文档 → 出报告)
模板 B:文档编辑类(改知识库中的文档)
五、常见反模式(写提示词的坑)
反模式 0:不触发 Skill 就让 Agent 编辑文档
Agent 没有被激活 document-editing 技能,会尝试用 read_file 读取整个二进制文件(乱码),或者用 execute_code 从头写一个新文件(丢失原有格式)。
反模式 1:一句话提示词
Agent 会随机挑几段对比,不完整、不可控。
反模式 2:不指定知识库范围
Agent 会搜索所有知识库,结果稀释。
反模式 3:不要求保存中间结果
中间任何一步出问题都会导致后续结果不可信。
反模式 4:让 AI 凭记忆比对
Agent 的上下文会被压缩,"刚才读的"内容可能已经丢失。
反模式 5:不控制对比粒度
Agent 会做高层级概述("两者都有驾驶模式功能,A 多了几个选项")。
反模式 6:关键词碎片化搜索
把关键词拆开会破坏向量检索的语义质量。
六、图片/UI 对比的特殊技法
当任务涉及截图对比(如 HMI 设计稿对比)时,有额外的技法:
1. 先建图片索引再对比
2. 图片描述必须来自 describe_image
3. 结构化对比维度
七、平台工具速查
写提示词时可以引用的工具操作:
检索类(读取文档内容)
| 操作 | 工具调用 | 用途 |
|---|---|---|
| 列出知识库文档 | list_documents(kb_ids="知识库名") | 发现阶段,看知识库里有什么 |
| 读文档全文 | list_chunks(doc_ids="文档ID") | 逐页翻读,建立索引 |
| 精确取回指定内容 | list_chunks(chunk_ids="id1,id2") | 有了索引后精确回查 |
| 带上下文取回 | list_chunks(chunk_ids="id", window=5) | 取回目标前后各 5 个 chunk |
| 语义搜索 | search(query="自然语言描述", kb_ids/doc_ids=...) | 不确定位置时模糊查找 |
| 图片分析 | describe_image(image_url=...) | UI/图表截图分析 |
文件操作类(生成 / 编辑文件)
| 操作 | 工具调用 | 用途 |
|---|---|---|
| 保存中间结果 | write_file → outputs/文件名.md | 阶段落盘(Markdown/文本) |
| 生成报告 | execute_code(Python + openpyxl) | 生成 Excel/Word 二进制文件 |
| 拷贝知识库文档 | copy_kb_document(doc_id) | 把 KB 文档拷贝到 workspace 以便编辑 |
| 创建 ES 快照 | snapshot_and_index(parent_ws_doc_id, output_path) | 编辑后更新 ES 索引(⚠️ 必须) |
Skill 触发
| Skill | 触发方式 | 适用场景 |
|---|---|---|
| 知识库文档编辑 | /document-editing | 修改已有 Word/Excel/PPT |
| Word 技术操作 | /docx | 创建新 Word 或 XML 级编辑 |
| 专利撰写 | /patent-agent | 从技术交底书生成专利文件 |
| 专利格式化 | /patent-doc-formatter | 专利文档导出为规范 docx |
八、完整案例
案例 A:多文档需求差异分析(分析对比类)
案例 B:需求文档编号 + 交叉引用(文档编辑类)
九、提示词优化迭代技巧
推荐的迭代方式:从简到繁,逐步加约束。
具体加约束的手段:
- 加 ⚠️ 警告——Agent 对带警告符号的指令更敏感,放在容易出错的步骤前
- 给正例和反例——"不能只写'样式相似'(❌),要写'A 用圆角卡片 B 用直角列表'(✅)"
- 控制批次大小——如果 Agent 一次处理太多条目会出错,用
每次最多处理 5 个条目限制 - 善用分隔符——用
━━━或═══分隔阶段,让 Agent 清楚地看到任务边界 - 不要一次加太多约束——每轮只针对上一轮发现的问题加 1-2 条,加太多反而让 Agent 顾此失彼