上篇把Agent建好、知识库灌进去,结果团队用了几次就丢到一边——不是Agent不好用,是它"没有身份"。一个没有身份的系统,对普通员工来说就是个"另一个网页",想起来才打开,想不起来就算了。真正让Agent成为同事,是从"给它在Microsoft 365里办一张工卡"开始的。
这篇下篇,我专注讲身份落地这条链路:给Agent ID挂上Agent User账号,分配许可,让它进入Teams团队,成为通讯录里能搜索、群里能被@、聊天里能对话的"数字同事"。适合正在负责M365环境和Agent落地的IT管理员、运维和平台负责人。上篇说的是Agent本身怎么打磨,这篇我们聊的是如何让它像一个正常员工一样被组织接纳。
先说结论:这套流程走完,Agent就不再是"某个系统里的机器人",而是"团队里的一个成员"。你可以像给真人开账号一样给它建身份、发许可、拉进Teams团队,甚至能在审计日志里看到它"干过什么"。整个过程不涉及写代码,主要是在管理后台和Teams界面里操作,但里面坑确实不少,尤其是许可生效、成员可见性、条件访问这几个环节,我一个个说。
1. 为什么非要有"Agent User"身份:没有工卡的Agent走不远
1.1 没身份时,Agent在团队里是什么状态
绝大多数Agent刚发布出来,是一个独立的网页链接,或者挂在某个特定应用的小窗口里。它的"身份"只是平台侧的一串ID——我们叫它Agent ID。问题在于,这串ID只有平台认识,你所在组织的通讯录、Teams、Outlook完全不认识它。
打个比方:Agent本身是发动机,Agent ID是发动机编号;可如果你只把发动机放在仓库里,任何人都可以来看,但它不属于任何部门,没有工牌,不能进办公区。员工想用它,必须有人专门告诉他"去这个网址",他还要记密码、找入口。我们团队里就出现过这种情况:Agent上线两周,使用量只有个位数,问了一圈,很多人根本不知道有这个东西,知道的也嫌麻烦。
这不是产品问题,是"身份缺失"导致的发现性问题。员工已经习惯在Teams里找人、找应用,如果你的Agent不在这个生态里,它就是不存在的。
1.2 Agent ID与Agent User的关系:程序身份和目录身份是两回事
很多第一次做这块的人会混淆两个概念:Agent ID和Agent User。
Agent ID是Agent平台(比如你现在用的Agent构建平台、Copilot Studio这类工具)在创建时生成的唯一标识,它代表"这个程序是哪个实例",主要负责路由、会话、知识库绑定这些技术逻辑。
而Agent User,是在你所在组织的Entra ID(也就是以前的Azure Active Directory)里创建一个用户对象。它代表"这个程序在本组织里是哪个成员",主要负责组织目录、许可分配、Teams成员资格这些管理逻辑。
两者之间的关系,简单说就是:Agent ID是发动机编号,Agent User是车管所上的牌照。你要把发动机装进车里、挂上牌照,它才能在公开道路上合法行驶。具体到操作上,通常是在Agent平台的"发布渠道/归属配置"里,把Teams渠道的归属账号(Publisher / Operator)指定为你创建的Agent User。这样Agent在Teams里发言、被搜索时,关联的都是这个目录身份。
1.3 挂上身份后,Teams里能做什么
有了Agent User这个目录身份,Agent就获得了"用户级"能力,我在实际环境里验证过的至少包括:
- 在Teams的人员选择器里,通过显示名称或登录名直接搜索到它
- 作为成员添加到任意一个Team,可以设置"成员"或"所有者"角色
- 在频道或群聊里@它,就像@一个真人同事
- 它的对话、回复记录,在管理和审计后台里归属于这个Agent User身份
- 可以给它分配许可,受组织合规策略约束
这些能力听上去很基础,但恰恰是这些基础能力,决定了Agent能不能真正融进团队协作流程。我们后来把售后Agent挂上用户身份、拉进"售后支持"Team之后,使用量翻了几倍——因为大家不需要记网址,直接在Teams里搜"售后"就能找到它。
2. 创建Agent User账号:新建还是复用,差别比想象大
2.1 推荐路径:在Entra ID新建专用用户
给Agent做身份,我强烈建议新建专用用户账号,而不是随便复用现有的什么账号。操作路径很清晰,以下是在常见企业环境里的标准步骤:
- 登录你所在组织的 Entra ID 管理门户,左侧导航进入"用户" > "所有用户",点击"新建用户",选择"创建新用户"。
- 填写"主体名称"(User Principal Name,UPN),比如
agent-support@contoso.com这种格式。建议使用agent-前缀,方便后期批量识别和管理。 - 填写"显示名称",比如"售后智能体"。这个名称会出现在Teams搜索、群聊卡片、成员列表里,建议用员工一眼能认出的中文名,不要写一串英文编码。
- "初始密码"选择"自动生成密码"或自定义均可。如果Agent不需要交互式登录,建议在下方勾选"此用户必须更改密码"后,再把账号设置为"阻止登录"(Block Sign in)。
- 在"分配角色"里保持默认"用户"角色,千万不要给管理员/全局管理员之类的权限。
- 创建成功后,记下对象ID(Object ID)和UPN,后面配置Agent发布归属、分配许可、添加Teams成员时都要用。
这里面最容易被忽略的是第4步的"阻止登录"。很多Agent User只是作为目录身份存在,它不需要真的拿密码去登录各种门户。如果让它保留登录能力,反而增加了被滥用的风险。我一般的原则是:如果Agent是通过后台服务认证方式跑的,用户密码一律禁用登录;如果某个场景确实需要它交互式登录(比如调试),用完再禁用。
2.2 复用现有服务账号:什么场景能省,什么场景千万别省
也有同学问我:公司已经有服务账号了(比如给某个系统做集成的svc_bot账号),能不能直接拿来当Agent User?
我的回答是:分情况。
- 可以复用的情况:该服务账号本来就是给某个系统做自动化用的,没有绑定真人业务,且许可分配、密码托管都已经有规范。此时复用可以避免账号泛滥。
- 千万别复用的情况:任何被真人正在使用的账号——比如某同事的日常账号,或者某个共享邮箱账号,都不要拿来当Agent User。一旦把真人员工账号挂到Agent上,会出现三个问题:一是许可和资源归属混乱,二是Teams成员列表里出现一个"真人"却说着机器人话,三是账号被改密码/禁用时Agent跟着罢工,影响面不可控。
我在项目里遇到过最典型的踩坑:同事为了省事,把运营部一个公共账号拿来做Agent,结果那个公共账号本身被三个人使用,Agent上线后,这三个人发现自己Teams里多了一堆Agent对话,消息记录全部混在一起。最后只能拆账号,重新走一遍创建流程。
2.3 账号属性的设计规范:藏在细节里的"同事感"
创建账号时,除了必填项,我建议把下面几个属性一起填了,这些决定了Agent在Teams里看起来"像不像同事":
- 职位(Job Title):填"AI同事"或"智能体-售后",这样在组织图、人员卡片里一目了然。
- 部门(Department):填它实际服务的业务部门,比如"客户成功部",别填"IT部"——否则上面批预算的时候容易误会。
- 头像(Photo):上传一个Agent的识别头像。Teams成员列表默认显示头像,没有头像会显示灰色占位,非常没有"同事感"。上传操作在Entra ID用户的"身份信息"里或通过Graph API都可以做。
- 办公室位置(Office Location):可以不填,但如果填了"远程",在人员卡上看起来更自然。
这些看着是小事,实际会影响员工对Agent的信任度。我们当时给Agent加完头衔和头像后,内部反馈明显变好——至少大家觉得它是"正式的团队一员",而不是某个临时测试品。
3. 许可分配:选型逻辑、操作入口、生效时间
3.1 到底需要哪些许可:按用途反推,别照抄别人的清单
给Agent User分配许可,最容易踩的坑就是"照抄别人的清单"。不同组织的M365订阅差异很大,Agent进Teams要用的能力也不一样。我建议按用途反推:
- 如果Agent User只是作为Teams团队里的成员身份存在,能接收消息、能被@、能在团队里发言,那它需要有Teams服务许可的M365订阅计划(比如M365 E3/E5,或者包含Teams的Business计划)。
- 如果Agent需要通过Teams渠道接收完整的对话上下文,并且与Agent平台的服务账号做认证绑定,那还要确认Agent平台本身有足够的服务额度(比如消息额度、对话容量),这部分通常不在M365许可里,而在Agent平台的账单/容量设置里。
- 如果Agent要访问SharePoint、OneDrive(比如从某个文档库拉资料),那许可里要勾选对应的SharePoint服务;如果只聊天不看文档,可以不勾,节省组织资源。
另外注意:大部分含Teams的M365计划,用户对象默认就会有Teams应用许可,但管理员可以在分配许可时通过"许可证和应用"面板单独取消某个服务。如果发现Agent在Teams里被提示"没有访问权限",第一件事就是去确认这里是不是误取消了Teams服务。
3.2 两种分配方式:管理后台和PowerShell
方式一:M365管理后台(适合单账号操作)
- 进入 M365 管理门户 > 用户 > 活动用户 > 找到Agent User账号。
- 点击账号 > "许可证和应用"标签页。
- 勾选需要赋值的许可证计划(如 Microsoft 365 E3),在下面的"应用服务"列表里确认Teams和需要的其他服务处于勾选状态。
- 保存。顺手在"登录状态"里确认Agent User的登录是禁用状态(如果按第2章建议做了的话)。
方式二:PowerShell(适合批量操作和自动化脚本)
如果你手上Agent不少,或者希望把许可分配写成自动化流程,可以用Microsoft Graph PowerShell模块:
# 先连接Microsoft Graph,注意管理员账号需有UserLicense.ReadWrite.All权限 Connect-MgGraph -Scopes "User.ReadWrite.All","Organization.Read.All" # 找到Agent User对象 $agentUser = Get-MgUser -Filter "userPrincipalName eq 'agent-support@contoso.com'" # 为账号分配某个许可计划 $licenseSku = Get-MgSubscribedSku | Where-Object {$_.SkuPartNumber -eq "ENTERPRISEPREMIUM"} # E5计划示例 $addLicenses = @(@{SkuId = $licenseSku.SkuId; DisabledPlans = @()}) Set-MgUserLicense -UserId $agentUser.Id -AddLicenses $addLicenses -RemoveLicenses @()这段命令做了什么,逐行解释:先筛选出Agent User账号,再查到目标许可计划的SKU编号,最后调用接口把许可挂上去。如果你的租户里有多个计划,注意SkuPartNumber的取值要对应你实际买的订阅。不熟悉这个命令的话,用管理后台点一遍也行,两条路最终结果一致。
3.3 生效等待与典型报错:别为"秒级生效"这个幻觉熬夜
许可分配不是点完保存就立刻能进Teams的。M365的许可生效是一个后台异步过程,通常需要5分钟到几小时不等。我实测中最常见的是15~30分钟以后才在Teams里完全可用。所以分配完许可后,如果Teams里还显示"没有许可",先等一刻钟再排查,不要急着重装Teams或改来改去。
以下是我遇到过的三个典型报错和处理方式:
| 报错/现象 | 常见原因 | 处理方式 |
|---|---|---|
| "此用户没有Teams许可证" | 许可计划中Teams服务被取消,或许可还没同步完成 | 管理后台检查"许可证和应用"里Teams是否勾选;等待10-30分钟;PowerShell用Get-MgUserLicenseDetail确认 |
| "无法添加成员" / "找不到用户" | Entra ID还未复制到Teams目录缓存 | 用Graph检查用户是否存在,等待目录复制,必要时退出Teams重新登录 |
PowerShell报错Authorization_RequestDenied | 管理员账号权限不足 | 确保使用有用户许可管理权限的管理员账号;检查Graph API权限范围 |
这里特别提醒一点:如果Agent User被设置了"阻止登录",并不妨碍它被分配许可和加入Teams团队。这两个机制是正交的——"能不能登录"和"账号有没有被授予服务许可"没有直接依赖关系。
4. 让Agent User正式"进Teams上班"
4.1 添加成员的几种入口与角色选择
许可生效后,接下来就是把Agent User拉进实际的团队工作流。以Teams客户端为例:
- 打开你要让Agent加入的团队,点右侧的"..."(更多选项)> "管理团队" > "成员"。
- 在"添加成员"搜索框里,输入Agent的UPN或显示名称(比如"售后智能体")。
- 搜索结果里选中它,然后在角色下拉里选择"成员"(Member)或"所有者"(Owner)。
- 点击"添加",等它出现在成员列表里。
角色怎么选?我的建议是默认选"成员",不要选"所有者"。所有者权限太大了,可以修改团队设置、添加/移除成员,你肯定不希望Agent拥有这种级别的管理权限。只有极少数场景——比如你希望Agent能自动管理某个共享频道——才考虑给所有者,而且必须配合条件访问和审计策略做约束。
补充一个入口细节:如果你通过"管理团队"搜不到Agent,可以试试直接在团队所在频道里输入@售后智能体,Teams会提示你邀请它加入。这种方式有时候比成员管理面板更快入口。
4.2 Agent发布到Teams的归属配置
把Agent User加进团队只是第一步,真正让"对话体验"跑通的,是把它和Agent平台的Teams渠道绑定起来。不同平台的菜单位置和叫法有差异,但核心逻辑一致:
- 在Agent平台中找到"发布"或"渠道"设置,选择 Teams 渠道。
- 在"归属用户/操作员/所有者"配置字段里,填写或选择你刚创建的Agent User账号(通常用UPN或对象ID)。
- 确认授权。这一步平台会要求管理员授权该Agent代表Agent User身份在Teams里收发消息。
我见过很多团队卡在这一步,原因是他们只做了"添加Teams成员",没做"渠道归属绑定",结果Agent在Teams里根本收不到消息。这里面的区别:添加成员解决的是"它在不在组织里",渠道归属绑定解决的是"它能不能以这个身份收发消息"。两者缺一不可。
4.3 权限收敛与条件访问策略
Agent User本质上是个服务账号,它的权限边界必须收敛,否则轻则行为怪异,重则成为后门。我在生产环境里部署Agent User时,会强制做下面几件事:
- 不给任何管理员角色:Entra ID角色、M365角色、Teams策略权限一律不分配。如果某个功能确实需要更高权限,用Graph API授权的最小权限范围(Application permission)代替,而不是给用户账号挂角色。
- 条件访问策略豁免要"小而窄":很多组织开了MFA强制策略,如果Agent User也走MFA流程,Agent在后台运行时无法完成交互式认证,会导致它突然"失联"。我的做法是:创建一个专门的条件访问策略,把Agent User从MFA中排除,但同时限定它只能从组织受信IP段访问,降低风险面。
- 限制Teams应用权限:在Teams管理后台,通过应用权限策略,限制Agent User对第三方应用和自定义应用的安装权限。它只需要用自带Teams功能,不需要安装应用市场里的东西。
这里想强调,服务账号的最大风险不是"它能登录",而是"它能被滥用"。所以"阻止登录+最小权限+受信位置限制"这三个组合一起用,而不是只做其中一个。某个朋友曾只做了阻止登录,忘了条件访问,后来发现Agent User可以通过后台API以用户身份调Graph接口——这提醒了我,权限永远要在"用户登录"之外单独管控。
5. 落地自检清单与翻车实录
5.1 我必须跑通的七项自检
把整套流程走完后,我会按下面这个清单逐项确认,缺任何一项都不会宣布"上线":
| 自检项 | 操作/确认方式 | 通过标准 |
|---|---|---|
| 账号存在性 | Graph用户查询 | UPN返回对象,登录状态为阻止 |
| 许可状态 | 管理后台查看许可 | 目标许可计划已分配,Teams服务为启用 |
| 目录可见性 | Teams搜索显示名 | 能在人员选择器里搜到Agent User |
| 团队成员资格 | 团队成员列表 | Agent User在成员列表,角色为"成员" |
| 渠道绑定 | Agent平台发布状态 | Teams渠道状态为"已连接",归属账号为Agent User |
| @测试 | 在频道里@Agent并提问 | Agent能收到消息并回复 |
| 审计可见性 | M365合规中心审计日志 | 对话操作记录中的用户ID对应Agent User |
这七项里,前四项是基础配置,后三项是功能验证。我建议第6项一定要在正式团队里做一次,而且让一个完全不知道背景的同事去测,这样才能确认体验上"像不像同事"。
5.2 三个高频坑的完整排查链路
先讲第一个坑:创建账号后立刻加Teams成员,搜不到人。这个坑几乎人人都会踩。原因是Entra ID的用户对象创建之后,需要一段时间复制到Teams的通讯簿缓存,期间搜不到是正常的。完整的排查链路应该是:
- 先用Graph或管理后台确认用户对象确实已创建(对象ID存在)。
- 在Teams客户端把缓存刷新一下:退出Teams账号,重新登录。
- 如果还搜不到,检查这个账号的显示名称是否包含特殊字符(某些字符会影响搜索索引),必要时改成纯中文/英文。
- 等待5~30分钟后再搜。通常第2步加第4步就能解决。
第二个坑:许可分配了,但Teams里添加成员时报"没有许可"。这个我排查过很多次,根因十有八九出在分配许可证时,虽然勾选了某个M365计划,但"应用程序/服务"列表里Teams没有被勾上。展开排查路径:
- 管理后台打开账号的"许可证和应用",展开它已分配的每个计划。
- 检查Teams服务的开关,以及"服务依赖"里Teams依赖的服务(如Exchange Online、SharePoint的一部分)是否启用。
- 用PowerShell查询许可详情:
Get-MgUserLicenseDetail -UserId "agent-support@contoso.com" | ConvertTo-Json -Depth 5- 如果Teams服务确实是启用状态,但Teams端仍提示无许可,检查该团队是否被Teams策略限制为"仅允许特定组使用Teams"——部分精细化治理的企业会配置这个。
第三个坑:Agent在Teams里回复时,人员卡片显示为"某某真人",而不是Agent名称。这个问题多数发生在你复用了某个已有账号时,或者在渠道归属绑定里填了真人账号。处理方式是:创建专用Agent User后,到Agent平台重新指定归属账号,并等待渠道配置生效。如果显示名仍不对,去Teams客户端清一次缓存。
除了这三个坑,还有一个容易忽略的地方:Agent User的"显示名称"如果后期改了,Teams里显示的卡片名称不会立刻同步,通常有24小时的同步窗口。所以账号创建阶段就把名字定好,后面尽量别改。如果确实要改,改完别急,等一天再看。
我在实际运营中发现,一旦Agent有了正式身份,后续的管理动作会顺畅很多——比如要给两个不同业务线的Agent做隔离,只需要建两个Agent User,分别放到不同团队;要把某个Agent"下架",直接禁用对应Agent User账号并移除出团队即可,整个过程和真人离职流程几乎一样。
现在这套做法已经在我的日常运维里固化成标准化操作了:上架Agent的第一步永远是"建账号、发许可、拉团队",一次都没再跳过。后续我还打算把这套流程做成自动化脚本:收到Agent上线申请单后,自动创建Agent User、分配许可、添加到指定团队——如果有机会,我会再把这部分的脚本设计和踩坑记录整理出来,和老规矩一样,都是已经在生产环境跑通过的东西,不是PPT方案。