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
159 changes: 159 additions & 0 deletions .github/workflows/deepseek-harness-plugin-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
name: DeepSeek Harness Plugin Release

on:
push:
tags:
- 'dsh-coremate-mobile-v*'

permissions:
contents: read

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

jobs:
build:
if: github.actor == 'gofenix'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 允许仓库维护者触发标签发布

当发布标签由 gofenix 之外的维护者、GitHub App 或自动化账号推送时,这个 job 会直接被标记为 skipped,依赖它的 publish job 也不会运行;标签已经存在后,合并或重新运行工作流也不会重新触发 push.tags 事件。因此仓库文档指向的安装包可能永远不会生成,除非始终由这个单一账号创建每个标签。应改用受保护环境、权限或显式授权名单控制发布,而不是把发布流程绑定到一个用户名。

Useful? React with 👍 / 👎.

runs-on: ubuntu-latest
defaults:
run:
working-directory: deepseek-harness-plugin
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
persist-credentials: false

- name: Verify release source and version
shell: bash
run: |
git fetch --no-tags origin main
git merge-base --is-ancestor "$GITHUB_SHA" origin/main
node --input-type=module <<'NODE'
import { readFileSync } from 'node:fs'

const pkg = JSON.parse(readFileSync('package.json', 'utf8'))
const expectedTag = `dsh-coremate-mobile-v${pkg.version}`
if (expectedTag !== process.env.GITHUB_REF_NAME) {
throw new Error(`tag ${process.env.GITHUB_REF_NAME} does not match ${expectedTag}`)
}
const installer = readFileSync('skills/opengui-coremate-install/scripts/install-macos.sh', 'utf8')
const skill = readFileSync('skills/opengui-coremate-install/SKILL.md', 'utf8')
const agent = readFileSync('skills/opengui-coremate-install/agents/openai.yaml', 'utf8')
if (!installer.includes(`release_version="${pkg.version}"`)) throw new Error('installer version is out of sync')
if (!skill.includes(`OpenGUI v${pkg.version} release`)) throw new Error('Skill version is out of sync')
if (!agent.includes(`OpenGUI v${pkg.version}`)) throw new Error('Skill agent version is out of sync')
NODE

- uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10
with:
version: 11.19.0

- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 22.19.0
cache: pnpm
cache-dependency-path: deepseek-harness-plugin/pnpm-lock.yaml

- run: pnpm install --frozen-lockfile
- run: pnpm run check

- name: Pack and verify the only release artifact
shell: bash
run: |
rm -rf release-assets
mkdir release-assets
archive="dsh-coremate-mobile-$(node -p "require('./package.json').version").tgz"
npm pack --pack-destination release-assets
test -f "release-assets/$archive"
test "$(find release-assets -maxdepth 1 -type f | wc -l | tr -d ' ')" = 1
tar -tzf "release-assets/$archive" > "$RUNNER_TEMP/archive-files.txt"
tar -tvzf "release-assets/$archive" > "$RUNNER_TEMP/archive-verbose.txt"
grep -Fx 'package/lib/index.js' "$RUNNER_TEMP/archive-files.txt"
grep -Fx 'package/cordis.patch.yml' "$RUNNER_TEMP/archive-files.txt"
grep -Fx 'package/assets/platform-tools/win32-x64/adb.exe' "$RUNNER_TEMP/archive-files.txt"
grep -Fx 'package/assets/platform-tools/win32-x64/AdbWinApi.dll' "$RUNNER_TEMP/archive-files.txt"
grep -Fx 'package/assets/platform-tools/win32-x64/AdbWinUsbApi.dll' "$RUNNER_TEMP/archive-files.txt"
grep -E '^-rwxr-xr-x .* package/assets/platform-tools/darwin/adb$' "$RUNNER_TEMP/archive-verbose.txt"
grep -E '^-rwxr-xr-x .* package/assets/platform-tools/linux-x64/adb$' "$RUNNER_TEMP/archive-verbose.txt"
(
cd release-assets
sha256sum "$archive" > "$archive.sha256"
)

- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: dsh-coremate-mobile-release-assets
path: deepseek-harness-plugin/release-assets/
if-no-files-found: error
retention-days: 7

publish:
needs: build
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: dsh-coremate-mobile-release-assets
path: release-assets

