我们天天聊 AI Agent,聊它多聪明、多能干。但你有没有想过一个问题:一个 Agent 再聪明,如果它连你电脑上的 Outlook 都打不开、连浏览器标签页都切不了,那它跟一个只会聊天的机器人有什么区别?
这就是 PowerSkills 要解决的问题。
为什么是 PowerShell?
很多人一听到 PowerShell 就皱眉头,觉得这东西又老又难用。但换个角度想,PowerShell 是 Windows 系统上最"原生"的自动化工具。它能直接调用 COM 对象操控 Outlook,能通过 .NET Framework 截屏和管理窗口,能用 CDP 协议控制 Edge 浏览器。
Python 当然也能做这些事,但你得装一堆依赖库,还得处理各种兼容性问题。PowerShell 在 Windows 上是开箱即用的——5.1 版本预装在每台 Windows 10/11 机器上,不需要额外安装任何东西。
对 AI Agent 来说,这意味着什么?意味着它可以在任何一台 Windows 电脑上直接干活,零配置。
PowerSkills 的设计哲学
PowerSkills 的作者 aloth 做了一个很聪明的设计决策:所有技能的输出都是结构化的 JSON。
{"status": "success","exit_code": 0,"data": { ... },"timestamp": "2026-03-06T16:00:00+01:00"}这个设计看起来简单,但它解决了 AI Agent 与系统交互时最头疼的问题——解析返回结果。传统的命令行工具输出的是人类可读的文本,AI 要从里面提取信息得靠"猜"。而 JSON 格式让 Agent 可以精确地读取每一个字段,不会出现理解偏差。
四大技能模块拆解
PowerSkills 把 Windows 操控能力拆成了四个独立的技能模块,每个模块都有自己的 SKILL.md 文件供 Agent 自主发现和学习。这个"自描述"的设计很关键——Agent 不需要人工告诉它能做什么,它自己读文档就行。
Outlook 邮件自动化
这是我觉得最实用的模块。它通过 Outlook 的 COM 接口,让 Agent 可以:
# 查看未读邮件.\powerskills.ps1 outlook unread --limit 5# 读取某封邮件的完整内容.\powerskills.ps1 outlook read --index 0 --folder inbox# 搜索特定邮件.\powerskills.ps1 outlook search --query "项目周报" --limit 10# 发送邮件(或保存为草稿).\powerskills.ps1 outlook send --to "[email]" --subject "会议纪要" --body "内容..." --draft# 查看未来 3 天的日历.\powerskills.ps1 outlook calendar --days 3想象一下这个场景:你对 Agent 说"帮我看看今天有没有重要邮件,顺便把明天的会议安排整理一下"。Agent 调用 unread 拿到未读列表,用 read 逐封查看内容,再调 calendar 获取日程,最后给你一份整理好的摘要。整个过程不需要你动一根手指。
有个细节值得注意:Outlook 模块要求在非管理员的 PowerShell 会话中运行,因为管理员会话无法访问用户的 Outlook 配置文件。这种"知道什么不能做"的边界意识,恰恰是一个成熟工具该有的样子。
Edge 浏览器控制
浏览器自动化这块,PowerSkills 走的是 Chrome DevTools Protocol(CDP)路线。你需要先用调试端口启动 Edge:
Start-Process "msedge" -ArgumentList "--remote-debugging-port=9222"然后 Agent 就能像操控木偶一样控制浏览器了:
# 列出所有标签页.\powerskills.ps1 browser tabs# 打开新页面.\powerskills.ps1 browser navigate --url "https://example.com"# 截图保存.\powerskills.ps1 browser screenshot --out-file page.png# 提取页面文本内容.\powerskills.ps1 browser content# 执行 JavaScript.\powerskills.ps1 browser evaluate --expression "document.title"# 自动填写表单.\powerskills.ps1 browser fill --fields-json '[{"selector":"#user","value":"alex"},{"selector":"#pass","value":"secret","submit":"#login"}]'表单填写功能支持文本输入、下拉选择和复选框,最后一个字段还能指定提交按钮。这意味着 Agent 可以自动登录网站、填写在线表单、抓取网页数据——基本上你在浏览器里能做的事,它都能做。
多标签页操作也考虑到了。tabs 命令返回每个标签页的 target-id,后续操作传入这个 ID 就能精确控制特定标签页。
桌面操控
桌面模块覆盖了截屏、窗口管理和键盘输入三大块:
# 全屏截图.\powerskills.ps1 desktop screenshot --out-file screen.png# 截取特定窗口.\powerskills.ps1 desktop screenshot --out-file outlook.png --window "Outlook"# 列出所有可见窗口.\powerskills.ps1 desktop windows# 聚焦到某个窗口.\powerskills.ps1 desktop focus --window "Notepad"# 发送键盘输入.\powerskills.ps1 desktop keys --keys "Hello world{ENTER}" --window "Notepad"# 启动应用程序.\powerskills.ps1 desktop launch --app "notepad.exe" --app-args "C:\temp\notes.txt"截屏功能对 Agent 来说特别有价值。结合多模态大模型的视觉能力,Agent 可以"看到"屏幕上的内容,理解当前的界面状态,然后决定下一步操作。这就从"盲操"变成了"有眼睛的操作"。
键盘输入用的是 Windows 原生的 SendKeys 语法,{ENTER} 表示回车,^c 表示 Ctrl+C,%{F4} 表示 Alt+F4。虽然语法有点古老,但胜在稳定可靠。
系统命令执行
系统模块是最基础也最强大的——它让 Agent 可以执行任意 PowerShell 命令:
# 执行任意命令.\powerskills.ps1 system exec --command "Get-Process | Select -First 5"# 获取系统信息.\powerskills.ps1 system info# 查看 CPU 占用最高的进程.\powerskills.ps1 system processes --limit 10# 读取环境变量.\powerskills.ps1 system env --name COMPUTERNAMEexec 命令还支持超时设置,防止某个命令卡死导致 Agent 挂起。这种防御性设计在实际使用中非常重要。
架构设计的巧妙之处
翻看 PowerSkills 的源码,有几个设计让我印象深刻。
powerskills.ps1 是整个项目的入口和调度器。它做的事情很纯粹:解析参数、加载配置、分发到对应的技能脚本。每个技能脚本接收统一的参数格式(-Action、-Args_、-Config),返回统一的数据结构。
PowerSkills/├── powerskills.ps1 # 入口调度器├── config.json # 全局配置├── lib/│ └── bootstrap.ps1 # 共享的参数解析和 JSON 输出├── skills/│ ├── outlook/│ │ ├── SKILL.md # Agent 可读的技能文档│ │ └── outlook.ps1 # 实现代码│ ├── browser/│ ├── desktop/│ └── system/lib/bootstrap.ps1 提供了两个核心函数:Write-SkillResult 和 Write-SkillError。所有技能的输出都通过这两个函数包装成统一的 JSON 信封格式。这种"约定大于配置"的思路,让新增技能变得非常简单——你只需要关注业务逻辑,输出格式框架已经帮你搞定了。
每个技能目录下的 SKILL.md 文件是给 Agent 看的"说明书"。Agent 可以通过 .\powerskills.ps1 outlook help 读取这个文件,了解这个技能能做什么、参数怎么传、返回什么数据。这种自描述机制让 Agent 具备了"自学"新技能的能力。
实际应用场景
说了这么多技术细节,来看几个实际能落地的场景。
场景一:智能邮件助理。Agent 定时检查未读邮件,根据内容自动分类(紧急/普通/垃圾),对需要回复的邮件生成草稿,等你确认后发送。整个流程只需要 Outlook 模块的 unread → read → reply --draft 三个命令。
场景二:网页数据采集。Agent 打开目标网站,登录账号,导航到数据页面,提取内容,保存到本地。浏览器模块的 navigate → fill → content 就能搞定。
场景三:系统运维巡检。Agent 每天早上自动检查系统状态、CPU 和内存使用情况、关键进程是否在运行,生成巡检报告发到你的邮箱。系统模块 + Outlook 模块的组合拳。
场景四:跨应用工作流。最有想象力的场景是把多个模块串起来。比如:从邮件中提取会议链接 → 用浏览器打开并截图 → 把截图和会议摘要整理成文档。这种跨应用的自动化,以前需要写一堆胶水代码,现在 Agent 调几个命令就能完成。
安全性考量
把系统控制权交给 AI Agent,安全问题不能不提。
PowerSkills 的 system exec 命令理论上可以执行任何 PowerShell 命令,这意味着 Agent 拥有了和当前用户相同的系统权限。在生产环境中使用时,你需要认真考虑几个问题:
权限隔离——建议在受限用户账户下运行 Agent,而不是管理员账户。命令白名单——可以在 Agent 的提示词中明确限制它能执行的命令范围。操作审计——所有命令的执行结果都有时间戳,方便事后追溯。人工确认——对于高风险操作(比如删除文件、发送邮件),建议加入人工确认环节。
这不是 PowerSkills 本身的问题,而是所有"给 AI 系统控制权"方案都需要面对的挑战。工具是中性的,关键在于你怎么用它。
动手试试
如果你想体验一下,安装过程很简单:
git clone https://github.com/aloth/PowerSkills如果遇到脚本执行策略限制,运行:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned然后就可以开始玩了:
# 看看有哪些技能.\powerskills.ps1 list# 获取系统信息.\powerskills.ps1 system info# 截个屏.\powerskills.ps1 desktop screenshot --out-file test.png浏览器模块需要先启动带调试端口的 Edge:
Start-Process "msedge" -ArgumentList "--remote-debugging-port=9222"Outlook 模块需要本机安装了 Outlook 桌面版。
写在最后
PowerSkills 这个项目让我看到了 AI Agent 落地的一种很务实的路径:不追求什么"通用人工智能",就是踏踏实实地把 Windows 系统的操控能力封装好,用 JSON 格式暴露给 Agent。
技术上没有什么黑魔法,就是 PowerShell + COM + CDP + .NET,都是成熟的技术栈。但它的价值在于把这些能力用一种 Agent 友好的方式组织起来了——统一的命令格式、结构化的输出、自描述的文档。
AI Agent 的未来不在于它有多聪明,而在于它能做多少事。PowerSkills 给了它一双操控 Windows 的手,剩下的就看你怎么指挥了。
如果你也在做 Agent 相关的项目,PowerSkills 的设计思路很值得参考。欢迎评论区聊聊你的想法。
项目地址:https://github.com/aloth/PowerSkills
夜雨聆风