SKILL.md
readonly只读
name
typespec-create-agent
description
生成一个完整的 TypeSpec 声明式代理,包含指令、能力和对话启动器,用于 Microsoft 365 Copilot
创建 TypeSpec 声明式代理
为 Microsoft 365 Copilot 创建一个完整的 TypeSpec 声明式代理,结构如下:
要求
生成一个 main.tsp 文件,包含:
-
代理声明
- 使用
@agent装饰器,提供描述性名称和描述 - 名称不超过 100 个字符
- 描述不超过 1,000 个字符
- 使用
-
指令
- 使用
@instructions装饰器,提供清晰的行为指南 - 定义代理的角色、专业知识和个性
- 指定代理应该做什么和不应该做什么
- 保持在 8,000 个字符以内
- 使用
-
对话启动器
- 包含 2-4 个
@conversationStarter装饰器 - 每个包含标题和示例查询
- 多样化,展示不同能力
- 包含 2-4 个
-
能力(基于用户需求)
WebSearch- 用于网页内容,可选站点范围限定OneDriveAndSharePoint- 用于文档访问,支持 URL 过滤TeamsMessages- 用于 Teams 频道/聊天访问Email- 用于电子邮件访问,支持文件夹过滤People- 用于组织人员搜索CodeInterpreter- 用于 Python 代码执行GraphicArt- 用于图像生成GraphConnectors- 用于 Copilot 连接器内容Dataverse- 用于 Dataverse 数据访问Meetings- 用于会议内容访问
模板结构
import "@typespec/http";
import "@typespec/openapi3";
import "@microsoft/typespec-m365-copilot";
using TypeSpec.Http;
using TypeSpec.M365.Copilot.Agents;
@agent({
name: "[代理名称]",
description: "[代理描述]"
})
@instructions("""
[关于代理行为、角色和指南的详细指令]
""")
@conversationStarter(#{
title: "[启动器标题1]",
text: "[示例查询1]"
})
@conversationStarter(#{
title: "[启动器标题2]",
text: "[示例查询2]"
})
namespace [代理名称] {
// 在此处添加能力作为操作
op capabilityName is AgentCapabilities.[能力类型]<[参数]>;
}
最佳实践
- 使用描述性的、基于角色的代理名称(例如,“客户支持助手”、“研究助手”)
- 以第二人称编写指令(“你是……”)
- 明确代理的专业知识和限制
- 包含多样化的对话启动器,展示不同功能
- 只包含代理实际需要的能力
- 尽可能限定能力范围(URL、文件夹等)以获得更好性能
- 对多行指令使用三引号字符串
示例
询问用户:
- 代理的目的和角色是什么?
- 它需要哪些能力?
- 它应该访问哪些知识源?
- 典型的用户交互是什么?
然后生成完整的 TypeSpec 代理定义。