- name: Create or finish the public GitHub Release
shell: bash
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
run: |
version="${GITHUB_REF_NAME#dsh-coremate-mobile-v}"
archive="dsh-coremate-mobile-${version}.tgz"
checksum="${archive}.sha256"
test -f "release-assets/$archive"
test -f "release-assets/$checksum"
test "$(find release-assets -maxdepth 1 -type f | wc -l | tr -d ' ')" = 2

tag_type="$(gh api "repos/${GH_REPO}/git/ref/tags/${GITHUB_REF_NAME}" --jq .object.type)"
tag_sha="$(gh api "repos/${GH_REPO}/git/ref/tags/${GITHUB_REF_NAME}" --jq .object.sha)"
if [[ "$tag_type" == tag ]]; then
tag_sha="$(gh api "repos/${GH_REPO}/git/tags/${tag_sha}" --jq .object.sha)"
fi
[[ "$tag_sha" == "$GITHUB_SHA" ]]

if gh release view "$GITHUB_REF_NAME" >/dev/null 2>&1; then
draft="$(gh api "repos/${GH_REPO}/releases/tags/${GITHUB_REF_NAME}" --jq .draft)"
if [[ "$draft" != true ]]; then
assets="$(gh release view "$GITHUB_REF_NAME" --json assets --jq '.assets[].name' | sort)"
expected="$(printf '%s\n%s\n' "$archive" "$checksum" | sort)"
[[ "$assets" == "$expected" ]]
mkdir "$RUNNER_TEMP/published-assets"
gh release download "$GITHUB_REF_NAME" \
--pattern "$archive" \
--pattern "$checksum" \
--dir "$RUNNER_TEMP/published-assets"
cmp "release-assets/$archive" "$RUNNER_TEMP/published-assets/$archive"
cmp "release-assets/$checksum" "$RUNNER_TEMP/published-assets/$checksum"
exit 0
fi
else
notes="$RUNNER_TEMP/dsh-release-notes.md"
cat > "$notes" <<EOF
OpenGUI plugin for DeepSeek Harness v${version}.

