Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions .github/workflows/workbuddy-plugin-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: WorkBuddy Plugin CI

on:
push:
paths:
- 'workbuddy-plugin/**'
- '.github/workflows/workbuddy-plugin-*.yml'
pull_request:
paths:
- 'workbuddy-plugin/**'
- '.github/workflows/workbuddy-plugin-*.yml'

permissions:
contents: read

jobs:
check:
runs-on: ubuntu-latest
timeout-minutes: 15
strategy:
matrix:
node: ['22.19.0', '24']
defaults:
run:
working-directory: workbuddy-plugin
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
cache: npm
cache-dependency-path: workbuddy-plugin/package-lock.json
- run: npm ci
- run: npm run pack:release
- run: npm audit --omit=dev --audit-level=moderate
macos-package:
runs-on: macos-latest
timeout-minutes: 15
defaults:
run:
working-directory: workbuddy-plugin
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22.19.0'
cache: npm
cache-dependency-path: workbuddy-plugin/package-lock.json
- run: npm ci
- run: npm run pack:release
- run: npm run test:native
- uses: actions/upload-artifact@v4
with:
name: workbuddy-candidate
path: workbuddy-plugin/dist/*
if-no-files-found: error
packaged-startup:
needs: [check, macos-package]
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
defaults:
run:
working-directory: workbuddy-plugin
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22.19.0'
cache: npm
cache-dependency-path: workbuddy-plugin/package-lock.json
- run: npm ci
- run: npm run check
- uses: actions/download-artifact@v4
with:
name: workbuddy-candidate
path: workbuddy-plugin/dist
- run: npm run smoke:packed
41 changes: 41 additions & 0 deletions .github/workflows/workbuddy-plugin-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: WorkBuddy Plugin Release

on:
push:
tags:
- 'opengui-workbuddy-v*'

permissions:
contents: write

concurrency:
group: workbuddy-release-${{ github.ref }}
cancel-in-progress: false

jobs:
release:
runs-on: macos-latest
timeout-minutes: 20
defaults:
run:
working-directory: workbuddy-plugin
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: '22.19.0'
cache: npm
cache-dependency-path: workbuddy-plugin/package-lock.json
- name: Require main ancestry
run: git merge-base --is-ancestor HEAD origin/main
- run: npm ci
- run: npm run pack:release
- run: npm run smoke:packed
- name: Require real WorkBuddy acceptance
run: node scripts/validate.mjs --release
- name: Publish immutable WorkBuddy assets
env:
GH_TOKEN: ${{ github.token }}
run: node scripts/publish.mjs
17 changes: 17 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

<p align="center">
<a href="#use-opengui-in-deepseek-harness"><img src="https://img.shields.io/badge/INSTALL-DEEPSEEK_HARNESS_PLUGIN-6f42c1?style=for-the-badge" alt="Install the DeepSeek Harness plugin"></a>
<a href="#use-opengui-in-workbuddy"><img src="https://img.shields.io/badge/INSTALL-WORKBUDDY_CANDIDATE-168a70?style=for-the-badge" alt="Install the WorkBuddy candidate"></a>
<a href="./skills/open-gui-bootstrap/SKILL.md"><img src="https://img.shields.io/badge/BOOTSTRAP-WITH_AI_AGENTS-ffb000?style=for-the-badge" alt="Bootstrap with Claude Code, Codex, or OpenCode"></a>
<img src="https://img.shields.io/badge/SYSTEM-MULTI_ROLE_OPERATOR-1f6feb?style=for-the-badge" alt="Multi-role operator system">
<img src="https://img.shields.io/badge/TASKS-UP_TO_12_HOURS-cf222e?style=for-the-badge" alt="Tasks up to 12 hours">
Expand Down Expand Up @@ -78,6 +79,22 @@ For GUI execution, our current recommendation order is:

Model availability, pricing, and policy behavior vary by version and region. Whichever provider you choose, the model must support both image input and tool calling.

## Use OpenGUI in WorkBuddy

WorkBuddy has a separate [MCP + Skill + Hooks connector](./workbuddy-plugin/README.md#install-on-macos). It uses WorkBuddy's current visual model to operate Android phones and opens read-only scrcpy windows by default. No DSH installation, full OpenGUI backend, or extra model API key is required.

Version `0.2.0` is a local candidate in [PR #95](https://github.com/Core-Mate/OpenGUI/pull/95), not a published Release or marketplace installation. Start with macOS and WorkBuddy 5.5.3; Windows/Linux package checks do not establish phone-control support. Follow the [macOS installation steps](./workbuddy-plugin/README.md#install-on-macos) to build the candidate and install its MCP, `opengui` Skill and lifecycle Hooks together. The installer preserves other plugins and backs up the affected WorkBuddy configuration.

After restarting WorkBuddy, enable/trust the `opengui` MCP if prompted, connect a USB-debugging-authorized Android phone, select `/opengui`, and send:

```text
Open Settings and report the Android version on my phone.
```

Phone tasks send screenshots to the selected model. For local viewing only, ask “Show my phone screens without taking screenshots for the model or operating the phones.” Task completion leaves the mirrors open. Closing a mirror does not cancel a running task; use WorkBuddy's stop control to stop execution.

If `/opengui` is missing or tasks do not continue automatically, see [installation checks and troubleshooting](./workbuddy-plugin/README.md#verify-the-installation). MCP alone does not install the Skill or Hooks.

## Run the Full OpenGUI Stack

To run the full OpenGUI backend and Android client, let Claude Code, Codex, or OpenCode bootstrap it for you.
Expand Down
17 changes: 17 additions & 0 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

<p align="center">
<a href="#在-deepseek-harness-中使用-opengui"><img src="https://img.shields.io/badge/INSTALL-DEEPSEEK_HARNESS_PLUGIN-6f42c1?style=for-the-badge" alt="安装 DeepSeek Harness 插件"></a>
<a href="#workbuddy-安装"><img src="https://img.shields.io/badge/INSTALL-WORKBUDDY_CANDIDATE-168a70?style=for-the-badge" alt="安装 WorkBuddy 候选版"></a>
<a href="./skills/open-gui-bootstrap/SKILL.md"><img src="https://img.shields.io/badge/BOOTSTRAP-WITH_AI_AGENTS-ffb000?style=for-the-badge" alt="使用 Claude Code、Codex 或 OpenCode 启动"></a>
<img src="https://img.shields.io/badge/SYSTEM-MULTI_ROLE_OPERATOR-1f6feb?style=for-the-badge" alt="Multi-role operator system">
<img src="https://img.shields.io/badge/TASKS-UP_TO_12_HOURS-cf222e?style=for-the-badge" alt="Tasks up to 12 hours">
Expand Down Expand Up @@ -79,6 +80,22 @@ OpenGUI 正式支持 DSH `0.1.0-rc.7`、`0.1.0-rc.8`、`0.1.1-rc.1` 和 `0.1.1-r

具体模型的可用性、价格和策略会随版本及地区变化。无论选择哪家模型,都需要同时支持图片输入和工具调用。

## WorkBuddy 安装

WorkBuddy 使用独立的 [MCP + Skill + Hooks 插件](./workbuddy-plugin/README.zh-CN.md#macos-安装),由当前视觉模型看图操作 Android 手机,默认打开只读 scrcpy 投屏窗口。不需要安装 DSH、部署完整 OpenGUI 后端或额外配置模型 API Key。

当前 `0.2.0` 是 [PR #95](https://github.com/Core-Mate/OpenGUI/pull/95) 中的本地候选版,尚未正式发布或上架市场。安装以 macOS、WorkBuddy 5.5.3 为基线,Windows/Linux 打包检查通过不代表支持真机操作。按照 [macOS 安装步骤](./workbuddy-plugin/README.zh-CN.md#macos-安装),将 MCP、`opengui` 技能和生命周期 Hooks 一起安装。安装器会备份相关 WorkBuddy 配置,保留其他插件。

重开 WorkBuddy,按宿主提示启用并信任 `opengui` MCP,连接已授权 USB 调试的 Android 手机。在输入框选择 `/opengui`,发送:

```text
打开手机设置,查看并告诉我 Android 版本。
```

手机任务会把截图发送给当前模型。只想看投屏时,可以说“展示手机投屏,不截图给模型,也不要操作手机”。任务结束后投屏保留;关闭投屏窗口不会取消正在执行的任务,停止操作请使用 WorkBuddy 的停止按钮。

找不到 `/opengui` 或任务不能自动续跑时,查看 [安装验证与排查](./workbuddy-plugin/README.zh-CN.md#安装验证与排查)。只添加 MCP 不会自动安装技能和 Hooks。

## 运行完整 OpenGUI 技术栈

如果要运行完整的 OpenGUI 后端和 Android 客户端,可以让 Claude Code、Codex 或 OpenCode 帮你完成启动。
Expand Down
7 changes: 7 additions & 0 deletions workbuddy-plugin/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
node_modules/
lib/
dist/
coverage/
*.tgz
.env*
artifacts/
30 changes: 30 additions & 0 deletions workbuddy-plugin/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# OpenGUI for WorkBuddy 0.2.0 candidate

Not released. Broker protocol 7 requires an explicit local runtime switch.

- Native WorkBuddy Hooks bind tasks, continue recoverable unfinished work, and release control on stop or inactivity without closing displays.
- Authorized phone tasks no longer use plugin confirmation forms or approval flags; host restrictions and task scope still apply.
- Fresh per-device result evidence, bounded image stabilization, persistent task budgets, and reconnect-safe progress checks prevent blind action replay and false completion.
- Local candidate installation preserves and backs up WorkBuddy MCP, Hook and Skill configuration. DSH and Codex remain separate.

## 0.1.0 candidate history

## 中文

- 首个独立的 WorkBuddy MCP + Skill 连接器,支持本机 Android 手机控制和最多四台手机的只读设备墙。
- 十一个工具覆盖默认持续投屏、设备发现、会话、截图、单步操作、状态、取消和关闭。
- 首次投屏验证通过后,最小化、遮挡和关窗不暂停手机任务;真机断线仍撤销观察凭据。
- 跨 MCP 进程共享 WorkBuddy 内部设备锁;断线只清理自己的会话。
- 操作绑定最新截图,限制重复无进展动作;发送、发布、购买、删除需要确认表单。
- 独立 GitHub 安装包、连接器 ZIP 和 SHA-256,不更改 DSH/Codex 生产插件。

## English

- First independent WorkBuddy MCP + Skill connector for local Android control and a read-only wall of up to four phones.
- Eleven tools cover default persistent mirroring, discovery, sessions, observation, single-step actions, status, cancellation, and closure.
- After initial display verification, minimization, occlusion and closure do not pause phone tasks; physical disconnection still invalidates observations.
- WorkBuddy processes share device leases; disconnection cleans only the owning connection's sessions.
- Actions require the latest observation, repeated no-progress actions are bounded, and classified consequential actions require confirmation forms.
- Independent GitHub runtime tarball, connector ZIP, and SHA-256 assets. DSH and Codex production plugins remain unchanged.

First installation requires network access. The selected WorkBuddy model must support tools and images. Do not automate the same physical phone concurrently from another host.
21 changes: 21 additions & 0 deletions workbuddy-plugin/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 DeepSeek

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
9 changes: 9 additions & 0 deletions workbuddy-plugin/NOTICE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Provenance and runtime boundary

The Android command validation, execution queue, device discovery, owned-forward inventory, safe ZIP extraction, scrcpy clipboard transport, session API, and associated baseline tests were ported from the public OpenGUI repository at commit `674e35893219f47b03508ba58b84a13e57f31c57` (DSH release v0.1.13).

These are independent copies under the accompanying OpenGUI license. This package does not import, build, install, upgrade, reconfigure, or share state with the DSH or Codex plugins. Changes here do not patch those production packages. The native DSH UI, browser agent, host commands, model routing, and Codex installer/daemon are not included. The WorkBuddy broker, MCP adapter, device-wall access checks, packaging, and lifecycle fixes are maintained here separately.

Android Platform Tools binaries and their upstream notices are in `assets/platform-tools/`. `MANIFEST.md` records their fixed version and SHA-256 hashes. The scrcpy 4.1 archives are downloaded only on first Unicode input from the official Genymobile GitHub release, checked against fixed byte counts and SHA-256 hashes, and cached privately. No DSH/Codex cache is inspected or migrated. scrcpy is licensed under Apache-2.0; its upstream license and notices remain in the downloaded archive.

The MCP SDK, sharp, Ajv, tar, and yauzl are installed as version-pinned npm dependencies, with a committed lockfile for development and CI. This is GitHub tarball distribution, not an npm publication.
Loading
Loading