Skip to main content

Thin local CLI relay for the prove-graph backend — spawns codex / claude / deepseek subprocesses on user machines and streams stdout/stderr back over WebSocket.

Project description

pgworker — 用户机器的本地守护进程

它是什么

一个跑在用户自己电脑上的 asyncio 守护进程,作为 prove-graph 后端 的远程 subprocess 中继。后端通过 WebSocket 发 stage.request (一段渲染好的 prompt + 调哪个 CLI 的指令),pgworker 起本机 codex / claude / deepseek 子进程,把 stdout 流式回传。

具体职责:

  1. 维持一条到 web backend 的长 WebSocket 连接(应用层 ping/pong)
  2. stage.request,在 ~/.pgworker/scratch/<stage_run_id>/ 下喂 stage.request.files、起 subprocess、流回 stdout/stderr
  3. stage.cancel,SIGTERM/SIGKILL 当前子进程
  4. 持有 problem 状态、 import prove_graph不知道 当前 stage 是 analyze / attempt / verify、graph 长什么样

也就是说:它是 backend 在用户机器上的一只胳膊,仅此而已。 graph、prompt、orchestration、不变量都在服务端,不会进入用户机器。

包独立性

pgworker 是个独立的 PyPI 包(pgworker/pyproject.toml),依赖只有:

httpx>=0.27
websockets>=12
pydantic>=2.7

依赖 prove-graph 框架包。用户安装:

pip install "pgworker @ git+https://github.com/ustc-ai4m/prove-graph.git#subdirectory=pgworker"

需要 Python 3.10+。装完 pgworker 命令在 PATH 上。装好的 pgworker 跑 python -c "import prove_graph" 会报 ModuleNotFoundError——这是 有意的:framework 代码不该出现在用户机器上。

协议版本

当前 pgworker 上报 protocol_version: 2(thin-worker 协议)。 服务端只接受 protocol_version >= 2 的连接。pgworker 与服务端的协议 规格在项目内部文档中维护;公开 PyPI 用户只需要 pgworker pair + pgworker run 两条命令。

注:上游 prove-graph 项目本身是私有仓库;pgworker 是它唯一公开 的脚手架包。装这个包不会让你访问到 prove-graph 框架代码。

为什么单列一个顶级目录

不是框架库,所以不该在 prove_graph/ 包里。它不是 web 服务,所以也不该在 backend/ 里。它是第三类东西——"用户机器侧 的执行入口 + web 客户端",与 backend/ 是同级 peer 部署。

它有寿命

本目录是过渡期产物。本项目的长期目标是 PydanticAI agent 在云端 全面接管,届时用户机器不再需要跑任何东西,所有 round 都在网页 backend 自己进程里完成。

当下面这两个条件同时满足时,整个 pgworker/ 目录可以一次性删除:

  1. PydanticAI agent 在网页端各项任务上稳定性 / 质量 ≥ 现行的 Claude Code / Codex
  2. 用户群体里再没有强烈的"我要用本机 claude/codex"诉求

届时清理步骤:

git rm -rf pgworker/
# backend/app/routers/pgworker.py 删除
# backend/app/services/{worker_registry, stage_relay}.py 删除
# prove_graph/agents/remote_cli.py + worker_protocol.py 删除
# ModelConfig.kind 移除 local-* 三个 kind

这是几十行 diff,没有遗留 cruft——这正是把它顶级单列的目的。

使用

pip install "pgworker @ git+https://github.com/ustc-ai4m/prove-graph.git#subdirectory=pgworker"
pgworker pair <pair-code> --server <网页端 URL>   # 一次性配对(在网页 Settings → Local devices 拿配对码)
pgworker run                                     # 前台跑守护进程;想后台跑请套 systemd / launchd / nohup / screen / tmux

诊断:

pgworker doctor          # 看本机 CLI 版本、token 状态
pgworker capabilities    # 看 capabilities JSON
pgworker revoke          # 删除本机 token

日志在 ~/.pgworker/run.log(5×1MB 轮转)。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pgworker-0.1.0.tar.gz (12.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pgworker-0.1.0-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file pgworker-0.1.0.tar.gz.

File metadata

  • Download URL: pgworker-0.1.0.tar.gz
  • Upload date:
  • Size: 12.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for pgworker-0.1.0.tar.gz
Algorithm Hash digest
SHA256 03ef8d6d30338251629bc89c2102f7ef34e2e853aa008c47513a13435b46229e
MD5 5c0c9a919397ef9f6377be36d5f70f2a
BLAKE2b-256 3ecb470e0574dc42f0254f30bde32a20665113e68ee2f07a92a088b0fc916b75

See more details on using hashes here.

File details

Details for the file pgworker-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: pgworker-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for pgworker-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 76358108a23240a0a7e63d9c247f972c3e6980ea9c6bebd51358ca26365a83a0
MD5 34aead29c9aac953d2369ffe24bc7e0d
BLAKE2b-256 2393a109a95cc40f346ea26faebd5ffa33b6a5cd82252ece89ba344500b284ab

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page