jarvis 官方自定义 harness 市场 — 让 Jarvis 操控更多桌面软件。
本仓库提供 jarvis 官方 harness 市场,用于控制 CLI-Anything 官方市场未覆盖的桌面软件。
每个 harness 是一个标准 Python 包,包含:
SKILL.md— harness 定义(能力描述、参数、触发场景)setup.py— pip 打包配置(console_scripts 入口)jarvis_harness_<id>/— Python 包(cli.py 入口 + core/ 业务逻辑 + utils/ 工具层)run.py— 向后兼容入口(支持目录复制安装方式)
- 已安装 jarvis 个人 AI 助手
- Jarvis 运行正常(
jarvis或python -m agent.main)
| ID | 软件 | 控制方式 | 全局命令 | 状态 |
|---|---|---|---|---|
| wps | WPS Office | COM 自动化 (win32com) | jarvis-harness-wps |
✅ 可用 |
| QQ 桌面版 | pywinauto + pyautogui | — | 框架 | |
| 微信桌面版 | pywinauto + pyautogui | — | 框架 | |
| firefox | Firefox 浏览器 | Selenium WebDriver | — | 框架 |
| xmind | Xmind 思维导图 | 文件操作 (.xmind=ZIP+JSON) | jarvis-harness-xmind |
✅ 可用 |
| typora | Typora 编辑器 | 文件读写 + 注册表定位 | jarvis-harness-typora |
✅ 可用 |
# 在 jarvis REPL 中执行
/cli_anything market # 查看可用 harness
/cli_anything install wps # 安装 WPS harness(自动 pip install + 迁移 SKILL.md)
/cli_anything install qq # 安装 QQ harness# 从 GitHub 直接安装
pip install git+https://github.com/aceFelix/jarvis-harness-market.git#subdirectory=harnesses/wps
# 或本地开发安装
cd harnesses/wps
pip install -e .安装后即可使用全局命令:
jarvis-harness-wps version
jarvis-harness-wps status
jarvis-harness-wps writer --action open_doc --target "C:\Users\me\报告.docx"
jarvis-harness-wps --subcommand "sheet --action read_cell --target test.xlsx --cell A1" --json将 harnesses/<id>/ 目录复制到 ~/.jarvis/cli_anything/<id>/:
# Windows
xcopy /E harnesses\wps %USERPROFILE%\.jarvis\cli_anything\wps\
# macOS/Linux
cp -r harnesses/wps ~/.jarvis/cli_anything/wps/此方式通过 python run.py ... 调用,无需 pip 安装。
在 ~/.jarvis/settings.toml 中配置自定义市场源:
[cli_anything]
market_url = "https://raw.githubusercontent.com/<user>/jarvis-harness-market/main"
market_local = "path/to/jarvis-harness-market"Jarvis 加载顺序:自定义市场远程 → 官方 CLI-Anything → 本地回退。
- 在
harnesses/下创建新目录(如harnesses/dingtalk/) - 创建 Python 包
jarvis_harness_dingtalk/:harnesses/dingtalk/ ├── jarvis_harness_dingtalk/ │ ├── __init__.py # 版本号 │ ├── __main__.py # python -m 入口 │ ├── cli.py # CLI 主入口(argparse) │ ├── core/ # 业务逻辑 │ │ ├── __init__.py │ │ └── messenger.py │ └── utils/ # 底层工具 │ ├── __init__.py │ └── backend.py ├── setup.py # pip 打包(console_scripts 入口) ├── run.py # 向后兼容入口 └── SKILL.md # harness 定义 - 编写
setup.py(entry_points 定义全局命令jarvis-harness-<id>) - 编写
SKILL.md(command 字段填全局命令名) - 在
registry.json中添加条目(含install_cmd字段) - 提交并推送
from setuptools import setup, find_packages
setup(
name="jarvis-harness-dingtalk",
version="1.0.0",
packages=find_packages(include=["jarvis_harness_dingtalk", "jarvis_harness_dingtalk.*"]),
entry_points={
"console_scripts": [
"jarvis-harness-dingtalk=jarvis_harness_dingtalk.cli:main",
],
},
install_requires=[...],
)# 直接子命令格式
jarvis-harness-<id> <component> --action <操作> [--target <对象>] [--json]
# jarvis runner 格式(--subcommand 字符串)
jarvis-harness-<id> --subcommand "<component> --action <操作> [options]" --json
# 输出格式(stdout JSON)
{"status": "ok", "action": "send_msg", "result": "..."}
{"status": "error", "action": "send_msg", "error": "..."}{
"id": "dingtalk",
"display_name": "钉钉",
"description": "...",
"requires": "pywinauto",
"skill_md": "harnesses/dingtalk/SKILL.md",
"install_cmd": "pip install git+https://github.com/aceFelix/jarvis-harness-market.git#subdirectory=harnesses/dingtalk"
}市场发布前请运行轻量校验套件(纯静态,无需安装目标软件):
pip install -r requirements-dev.txt
pytest tests/ -v覆盖范围:
- registry.json:JSON 合法、id 唯一、
skill_md路径存在、install_cmd与目录一致 - SKILL.md:所有 harness 的 frontmatter 可解析且字段齐全
- pip 型 harness(wps/xmind/typora):全部
.py编译通过、包可导入、CLI 入口存在
真实 GUI 集成(实际操作 Typora/WPS/Xmind)需在装有对应软件的机器上手动验证, 每个 harness 自带的
info/action命令即可自测。 CI(.github/workflows/ci.yml)会在每次推送时自动运行上述校验。
本项目采用 MIT 许可证,详见 LICENSE 文件。