内容
# Agent 365 技能
[](https://opensource.org/licenses/MIT)
[](https://github.com/microsoft/agent365-skills/blob/main/plugins/agent365/.claude-plugin/plugin.json)
Agent 365 技能和 MCP 配置,用于 [Microsoft Agent 365](https://learn.microsoft.com/en-us/microsoft-agent-365/developer/) — 与 Claude Code 和 GitHub Copilot 兼容。技能涵盖整个 A365 生命周期: 将代理转换为 AI 团队成员,注册 Blueprint 或可观察性路径,连接 WorkIQ MCP 服务器,实施可观察性,以及使用 AgentPlayground 进行本地测试。
浏览 [`plugins/agent365/skills/`](https://github.com/microsoft/agent365-skills/blob/main/plugins/agent365/skills) 文件夹以获取完整的技能目录。
---
## 先决条件
- **Microsoft Agent 365** 租户,具有开发者访问权限
- **Node.js 18+**、**.NET 8.0+** 或 **Python 3.11+**(取决于您的代理)
- **a365 CLI** — `dotnet tool install -g Microsoft.Agents.A365.DevTools.Cli`
- **Azure CLI** — `winget install Microsoft.AzureCLI`(Windows)或 `brew install azure-cli`(macOS)
### 租户先决条件(一次性,管理员权限)
Agent 365 CLI 需要在您的租户中进行自定义 Entra ID 应用注册。这是 **一次性租户范围设置** — 任何租户管理员运行 `a365 setup requirements`后,所有租户中的开发者都继承就绪状态并跳过此步骤。
所需管理员角色:**应用管理员**(推荐 — 最轻权限),**云应用管理员** 或 **全局管理员**。不需要 GA。请参阅 [自定义客户端应用注册](https://learn.microsoft.com/en-us/microsoft-agent-365/developer/custom-client-app-registration) 以获取完整详细信息。
如果您是无管理员访问权限的开发者,并且 CLI 报告租户先决条件缺失(例如 `403` 或来自 `a365 setup all` 的“租户未就绪”),请与您的租户管理员共享上述 `a365 setup requirements` 命令 — 一旦他们运行它,您将自动继承就绪状态。
---
## 入门指南
### Claude Code(应用或网页)
在活跃的 Claude Code 会话中运行以下命令:
```bash
/plugin marketplace add https://github.com/microsoft/agent365-skills
/plugin install agent365@agent365-skills
```
### Claude Code CLI
从您的代理项目目录启动 Claude Code,并加载插件:
```bash
cd my-agent-project
claude --plugin-dir "/path/to/agent365-skills/plugins/agent365"
```
或者,先在市场中安装(在 Claude Code 会话中),然后 CLI 在每次 `claude` 调用时自动拾取:
### GitHub Copilot CLI — `gh skill`(推荐)
安装 GitHub Copilot CLI 和 VS Code 代理模式的最快方法:
```bash
gh skill add microsoft/agent365-skills
```
这会读取 `.github/plugin/marketplace.json` 并直接将所有六种技能安装到您的 Copilot CLI 会话中。使用 `/skills list` 验证并通过名称调用技能:
```bash
gh copilot suggest "Make this agent an AI Teammate"
gh copilot suggest "Instrument observability for this agent"
```
### VS Code 代理模式 — `.agents/skills/`(开放标准)
要安装到您的项目中以进行 VS Code 代理模式、Copilot 云代理和任何 agentskills.io 兼容工具,请从您的代理项目目录运行安装程序:
```bash
cd my-agent-project
node /path/to/agent365-skills/scripts/install.js
```
安装程序将所有六个技能目录复制到您的项目中的 `.agents/skills/`。然后,技能将自动出现在 VS Code 的“配置技能”菜单(`/skills list`)中,并按需由 VS Code 代理模式和 Copilot 云代理加载。
### GitHub Copilot CLI(`gh copilot`)
相同的 `.github/copilot-instructions.md` 文件被 `gh copilot` 读取,当它在包含该文件的 workspace 中运行时。运行上述安装程序,然后使用 `gh copilot suggest` 或 `gh copilot explain` 以及任何触发短语:
```bash
gh copilot suggest "Make this agent an AI Teammate"
gh copilot suggest "Instrument observability for this agent"
```
---
## 推荐工作流程
**从 `a365-setup` 开始** — 它验证 CLI 和 Azure 先决条件,询问您需要哪些功能,然后委托给正确的技能:
```bash
a365-setup (推荐入口 — 处理 CLI、Azure、Blueprint)
│
├─ AI 团队成员 → make-ai-teammate (添加托管层 + AI 团队成员身份)
│ obo (签入用户)或 ├─ instrument-observability (可选,提供自动)
│ agentic-user (代理自己的 M365 身份) └─ add-workiq-tools (可选,提供自动)
│
└─ 代理(非 AI 团队成员)→ make-a365-agent (Blueprint + Entra 权限)
obo (On-Behalf-Of)或 ├─ instrument-observability (可选,提供自动)
s2s (服务主体) └─ add-workiq-tools (可选,仅限 obo)
test-local ← 独立运行;在任何时候测试您的代理
```
`a365-setup` 编写 `.a365-workspace-detection.local.json`。所有下游技能都读取此文件以跳过重新检测。
#### 为什么使用 `.local.json`?(令牌 + LLM 优化)
检测缓存**故意仅限本地** — `.local.` 文件名遵循 Node/VS Code 约定,表示必须不提交的文件,`.gitignore` 排除它。该文件保存检测工作的结果,这些工作会消耗真正的 LLM 回转次数:
- **代理堆栈 + 编程语言** (Node.js LangChain、.NET AgentFramework、Python OpenAI 等)
- **CEA 标记** (`usesTeamsOrCopilot`) — Teams/Copilot 标记在存储库中找到
- **Blueprint 状态** (`hasBlueprintConfig`) — `a365.config.json` / `a365.generated.config.json` 是否已存在
- **三个技能状态标志** (`has_aiteammate_structure`, `has_obs`, `has_workiq`) — 驱动 `make-ai-teammate` 阶段 0C 和 `a365-setup` 中的功能自动过滤
- **代理类型 + 身份验证模式** (`agentType`, `authMode`) — `ai-teammate` / `system-agent` 和 `obo` / `s2s` / `agentic-user`
- **Blueprint 重用选择** (`reuseBlueprint`, `existingBlueprintId`)
如果没有缓存,每个下游技能都会重新遍历项目树,重新 grep `package.json` / `.csproj` / `pyproject.toml`,重新读取 `a365.generated.config.json`,并重新向用户询问相同的代理类型 + 身份验证模式问题。这会浪费令牌和转数。
**为什么它必须保持本地:**
- 它编码特定于机器的状态(用户安装了哪些工具,用户登录到哪个 Azure,用户是否在此克隆上运行了 `a365 setup all`)。
- 它编码每个开发者的选择(重用 vs 新的 Blueprint,可观察性 vs WorkIQ 选择)这些选择不是团队范围的。
- 提交它会强制每个贡献者继承一个开发者的状态,并会产生不断的合并冲突。
可以安全删除该文件 — 下一次运行 `a365-setup` 会重新生成它。技能也会重新派生任何其底层信号已更改的标志(例如,如果 `has_workiq` 为 `false` 但 `ToolingManifest.json` 现在列出了 MCP 服务器,则技能信任该文件并更新缓存)。
**已注册?直接运行技能:**
```
"Make this agent an AI Teammate" → make-ai-teammate (Blueprint 必须存在)
"Add observability to this agent" → instrument-observability
"Add WorkIQ tools to this agent" → add-workiq-tools
"Test this agent locally" → test-local
```
---
## 技能
### `make-ai-teammate` — 将任何代理转换为 AI 团队成员
**AI 团队成员** 是具有一流 M365 身份的代理。它具有 Agentic 用户 ID、邮箱和您的租户中的存在感,并且在 Teams、Outlook 和其他 Microsoft 365 应用中表现得像真正的同事一样。它旨在进行持续的类似人类的团队合作。
**在此之前:**您的代理是一个独立的脚本或 HTTP 服务器,没有 Teams 存在感。
**在此之后:**您的代理具有完整的 A365 托管层 — Express + CloudAdapter(Node.js)、ASP.NET Core(.NET)或 aiohttp(Python)— 具有 AgentApplication 类、消息路由、输入指示器、电子邮件通知处理和 ToolingManifest.json。然后可选地提供可观察性和 WorkIQ 工具。
**先决条件:** `a365-setup` 必须先创建 Blueprint 和 Agentic 用户身份。此技能通常在确认先决条件后由 `a365-setup` 自动调用;也可以直接针对已注册的代理运行。
**触发短语:**
```
"Make this agent an AI Teammate" "Transform this agent into an AI Teammate"
"Publish this agent to Teams" "Make this agent available in Microsoft Teams"
"Add Teams support to this agent" "Convert this agent to a Teams agent"
"Publish this agent to Microsoft Copilot"
```
---
### `a365-setup` — A365 入门点
检测您的代理堆栈并询问您需要哪些功能,然后委托给正确的技能:
| 路径 | 委托给 |
|------|---------|
| **AI 团队成员** | `make-ai-teammate` — 添加 A365 托管层 + AI 团队成员身份(由 a365-setup 创建 Blueprint) |
| **代理(非 AI 团队成员)** — 注册 / 可观察性 / WorkIQ | `make-a365-agent` — Blueprint 配置 + 可选的可观察性/WorkIQ |
处理步骤 1-2 的每个路径:安装/更新 a365 CLI,验证 Azure CLI 登录,检查 Entra ID 角色,并确认特定于语言的构建工具。确认先决条件后,所有剩余工作都将移交给
**触发短语:**
```
"Set up Agent 365 for this agent" "Run a365 setup"
"Register this agent with Agent 365" "Onboard this agent to Agent 365"
"Make this agent an A365 agent" "Make this agent discoverable in M365"
"Connect this agent to Agent 365" "Create A365 blueprint"
```
---
### `make-a365-agent` — 配置代理(非 AI 团队成员)代理
使用 Agent 365 配置 **代理(非 AI 团队成员)**。代理(非 AI 团队成员)没有 Agentic 用户身份(没有 UPN)— 它是面向任务的、面向系统的或辅助的,并表现为系统或服务代理,而不是虚拟队友。它通过 Entra 应用 ID 或代理 Blueprint + 代理身份验证,分为两种执行模式:
> **分类:** 代理(非 AI 团队成员)是一个广泛的类别。 **CEA(自定义引擎代理)** 是一个特定的子集 — 基于自定义运行时,通常与 Teams/M365 集成。CEA ⊂ 代理(非 AI 团队成员),但并非所有代理(非 AI 团队成员)都是 CEA。其他代理(非 AI 团队成员)类型包括代理生成器代理、SharePoint 代理、后台自动化 / 导入 / 同步代理、策略 / 分类器代理和 3P 系统代理,没有 Teams 界面。
>
> CEA 是主要的受支持代理(非 AI 团队成员)路径。 CEA **不** 支持作为 AI 团队成员。
- **`obo` (On-Behalf-Of)** — 代表登录用户通过 On-Behalf-Of 流
- **`s2s` (服务主体,无用户令牌)** — 独立运行,具有服务主体凭证,无需用户
通常在确认 CLI 和 Azure 先决条件后从 `a365-setup` 调用,但也可以直接调用。
| 功能 | 功能描述 |
|-----------|-------------|
| **注册** | Blueprint + Entra 权限。代理出现在 Agent 365 目录中。 |
| **注册 + 可观察性** | 相同,然后调用 `instrument-observability`。 |
| **可观察性** (自定义引擎代理 / 代理(非 AI 团队成员)) | Blueprint + 权限,然后调用 `instrument-observability`。支持 `obo` (On-Behalf-Of)和 `s2s` (服务主体)。 |
| **可观察性 + WorkIQ** | 相同,然后还调用 `add-workiq-tools`。 |
总是显示应用前预览。 `a365 setup all` 是幂等的 — 安全地重新运行。 WorkIQ MCP 调用使用 OAuth On-Behalf-Of(OBO)令牌;用户在首次数据访问时提供同意。
**触发短语:**
```
"register this agent" "Registration setup for this agent"
"Make this agent findable in the Agent 365 catalog"
"Make this a custom engine agent" "Run a365 setup all"
"Create A365 blueprint for this agent"
```
---
### `add-workiq-tools` — 添加 WorkIQ MCP 服务器
> **先决条件:** `a365-setup` 必须先运行。
> **身份验证要求:** WorkIQ 需要循环中的用户 — 支持 AI 团队成员(`agentic-user`)和代理(非 AI 团队成员)与 `obo` (On-Behalf-Of)。不支持代理(非 AI 团队成员)与 `s2s` (服务主体)。
为您的代理添加预建的 Microsoft 365 集成工具。运行 `a365 develop list-available`
显示 MCP 服务器目录,通过 `a365 develop add-mcp-servers`
添加所选服务器(更新 `ToolingManifest.json`),在代理代码中连接 `McpToolRegistrationService`,
并指导权限移交给您的全局管理员。支持 .NET、Node.js 和 Python。
可用工具:邮件、日历、Teams、SharePoint、OneDrive、Word、用户、Copilot、Dataverse/Dynamics 365。
**触发短语:**
```
"Add WorkIQ tools to this agent" "Add Work Intelligence tools"
"Give this agent access to M365 data" "Add Work IQ Mail to this agent"
"Give my agent access to email and calendar"
"Add SharePoint access to this agent" "Add Work IQ Calendar to this agent"
```
---
### `instrument-observability` — 添加 A365 可观察性
> **先决条件:** `a365-setup` 必须先运行。
实施基于 OpenTelemetry 的跟踪、上下文传播和 A365 导出器。在
连接任何代码之前,询问两阶段问题以确定 **代理类型** 和 **身份验证模式** — 答案驱动选择哪个令牌路径:
**阶段 1 — 代理类型:**
- **AI 团队成员**:具有 Agentic 用户 ID;然后询问是否使用 `obo` (签入用户)或 `agentic-user` (代理自己的 M365 身份)。 **两者都支持可观察性和 WorkIQ。**
- **代理(非 AI 团队成员)**:没有 Agentic 用户 ID;然后询问是否 `obo` (On-Behalf-Of)或 `s2s` (服务主体,无用户令牌)。 **可观察性支持两者;WorkIQ 需要 `obo` (委托用户令牌)。**
**按身份验证模式连接:**
- **`obo` / `agentic-user`** (OBO 令牌交换):统一的 `Microsoft.OpenTelemetry` 发行版(.NET)/ `@microsoft/opentelemetry` (Node.js)/ `microsoft-opentelemetry` (Python)自动注册代理令牌缓存;消息处理程序调用每轮 `RegisterObservability` / `RefreshObservabilityToken` / `cache_agentic_token` 与 OBO 令牌
- **`s2s`** (服务主体,所有语言):创建语言特定的令牌服务文件(.NET 的 `Observability/ObservabilityTokenService.cs`,Node.js 的 `observability/observability-token-service.ts`,Python 的 `observability/observability_token_service.py`),通过 MSAL FMI 3 跳链获取可观察性 API 令牌(`api://9b975845-388f-4429-889e-eab1ef63949c/.default`)并每 50 分钟刷新 — 无需每轮令牌调用
所有新代码都标记为 `// A365 可观察性 — 尽力而为的检测`,更改是非破坏性和幂等的。
**触发短语:```
"Instrument observability for this agent" "Add A365 observability to this agent"
"Add observability to this agent" "Set up tracing for this agent"
"Make this agent visible in Microsoft Defender"
"Wire up OpenTelemetry for this agent" "Enable Agent 365 telemetry"
"Add observability to this .NET agent" "Add A365 observability to this Python agent"
```
---
### `test-local` — 使用 AgentsPlayground 进行本地测试
在部署到 Azure 或 Teams 之前测试您的代理。检查先决条件
(`agentsplayground` CLI、构建工具),构建代理,在后台启动它
在端口 3978 上,并打开 AgentsPlayground 指向您的本地端点 — 无需 Bot Framework
身份验证。
**触发短语:```
"Test this agent locally" "Run my agent locally"
"Open AgentsPlayground" "Launch AgentsPlayground"
"Start a local test session" "Debug this agent locally"
"Test my agent without deploying to Teams"
```
## 启动提示
**新建代理 — 完整的人工智能团队设置,一步到位:**
```
这是一个新的 Node.js LangChain 代理。将其注册到 Agent 365,转换为 AI 团队成员,以便它可以在 Teams 中接收消息,添加 Work IQ 邮件和日历工具,实施可观察性,并在本地测试。
```
**已有代理代码 — 逐步进行:**
步骤 1 — 注册和转换:
```
为此代理设置 Agent 365,并使其成为 Microsoft Teams 中可用的 AI 团队成员。
```
步骤 2 — 添加 M365 数据访问:
```
通过 WorkIQ 工具为此代理提供电子邮件和日历的访问权限。
```
步骤 3 — 添加可观察性:
```
为此代理添加 A365 可观察性,以便我可以在 Microsoft Defender 中跟踪 LLM 调用和工具调用。
```
步骤 4 — 在本地测试:
```
在部署到 Teams 之前,在本地测试此代理。
```
---
**转换 .NET AgentFramework 代理:**
```
我有一个 .NET AgentFramework 代理。将其转换为 Microsoft Agent 365 AI 团队成员,支持 Teams 托管和电子邮件通知处理。
```
**转换 Python 代理:**
```
我有一个使用 AgentFramework 的 Python 代理。将其转换为 Microsoft Agent 365 AI 团队成员,支持 aiohttp 托管和电子邮件通知处理。
```
**仅注册(无 Teams 托管):**
```
注册此代理,以便它出现在 Agent 365 目录中。
我将自行托管 — 仅注册。
```
**注册 + 可观察性:**
```
注册此代理并添加 A365 可观察性,以便我可以在 Microsoft Defender 中跟踪 LLM 调用和工具调用。
```
**自定义引擎代理(非 AI 团队成员)— 添加可观察性和 WorkIQ:**
```
这是一个已经在 Microsoft Teams 和 Copilot 中可用的自定义引擎代理。它是一个非 AI 团队成员代理 — 不是 AI 团队成员。
添加 A365 可观察性和 WorkIQ 邮件、日历和 Teams 工具。
```
**向已注册的代理添加特定的 WorkIQ 工具:**
```
为此代理添加 Work IQ 邮件和 Work IQ 日历。我们的蓝图已经存在 — 请告诉我应该为我们的全局管理员提供什么。
```
**具有 S2S 可观察性的非 AI 团队成员代理(.NET):**
```
这是一个 .NET 非 AI 团队成员代理,它自主运行 — 无需登录用户。
添加具有 S2S 身份验证(MSAL 客户端凭证)的 A365 可观察性。
```
**检查已配置的内容:**
```
检查哪些 Agent 365 功能已应用于此代理,并告诉我还缺少什么。
```
---
## 包含的内容
- **6 项技能**,涵盖完整的 AI 团队成员转换、蓝图配置(适用于所有功能路径)、WorkIQ MCP 服务器、可观察性工具和本地测试(使用 AgentsPlayground)
- **多语言支持** — Node.js(LangChain、OpenAI Agents SDK、Claude SDK、Semantic Kernel、Google ADK)、.NET(AgentFramework、Semantic Kernel)和 Python(AgentFramework、LangChain、OpenAI、Claude、Semantic Kernel、Google ADK)
- **身份验证模式检测** — 两阶段问题流程确定代理类型(AI 团队成员与非 AI 团队成员)和身份验证模式(`obo` / `s2s` / `agentic-user`);驱动正确的可观察性和 WorkIQ令牌路径;在 `.a365-workspace-detection.local.json` 中缓存
- **自动代理检测** — 技能检测您的 LLM 框架、编程语言和自定义引擎代理状态,然后在运行任何代码之前提出验证问题
- **非破坏性和幂等性** — 技能包装现有代码,无需删除任何内容;重新运行跳过已配置的内容
- **WorkIQ MCP 服务器** — 预构建的 M365 集成,用于邮件、日历、Teams、SharePoint、OneDrive、Word、用户配置文件、Copilot 和 Dataverse/Dynamics 365
---
## 本地开发
首先克隆存储库:
```bash
git clone https://github.com/microsoft/agent365-skills.git
```
### 使用 Claude Code CLI 进行测试
```bash
# 1. 打开您的代理项目
cd my-agent-project
# 2. 启动 Claude Code,并从本地克隆加载插件
claude --plugin-dir "/path/to/agent365-skills/plugins/agent365"
# 3. 以触发短语开始,例如:
# "将此代理转换为 AI 团队成员"
```
`--plugin-dir` 路径必须用双引号括起来,如果它包含空格。请使用绝对路径。
### 使用 GitHub Copilot CLI 或 VS Code 代理模式进行测试
```bash
# 推荐:通过 gh 技能(全局,适用于任何项目)安装
gh skill add microsoft/agent365-skills
# 或:复制技能到测试项目中的 `.agents/skills/` (开放标准)
cd my-agent-project
node /path/to/agent365-skills/scripts/install.js
```
安装程序始终将技能文件复制到 `.agents/skills/` (开放标准 — VS Code 代理模式、Copilot 云代理、Copilot CLI)。如果 `gh skill` 可用,它还会运行 `gh skill add` 以适用于 CLI 会话。如果两者都不可用,它将回退到 `copilot-instructions.md`。
要更新拉取更改后,请重新运行 `gh skill add microsoft/agent365-skills` (幂等)或删除 `.agents/skills/` 并重新运行 `install.js`。
### 在本地运行验证器和测试
```bash
npm test # 每个停止钩子验证器的单元测试(tests/*.test.js)
npm run validate # 对当前目录运行所有六个停止钩子验证器
```
停止钩子验证器共享一个单独的项目树遍历,通过 `plugins/agent365/hooks/lib/project-scan.js` ;在添加新验证器时,请从该模块导入 `scanProject` / `filterByName` / `fileContains` ,而不是重新实现 `findFiles`。版本检查(`plugins/agent365/scripts/check-version.js`)作为 `sessionStart` 钩子在 `plugins/agent365/.claude-plugin/plugin.json` 中声明 — 它每会话触发一次(不是每次技能调用),并在 `$LOCALAPPDATA/agent365-skills/` (Windows)或 `~/.cache/agent365-skills/` (Unix)下缓存 `gh release view` 结果 24 小时,因此每次会话的成本在第一次命中后为毫秒级。
---
## 安全性和保障
该插件围绕最小特权模型设计 — 它不能超过经过身份验证的用户的权限。关键安全措施:
- **CLI 授权** — 所有 `a365` 命令都通过 Azure CLI 或 MSAL 进行身份验证;插件将凭证传递给 CLI,绝不存储它们
- **写入前读取** — 每个技能在进行任何更改之前都会读取并显示现有配置;破坏性操作需要明确的用户确认
- **无自动权限授予** — 权限始终被解释,需要 `a365 setup all` (开发人员运行)或 `a365 setup permissions mcp` (全局管理员);插件绝不会悄悄授予访问权限
- **ToolingManifest.json 由 CLI 管理** — WorkIQ 服务器仅通过 `a365 develop add-mcp-servers` 添加;插件绝不手动编辑清单
- **仅附加更改** — 技能绝不会删除或重构现有代理代码;所有添加的代码都用标识添加它的技能的注释标记
- **路径防护钩子** — `preToolUse` 钩子阻止针对代理项目目录外部或插件目录本身的每个写入和编辑调用。项目根目录取自 `$CLAUDE_PROJECT_DIR` (如果设置),否则取自 `process.cwd()` ;在检查前解析符号链接并规范 Windows 路径大小写
- **无插件遥测** — 插件不收集或传输使用情况分析;数据仅流向您的 Azure 租户和 AI 主机(Claude 或 Copilot),作为正常操作的一部分
---
## 文档
- [Agent 365 开发人员文档](https://learn.microsoft.com/en-us/microsoft-agent-365/developer/)
- [A365 CLI 开发命令](https://learn.microsoft.com/en-us/microsoft-agent-365/developer/reference/cli/develop)
- [A365 可观察性](https://learn.microsoft.com/en-us/microsoft-agent-365/developer/observability)
- [AI 引导设置](https://learn.microsoft.com/en-us/microsoft-agent-365/developer/ai-guided-setup)
- [Node.js LangChain 示例](https://github.com/microsoft/Agent365-Samples/tree/main/nodejs/langchain/sample-agent)
- [Node.js OpenAI 示例](https://github.com/microsoft/Agent365-Samples/tree/main/nodejs/openai/sample-agent)
- [Node.js Claude 示例](https://github.com/microsoft/Agent365-Samples/tree/main/nodejs/claude/sample-agent)
- [.NET AgentFramework 示例](https://github.com/microsoft/Agent365-Samples/tree/main/dotnet/agent-framework/sample-agent)
- [Python AgentFramework 示例](https://github.com/microsoft/Agent365-Samples/tree/main/python/agent-framework/sample-agent)
---
## 贡献
我们欢迎贡献 — 新的技能、对现有技能的改进和错误修复。请参阅 [AGENTS.md](./AGENTS.md) 以获取指南。
---
## 商标
该项目可能包含项目、产品或服务的商标或徽标。授权使用 Microsoft 商标或徽标须遵守并遵循 [Microsoft 的商标和品牌指南](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general)。在修改版本的此项目中使用 Microsoft 商标或徽标不得引起混淆或暗示 Microsoft 赞助。第三方商标或徽标的使用须遵守第三方政策。
---
## 许可证
该项目根据 [MIT 许可证](./LICENSE) 授权。
---
## 代码行为
该项目已采用 [Microsoft 开源代码行为](https://opensource.microsoft.com/codeofconduct/)。有关详细信息,请参阅 [代码行为常见问题](https://opensource.microsoft.com/codeofconduct/faq/) 或联系 [opencode@microsoft.com](mailto:opencode@microsoft.com),提出其他问题或评论。
连接信息
猜你喜欢
暂无推荐服务器