songjongdevsecops/dsh-olhos ↗★ 0

dsh-olhos

屏幕截图捕获与视觉期望比对工具 适合需要让Agent通过截图和向量评分来验证页面视觉呈现的用户。

套件
dsh-olhos
相容性
待驗證
版本
0.1.1
授權
MIT
最近更新
2026年10月18日

安裝

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:songjongdevsecops/dsh-olhos

Usage

Ask the agent to check something visible. It calls the tool with a target and one expectation per line:

Use olhos_verificar on http://127.0.0.1:3080/ with the expectations
"the panel shows three session cards" and "the error message is visible".

The tool answers with a score per expectation and a verdict:

limiar 0.7344
| expectation                         | score  | verdict   |
| the panel shows three session cards | 0.7225 | not found |
| the error message is visible        | 0.6254 | not found |
0/2 confirmed. Lowest score 0.6254. Capture: temporarios/olhos/.../20261013-163453.png

The threshold is strict: a score must be greater than the threshold to confirm. Scores below it are reported as not found, which is the deliberate precision-over-recall bias described under Limits.

In the chat:

/olhos http://127.0.0.1:3080/                       # capture and drift against the last reference
/olhos http://127.0.0.1:3080/ "three cards" "error"  # also test these expectations
/olhos marcar http://127.0.0.1:3080/                # capture now and store it as the good reference
/olhos ultima http://127.0.0.1:3080/                # drift only, no new capture
/olhos achar "login screen with an error"           # find an old capture by meaning
/olhos ajuda

Expectations should be short, concrete and visible. "The panel shows three session cards" works; "the layout is nice" does not.

A threshold passed to the tool (limiar) is stored for that target in limiar.json and used on the following calls.

Configuration

Every path is configurable and the defaults derive from your home directory, so nothing is tied to a specific machine. Override by environment variable or by the config of the olhos line in your profile patch. A patch replaces the whole config of the line, so restate every key you want to keep.

Config keyDefaultMeaning
capturastemporarios/olhos inside the packagewhere captures, references and per-target limiar.json live. A relative path resolves inside the package; use an absolute path to keep captures across plugin updates
limiar0.7344cosine threshold for written expectations. Calibrated, not portable
navegadorcasacasa attaches to Chrome on CDP 9222; proprio launches a disposable headless browser
Environment variableDefaultMeaning
OLHOS_GEMMA_RAIZ~/workspaces/tools/embeddinggemmaengine checkout used by olhos.py
OLHOS_CDPhttp://127.0.0.1:9222CDP endpoint
OLHOS_CHROMEgoogle-chromebrowser binary for navegador: proprio
OLHOS_PERFIL`
/temporarios/-olhos/chrome-perfil`profile directory for the disposable browser
OLHOS_LIMIAR0.7344default when the engine scripts are called directly
OLHOS_LARGURA, OLHOS_ALTURA1440, 900capture viewport

Profile patch example (~/.dsh/profiles/web/cordis.patch.yml):

- id: olhos
  config:
    capturas: '/home/you/.dsh/olhos'
    limiar: 0.7344
    navegador: casa