Download both the \`.tgz\` package and its \`.sha256\` file. The recommended macOS path is the [Codex installer Skill](https://github.com/Core-Mate/OpenGUI/tree/${GITHUB_REF_NAME}/deepseek-harness-plugin/skills/opengui-coremate-install).

The plugin supports \`/opengui\`, \`@OpenGUI\`, delegated phone and browser tasks, multi-device selection, and read-only phone mirroring. It requires DeepSeek Harness \`0.1.0-rc.7\` and a model with image input and tool calling.
EOF
gh release create "$GITHUB_REF_NAME" --draft --verify-tag \
--title "dsh-coremate-mobile v${version}" \
--notes-file "$notes"
fi

gh release upload "$GITHUB_REF_NAME" \
"release-assets/$archive" \
"release-assets/$checksum" \
--clobber
assets="$(gh release view "$GITHUB_REF_NAME" --json assets --jq '.assets[].name' | sort)"
expected="$(printf '%s\n%s\n' "$archive" "$checksum" | sort)"
[[ "$assets" == "$expected" ]]
gh release edit "$GITHUB_REF_NAME" --draft=false
50 changes: 48 additions & 2 deletions README.ja-JP.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
</p>

<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="./skills/open-gui-bootstrap/SKILL.md"><img src="https://img.shields.io/badge/BOOTSTRAP-WITH_CLAUDE_OR_CODEX-ffb000?style=for-the-badge" alt="Claude または Codex でブートストラップ"></a>
<img src="https://img.shields.io/badge/SYSTEM-MULTI_ROLE_OPERATOR-1f6feb?style=for-the-badge" alt="マルチロールオペレーターシステム">
<img src="https://img.shields.io/badge/TASKS-UP_TO_12_HOURS-cf222e?style=for-the-badge" alt="最大12時間のタスク">
Expand All @@ -22,6 +23,11 @@
OpenGUI は、AI エージェントが実機上の Android アプリ UI を見て、理解し、操作できるようにします。
</p>

<p align="center">
<strong>推奨:DeepSeek HarnessでOpenGUIを直接使えます。</strong><br>
Codexに1つのプロンプトを送るだけで、検証済みプラグインのダウンロード、DSHへのインストール、DSHの起動まで進みます。バックエンド一式のデプロイは不要です。
</p>

## Demo

<p align="center">
Expand All @@ -30,9 +36,44 @@

OpenGUI は実際の Android アプリ UI を読み取り、次のステップを計画し、モバイル操作を実行して、構造化された結果を返します。

## Quick Start
## DeepSeek HarnessでOpenGUIを使う

macOSでは、固定バージョンのインストーラーSkillをCodexに実行させる方法が最短です。Node.js 22.19以降または24以降が必要で、互換性のあるDSHバージョンは自動的にインストールされます。次の内容を1つのプロンプトとして送信します:

```text
Install and run the OpenGUI installer Skill from https://github.com/Core-Mate/OpenGUI/tree/dsh-coremate-mobile-v0.1.5/deepseek-harness-plugin/skills/opengui-coremate-install for my DSH web profile. Only ask me for phone-side authorization and model credentials.
```

Skillは公開ReleaseのパッケージとチェックサムをダウンロードしてSHA-256を検証し、OpenGUIプラグインだけをインストールします。必要な場合はDSHを起動して開き、既存のプラグインと設定は保持します。DSHがすでに起動していた場合は、一度再起動するとプラグインが読み込まれます。LinuxまたはWindowsでは、[手動パッケージガイド](./deepseek-harness-plugin/README.md#1-download-the-release-package)を使用してください。

インストール後、DSHでワークスペースを追加または選択し、認証済みのAndroidスマートフォンを接続して選択してから、次を送信します:

```text
@OpenGUI Open Settings and report the Android version
```

このプラグインは、OpenGUIバックエンド一式を必要とせず、DSHにスマートフォンとブラウザの操作機能を追加します。[ユースケース](./deepseek-harness-plugin/docs/use-cases.md)を確認するか、[v0.1.5リリースパッケージ](https://github.com/Core-Mate/OpenGUI/releases/tag/dsh-coremate-mobile-v0.1.5)をダウンロードできます。

主なユースケース:

OpenGUI を最も早く試す方法は、Claude Code または Codex にブートストラップを任せることです。
- 許可されたデバイスでのUI自動操作テストと回帰テスト
- 投稿、メッセージ送信、アカウント変更の前に人が確認するソーシャルメディア管理とリード調査
- アカウント所有者とゲームのルールが自動化を認めている場合の反復的なゲームテストとゲーム内ワークフロー

GUI操作向けの現在の推奨順:

| 優先度 | モデルファミリー | ガイダンス |
|---|---|---|
| 1 | Doubao VLM | ビジュアルGUI操作の第一候補です。 |
| 2 | Qwen VLM | 実用的な代替候補ですが、一部のソーシャルメディア向けプロンプトは安全ポリシーの影響を受けやすい場合があります。 |
| 3 | OpenAIのビジョン対応モデル | 利用できますが、スクリーンショットを多用するタスクでは一般にコストが高くなります。 |
| 4 | Grokのビジョン対応モデル | 現時点では実験的な選択肢です。ツール利用と操作の安定性には、さらに検証が必要です。 |

モデルの提供状況、料金、ポリシーは、バージョンや地域によって異なります。どのプロバイダーを選ぶ場合も、画像入力とツール呼び出しの両方に対応したモデルが必要です。

## OpenGUIスタック一式を実行する

OpenGUIのバックエンドとAndroidクライアント一式を実行する場合は、Claude CodeまたはCodexにブートストラップを任せることができます。

```text
Read ./skills/open-gui-bootstrap/SKILL.md and help me run OpenGUI. Only ask me for phone-side actions.
Expand Down Expand Up @@ -146,6 +187,7 @@ OpenGUI は、明示的なオーケストレーションレイヤーを持つモ
- 実行リカバリーと失敗レポートを改善する。
- Android GUI Agent の信頼性 benchmark タスクを追加する。
- モデル設定とコスト削減プロファイルのドキュメントを拡充する。
- OpenGUIの技術スタック一式を自分で運用したくないチーム向けに、ホスト型OpenGUI Agentサービスを提供する。

## OpenGUI の使い方

Expand Down Expand Up @@ -298,6 +340,10 @@ flowchart LR

## コミュニティ / サポート

