dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
零凭据 Outlook 自动化:13 个工具通过 COM 直接驱动本地桌面 Outlook 客户端——搜信/读信/草稿/回复转发/日历/通讯录/会议室/忙闲查询——外加侧边栏新邮件角标。无需 Graph API 注册、无需 SMTP 密码;任何外发动作都过三层人工审批门。
在 IT 不给你 Graph API 权限的公司电脑上,让 AI 直接操作你正在用的 Outlook。 零凭据 · 零管理员权限 · 发任何东西都先问你。
Zero-credential Outlook automation for AI agents on Windows: drives your local desktop Outlook client via COM. No Graph API app registration, no SMTP passwords, no tenant admin rights — everything that leaves the machine passes a three-layer human approval gate.
18 个 AI 工具(读操作自动执行;任何外发动作必须过确认弹窗):
| 工具 | 功能 | 守门 |
|---|---|---|
outlook_check_new | 新邮件到达推送(侧边栏角标同步) | 只读 |
outlook_search_mail | 搜邮件(天数/文件夹/发件人/主题/日期区间/收件人侧),结果可贴点击打开链接 | 只读 |
outlook_read_mail | 读全文(正文/收件人/附件名,超长截断) | 只读 |
outlook_open_mail | 在桌面 Outlook 窗口中打开邮件(标记已读、角标减 1) | 本地动作 |
outlook_account | 当前账户名/SMTP | 只读 |
outlook_draft_mail | 建草稿(永不发送,可带附件) | 安全 |
outlook_send_mail | 发邮件 | 三层人审 |
outlook_reply_mail | 回复/全部回复/转发(自动引用原文,转发带原附件) | 三层人审 |
outlook_calendar_query | 未来 N 天日程(含例会展开) | 只读 |
outlook_calendar_create | 个人日程直接建;带参会人则发邀请 | 邀请需人审 |
outlook_meeting_requests | 待响应的会议邀请列表 | 只读 |
outlook_respond_meeting | 接受/暂定/拒绝会议邀请 | 人审(通知组织者) |
outlook_meeting_update | 改日程/会议(组织者自动通知参会人) | 人审 |
outlook_meeting_cancel | 取消会议(通知参会人)/删个人日程 | 人审 |
outlook_search_people | 通讯录(GAL)搜人名/邮箱/别名 | 只读 |
outlook_freebusy | 同事忙闲时段(30 分钟粒度) | 只读 |
outlook_search_rooms | 会议室搜索 + 指定时段空闲检查 | 只读 |
outlook_save_attachment | 附件保存到本地(防路径穿越、不覆盖同名) | 本地写 |
外加一个侧边栏角标:新邮件到达时 Outlook 按钮出现红色计数,点击弹层列出最新到达;点击弹层中的邮件可直接在 Outlook 中打开(自动标记已读、角标减 1),悬停预览。会话聊天里的 [打开] markdown 链接同样点击即开:插件在页面内拦截左键点击并原地触发(无新标签页,页面底部 toast 提示)。
| 展开态(外置角标) | 收起态(圆钮内红点) |
|---|---|
# npm 短名安装(推荐)
dsh plugin --profile web add dsh-outlook
# 或直接从 GitHub
dsh plugin --profile web add https://github.com/UnknowCao/dsh-outlook
然后重启 profile(或依赖 patchReload: live)。没有第二步——不配置凭据、不注册应用、不改 Outlook 设置。
前置条件:Windows + 经典桌面版 Outlook(Win32 OUTLOOK.EXE)已登录 + Windows PowerShell 5.1(系统自带)。无需租户管理员权限。
| dsh-outlook | Graph API 类(outlook-mcp 等) | SMTP 类(mcp-server-email) | |
|---|---|---|---|
| 需要注册 Azure 应用 | ❌ 不需要 | ✅ 必须(企业常被 IT 锁死) | ❌ |
| 需要邮箱密码/凭据 | ❌ | OAuth token | ✅ SMTP 密码 |
| 读你"正在用的"客户端状态(未读/规则/本地文件夹) | ✅ | 部分 | ❌ |
| 外发前人工确认 | 三层门(见下) | 视实现 | 视实现 |
| 平台 | 仅 Windows 经典版 | 任意 | 任意 |
任何离开这台机器的动作——发邮件、发会议邀请——都要过三道互相独立的门:
confirmed:true 重试才执行;OLK_CONFIRM 令牌的发送路径——即使未来某个 bug 或新工具绕过前两层,令牌不出,邮件不发。它不会做的事:不静默发送任何内容;不保存/不回传邮箱凭据(根本不接触);草稿永不自动发送;附件保存拒绝路径穿越、拒绝覆盖已有文件。
已知边界:/olk-notify/* 路由仅本机可达并做同源校验(非浏览器/导航类请求与其它本机进程仍可读新邮件主题元数据);会话内"点击打开"链接里的端口不影响普通左键点击(client 按路径名拦截后向页面自身 origin 发送);/olk-notify/open 为 POST-only,修饰键/中键点击聊天链接会得到 405(有意行为,outlook_open_mail 工具不受影响);多标签页共享同一待读队列;用 OLK_WATCH=0 环境变量可关闭新邮件监听。
index.js 宿主半:18 个工具注册、两轮确认、内容哈希、watcher 管理、状态/打开路由
client.js 浏览器半:sidebar.footer.action 槽位按钮、角标、弹层(React Portal,点击打开)
lib/olk.ps1 COM 桥:全部 Outlook 操作 + 令牌门 + 本地化怪癖(见文件头注释)
lib/watch.ps1 NewMailEx 常驻监听:推送新邮件到达,崩溃 30s 自愈
cordis.patch.yml 宿主行声明
TESTCASES.md 49 个测试用例(链路/渲染/共存/路由/点击打开/链接拦截/已知边界)
CHANGELOG.md 版本叙事(为什么改)
诊断日志:%TEMP%\dsh-outlook-watch-debug.log(1MB 自动截断轮转)。
lib/olk.ps1 并经真实 Exchange 环境验证。