songjongdevsecops/dsh-olhos ↗★ 0
dsh-olhos
DeepSeek Harness plugin that gives the agent eyes: capture a screen, measure drift, and check written expectations against the image with an embedding score. 适合需要让Agent通过截图和向量评分来验证页面视觉呈现的用户。
설치
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:songjongdevsecops/dsh-olhosUsage
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 key | Default | Meaning |
|---|---|---|
capturas | temporarios/olhos inside the package | where 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 |
limiar | 0.7344 | cosine threshold for written expectations. Calibrated, not portable |
navegador | casa | casa attaches to Chrome on CDP 9222; proprio launches a disposable headless browser |
| Environment variable | Default | Meaning |
|---|---|---|
OLHOS_GEMMA_RAIZ | ~/workspaces/tools/embeddinggemma | engine checkout used by olhos.py |
OLHOS_CDP | http://127.0.0.1:9222 | CDP endpoint |
OLHOS_CHROME | google-chrome | browser binary for navegador: proprio |
OLHOS_PERFIL | ` | |
| /temporarios/-olhos/chrome-perfil` | profile directory for the disposable browser | |
OLHOS_LIMIAR | 0.7344 | default when the engine scripts are called directly |
OLHOS_LARGURA, OLHOS_ALTURA | 1440, 900 | capture viewport |
Profile patch example (~/.dsh/profiles/web/cordis.patch.yml):
- id: olhos
config:
capturas: '/home/you/.dsh/olhos'
limiar: 0.7344
navegador: casa