[OpenGUI Discordコミュニティ](https://discord.gg/pqHHw7XgJ3)では、GUIエージェント技術、実際のユースケース、リリース情報について話し合えます。確認済みのWeChatコミュニティへの参加方法は、準備ができ次第ここで公開します。

ホスト型OpenGUI Agentサービスの開始後、コミュニティメンバーはAgentのトライアルクレジットを申請できるようになります。提供数、申請条件、有効期間はサービス開始時に案内します。

特に有用なプロジェクトフィードバック:

- バグや機能リクエストの Issue を作成する
Expand Down
50 changes: 48 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
</p>

<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="./skills/open-gui-bootstrap/SKILL.md"><img src="https://img.shields.io/badge/BOOTSTRAP-WITH_CLAUDE_OR_CODEX-ffb000?style=for-the-badge" alt="Bootstrap with Claude or Codex"></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 All @@ -23,6 +24,11 @@
OpenGUI helps AI agents see, understand, and operate Android app interfaces on real devices.
</p>

<p align="center">
<strong>Recommended: use OpenGUI directly in DeepSeek Harness.</strong><br>
Paste one prompt into Codex. It downloads the verified plugin, installs it into DSH, and opens DSH. No full backend deployment is required.
</p>

## Demo

<p align="center">
Expand All @@ -31,9 +37,44 @@

OpenGUI reads a real Android app UI, plans the next step, takes mobile actions, and returns structured results.

## Quick Start
## Use OpenGUI in DeepSeek Harness

The shortest path on macOS is to let Codex run the pinned installer Skill. It requires Node.js 22.19+ or 24+ and installs the compatible DSH version automatically. Paste this as one prompt:

```text
Install and run the OpenGUI installer Skill from https://github.com/Core-Mate/OpenGUI/tree/dsh-coremate-mobile-v0.1.5/deepseek-harness-plugin/skills/opengui-coremate-install for my DSH web profile. Only ask me for phone-side authorization and model credentials.
```

The Skill downloads the public release package and checksum, verifies SHA-256, installs only the OpenGUI plugin, starts DSH when needed, and opens DSH. It preserves unrelated DSH plugins and settings. If DSH was already running, restart it once to load the plugin. For Linux or Windows, use the [manual package guide](./deepseek-harness-plugin/README.md#1-download-the-release-package).

After installation, add or select a DSH workspace, connect and select an authorized Android phone, then send:

```text
@OpenGUI Open Settings and report the Android version
```

The plugin adds phone and browser operation to DSH without requiring the full OpenGUI backend stack. See more [use cases](./deepseek-harness-plugin/docs/use-cases.md) or download the [v0.1.5 release package](https://github.com/Core-Mate/OpenGUI/releases/tag/dsh-coremate-mobile-v0.1.5).

Good fits include:

The fastest way to try OpenGUI is to let Claude Code or Codex bootstrap it for you.
- automated UI operation and regression testing on authorized devices
- social media management and lead research, with human confirmation before publishing, messaging, or account changes
- repetitive game testing and in-game workflows where the account owner and game rules permit automation

For GUI execution, our current recommendation order is:

| Priority | Model family | Guidance |
|---|---|---|
| 1 | Doubao VLM | Recommended first for visual GUI execution. |
| 2 | Qwen VLM | A practical alternative, but some social media prompts may be more sensitive to model safety policies. |
| 3 | OpenAI vision-capable models | Capable, but generally the higher-cost option for screenshot-heavy tasks. |
| 4 | Grok vision-capable models | Experimental for this workflow; tool use and action reliability still need more validation. |

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.

## Run the Full OpenGUI Stack

To run the full OpenGUI backend and Android client, let Claude Code or Codex bootstrap it for you.

```text
Read ./skills/open-gui-bootstrap/SKILL.md and help me run OpenGUI. Only ask me for phone-side actions.
Expand Down Expand Up @@ -149,6 +190,7 @@ The source code currently exposes these pieces:
- Improve execution recovery and failure reporting.
- Add benchmark tasks for Android GUI agent reliability.
- Expand docs for model configuration and cost-saving profiles.
- Launch a hosted OpenGUI Agent service for teams that want GUI operation without running the full stack themselves.

## How to Use OpenGUI

Expand Down Expand Up @@ -300,6 +342,10 @@ flowchart LR

## Community / Support

Join the [OpenGUI Discord community](https://discord.gg/pqHHw7XgJ3) to discuss GUI agent development, share real use cases, and get release updates. A verified WeChat community entry will be published here when it is ready.

Community members will also be able to apply for trial Agent credits when the hosted OpenGUI Agent service opens. Availability, eligibility, and validity will be announced with the service.

The most useful project feedback is:

- open issues for bugs and feature requests
Expand Down
Loading
Loading