开发者文档

本文档面向想要了解 OpenWatcher 内部架构、进行二次开发或提交 PR 的开发者。

项目概览

OpenWatcher 是一个开源的 agent 状态监工工具,由三个核心模块组成:

技术栈

模块语言框架 / 工具
后端Go 1.25net/http, modernc.org/sqlite
桌面应用Go + JSWails v2, Vite 5
手表应用Kotlin 2.0Jetpack Compose, Wear Compose, OkHttp

目录结构

路径说明
cmd/openwatcher/后端 CLI 入口
internal/后端核心库(auth、config、pairing、quota、sessions 等)
desktop-app/桌面应用(Wails v2 项目)
watch-app/手表应用(Android / Wear OS)
scripts/构建、打包、发布脚本
site/官网站点

环境搭建

本地开发

所需的开发工具:

启动本地后端服务:

scripts/start-local.sh

默认监听 127.0.0.1:18787,可通过环境变量自定义:

变量说明默认值
OPENWATCHER_LISTEN监听地址127.0.0.1:18787
OPENWATCHER_CONFIG配置文件路径~/.openwatcher/config.json
OPENWATCHER_PAIRING_SLOT配对槽位beta
OPENWATCHER_NO_AUTH禁用认证(仅调试)未设置

启动桌面应用开发模式:

cd desktop-app
wails dev

构建手表端(调试):

cd watch-app
./gradlew assembleDebug \
  -PopenWatcherDebugBaseUrl=http://10.0.2.2:18787

运行测试:

go test ./...
提示:后端健康检查可通过 curl http://127.0.0.1:18787/healthz 验证服务是否正常运行。

构建与打包

脚本用途
package-desktop-release.sh打包桌面应用(macOS: dmg/zip, Windows: exe/zip)
package-watch-release.sh构建手表 release APK,自动验签并生成元数据
package-backend-release.sh后端 sidecar 二进制打包
prepare-runtime-assets.sh准备运行时资源和 manifest
check-release-artifacts.sh发布前产物检查(敏感文件、debug APK 等)

桌面应用打包示例:

scripts/package-desktop-release.sh --platform darwin-arm64

手表 release 构建:

RELEASE_SUMMARY="版本说明" scripts/package-watch-release.sh "beta-0.22.0"
注意:手表 release 构建要求工作区无未提交改动,否则脚本会拒绝执行。

参与贡献

欢迎通过 GitHub Issue 和 Pull Request 参与贡献。

开发流程

  1. 在 GitHub 上 Fork 仓库
  2. 克隆到本地:git clone git@github.com:你的用户名/codex-watcher.git
  3. 创建特性分支:git checkout -b feature/你的特性名
  4. 本地开发并测试
  5. 提交并推送:git push origin feature/你的特性名
  6. 在 GitHub 上创建 Pull Request

API 参考

后端默认监听 127.0.0.1:18787,提供以下主要接口:

接口说明
GET /healthz健康检查
GET /api/sessions获取当前会话列表
GET /api/quota获取配额信息
POST /api/pair发起手表配对
GET /api/config获取运行时配置
更多 API 细节请参考 internal/server/ 源码中的路由定义。