核心用法
Agent Teams 是一款 TypeScript CLI 工具,专为 AI 代理和人类用户设计,用于通过命令行与 Microsoft Teams 交互。其核心创新在于无需手动配置 API 密钥或 OAuth 流程,而是通过直接从本地安装的 Teams 桌面客户端提取认证 Cookie(skypetoken_asm)实现自动鉴权。
典型工作流包括:
- 快速快照:
agent-teams snapshot一键获取团队元数据、频道列表、成员信息和近期消息,专为 AI 代理消费设计 - 消息操作:支持发送、列出、获取、删除消息,以及添加表情反应
- 频道与团队管理:列出频道、切换活跃团队、获取团队信息
- 文件处理:上传文件、列出频道文件
- 多账户支持:可在工作账户与个人 Microsoft 账户间切换
输出格式
默认输出 JSON 便于程序解析,支持 --pretty 标志切换为人类可读格式。
显著优点
1. 零配置接入:首次使用自动从 Teams 桌面应用提取凭证,无需 Azure AD 应用注册或管理员审批
2. Token 自动续期:60-90 分钟有效期到期后自动重新提取,无需人工干预
3. 多团队/多账户:原生支持跨团队切换和 Microsoft 账户类型切换(工作/个人)
4. AI 原生设计:所有命令输出 JSON,快照功能为 LLM 提供结构化上下文
5. 轻量依赖:仅需 Node.js 和本地 Teams 客户端,无重量级 SDK
潜在缺点与局限性
| 限制类型 | 具体说明 |
|---------|---------|
| **实时性缺失** | 无 WebSocket 连接,不支持实时事件推送,只能轮询获取更新 |
| **功能边界** | 不支持语音/视频频道、会议管理、Webhook、自适应卡片(Adaptive Cards)、创建/删除频道或角色管理 |
| **Token 生命周期** | 强依赖 Teams 桌面应用保持登录状态;若应用退出或会话过期,自动提取将失败 |
| **平台依赖** | 目前仅支持通过本地 Teams 桌面客户端提取 Token,纯网页版 Teams 无法使用 |
| **用户 Token 限定** | 仅支持用户委托 Token(User Token),不支持应用级别权限(Application Token) |
| **消息格式** | v1 版本仅支持纯文本消息,富文本格式受限 |
| **安全隐患** | Token 以明文存储于 `~/.config/agent-messenger/teams-credentials.json`,虽设置 0600 权限但仍存在本地文件泄露风险 |
适合人群
- AI 代理开发者:需要将 Teams 集成到自动化工作流中,但无法走官方 Microsoft Graph API 审批流程
- 个人效率用户:希望用脚本批量发送通知、监控频道消息或生成团队摘要
- 小型团队:无 Azure AD 管理员权限,需要快速原型验证 Teams 自动化场景
- 跨平台自动化:需要将 Teams 与 Linux/Unix 工作流集成(官方 Teams 客户端已支持 Linux)
常规风险
1. 认证风险:Token 提取机制依赖 Teams 桌面应用的内部存储格式(Cookies SQLite),属于非官方支持的逆向工程行为,可能随 Teams 更新失效
2. 合规风险:使用用户 Token 进行自动化可能违反组织 Microsoft 365 使用政策,存在账号被封禁或审计追踪风险
3. 数据驻留:快照功能会本地缓存频道消息和成员信息,敏感数据需额外加密处理
4. 供应链风险:npm 包名为 agent-messenger 而非 agent-teams,存在命名混淆导致的误装风险(文档已明确警告)
5. 会话同步风险:若 Teams 桌面应用与网页版同时登录,Token 提取可能导致会话冲突或异常登出
技术实现要点
Token 提取通过读取 Teams 本地 Cookies 数据库(Cookies SQLite 文件)实现,定位 skypetoken_asm Cookie 值。该 Token 与 Teams 桌面应用会话绑定,因此要求应用持续运行且保持登录状态。