screenshot-plat — リモート截屏と多モーダル認識プラットフォーム

Tool

概要

screenshot-platは、画面キャプチャ(screenshot)とサーバー側での多モーダル認識(screensot-server)を分離したGo製の小型プラットフォームです。クライアントは主ディスプレイをPNGで取得し、4バイトの大端長さプレフィックス付きTCPフレームで送信します。サーバーはTCPで受け取った画像をHTTP上で閲覧可能にし、「画像のみ更新(認識を再実行しない)」と「画像更新+認識実行」の2モードを提供。認識はSiliconFlowのOpenAI互換インターフェース経由で複数モデルを並列呼び出せ、テンプレートはバイナリ内蔵の既定版を持ち外部テンプレートを優先する設計です(約300字)。

GitHub

リポジトリの統計情報

  • スター数: 5
  • フォーク数: 0
  • ウォッチャー数: 5
  • コミット数: 2
  • ファイル数: 5
  • メインの言語: Go

主な特徴

  • クライアント/サーバー分離:キャプチャと認識を明確に分け、運用の柔軟性を確保
  • 軽量かつシンプルなプロトコル:4バイト大端長さプレフィックスのTCPフレームでPNGを送信
  • 多モデル対応:SiliconFlowのOpenAI互換APIを使い、設定でモデルを切替・並列実行
  • 組み込みテンプレート:単一バイナリで動作、外部テンプレートがあればそれを優先

技術的なポイント

screenshot-platは実装レイヤで「シンプルさ」と「拡張性」を両立しています。クライアントはOSの画面キャプチャAPIで主ディスプレイをPNGにエンコードし、TCPで送る際に4バイトの大端長さプレフィックスを付与するという極めて軽量なフレーム形式を採用しています。サーバー側はそのフレームを受信してPNGを取り出し、HTTPインターフェースでブラウザに配信します。認識ワークフローは二つの運用モード(画像のみ更新/画像+認識)を持ち、後者では複数の多モーダルモデルを並列に呼び出して比較・統合表示できます。モデル呼び出しはSiliconFlowのOpenAI互換インターフェースを利用するため、構成ファイルでモデル選択やエンドポイントを切り替えられます。テンプレートはバイナリに内包する方式(Goの埋め込み機能を想定)で、外部テンプレートが存在すればそれを優先して使うためデプロイ時のカスタマイズが容易です。実運用で気をつけたい点としては、TCPでのプレーン送信が前提なので認証・暗号化(TLS)や接続管理、断線時の再送・バッファ制御、帯域対策(差分送信や圧縮)が追加検討候補になります。また、複数クライアントの同時接続や負荷時のモデル呼び出し制御(キュー、レート制限)も運用設計で重要です。(約700字)

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file
  • AGENTS.md: file
  • README.md: file
  • screenshot: dir
  • screensot-server: dir

まとめ

シンプル設計で実運用に向けた拡張がしやすいスクリーンショット+認識プラットフォーム。

リポジトリ情報:

READMEの抜粋: screenshot-plat

一套基于 Go 的“远程截屏 + 多模态识别”双模块项目:

  • 客户端(screenshot):截取主显示器屏幕,按长度前缀 TCP 协议上报 PNG 数据
  • 服务端(screensot-server):TCP 收图 + HTTP 页面;支持“仅截屏刷新”和“截屏并识别”,并内置模板,单个二进制即可运行

功能特性

  • 截屏与识别分离:
    • 仅截屏刷新:不触发识别,保留上一次识别结果(只更新图片)
    • 截屏并识别:并行调用多模态模型,展示题目与答案
  • 多模型识别:通过 SiliconFlow OpenAI 兼容接口(按配置文件选择模型)
  • 模板内置:二进制内置默认页面模板;如存在外部模板则优先使用
  • 简洁协议:4 字节大端长度前缀帧,JSON 传输

目录结构

.
├─ README.md                    # 本文件
├─ AGENTS.md                    # 贡献/风格与开发指南
├─ screenshot/                  # ...