Token导航 LogoToken导航

Agent Skill · 研究检索

surfagent-perception(表面活性剂感知)

surfagent-perception 用于查找、检索和筛选相关信息,适合在 OpenClaw 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

surfagent-perception 是研究检索类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为调用外部服务;许可证为 MIT-0,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 29,506。

总安装 3,041周安装 128GitHub Stars 公开资料未说明下载 1,065核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
1.0.0

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:surfagent-perception(表面活性剂感知)
来源仓库:https://github.com/agentossoftware/surfagent-perception
安装命令:
openclaw skills install surfagent-perception
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install surfagent-perception

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

网页的代理视觉 — 场景摘要、注意力排名元素、带注释的屏幕截图以及通过 SurfAgent 感知引擎进行的状态差异。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install surfagent-perception;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要调用外部服务,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

surfagent-perception 怎么安装?

在终端执行 openclaw skills install surfagent-perception。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

surfagent-perception 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

surfagent-perception 需要什么权限?

权限级别是调用外部服务。该 Skill 可能调用第三方服务、云服务或外部模型 API,使用前需要确认账号、额度、数据发送范围和服务条款。

surfagent-perception 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

surfagent-perception 用的人多吗?

公开数据是累计安装 3,041 次,近一周安装 128 次,下载 1,065 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

surfagent-perception 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。
  • 需要许可证清楚、并且有第三方扫描结果的团队项目。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
surfagent-perception

表面活性剂感知 · 本页

3,041—调用外部服务MIT-0通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

name
surfagent-perception
description
Agent vision for web pages — scene summaries, attention-ranked elements, annotated screenshots, and state diffing via SurfAgent's perception engine.
version
1.0.0
metadata
openclaw
requires
bins
homepage
https://surfagent.app
emoji
👁️

SurfAgent Perception — Agent Vision Skill

How to see, understand, and verify web pages through SurfAgent's perception engine.

What This Is

SurfAgent Perception gives you human-like page understanding in ~200 tokens instead of parsing a 50K-token DOM. Three MCP tools, one workflow loop.

Without perception: You get a raw DOM dump or a dumb screenshot. You have to figure out what's on the page yourself.

With perception: You get a scene summary, ranked interactive elements, spatial clusters, viewport state, and optionally an annotated screenshot with numbered bounding boxes + a legend mapping each number to a ref.

Requires: SurfAgent daemon running (port 7201) with a managed Chrome instance (port 9222).


The Three Tools

surf_perceive — Your Primary Eyes

The main tool. Call this to understand what's on screen.

Parameters:

ParamTypeDefaultDescription
tabIdstringactive tabTarget a specific tab
sincestring—State token from a previous call. Includes delta of what changed
maxAnnotationsnumber15How many elements to rank (1-50)
annotatebooleanfalseInclude annotated screenshot with numbered bounding boxes

Returns:

  • Scene summary — one-liner + top 5 ranked actions + state notes (blockers, modals, forms, auth, scroll %)
  • Viewport info — scroll position, fold split, document dimensions
  • Top elements — attention-ranked, with refs for clicking/typing
  • Clusters — semantic groups of related elements (nav cluster, form cluster, etc.)
  • State token — pass as since next time to get delta
  • Annotated screenshot + legend (if annotate: true)

When to use: Start of any page interaction. After navigation. When you need to understand the page before acting.


surf_annotate — Quick Visual Reference

Lighter than surf_perceive. Just the annotated screenshot + legend, no scene analysis.

Parameters:

ParamTypeDefaultDescription
tabIdstringactive tabTarget a specific tab
maxAnnotationsnumber15How many elements to annotate (1-50)

Returns:

  • Annotated screenshot (base64 PNG) with numbered colored bounding boxes
  • Legend mapping each number to element ref, role, location, and status

When to use: When you already know the page context but need to identify specific elements visually. Good for "which button do I click?" scenarios.


surf_scene_diff — What Changed?

Compare current state to a previous state token. Answers: "did my action work?"

Parameters:

ParamTypeRequiredDescription
sincestring✅State token from a previous surf_perceive call
tabIdstring—Target a specific tab

Returns:

  • Current one-liner scene description
  • Delta: new elements, removed elements, value changes, page type changes, auth state changes
  • New state token for the next diff

When to use: After clicking, typing, submitting, or scrolling. Verifies your action had the intended effect.


The Core Loop

This is the pattern for any page interaction:

1. PERCEIVE  →  Understand what's on screen
2. ACT       →  Click, type, scroll, fill
3. DIFF      →  Verify the action worked
4. REPEAT    →  Back to perceive if more actions needed

Example: Login Flow

Step 1: surf_perceive()
  → "[GitHub · login · logged_out] Login form on GitHub"
  → Top actions: [1] Username input, [2] Password input, [3] Sign in button
  → State token: st_abc_1

Step 2: Type username into element [1], type password into [2], click [3]

Step 3: surf_scene_diff(since: "st_abc_1")
  → "auth state changed, page type changed"
  → "[GitHub · dashboard · logged_in] Dashboard — 4 sections"
  → ✅ Login worked

Step 4: surf_perceive() to explore the dashboard

Example: Verify a Click

Step 1: surf_perceive() → get state token
Step 2: Click the "Submit" button
Step 3: surf_scene_diff(since: token)
  → "1 element removed, modal appeared"
  → "📋 Modal: Order Confirmed (2 actions)"
  → ✅ Submission worked

Example: Monitor a Value

Step 1: surf_perceive() → note BTC price, get token
Step 2: Wait 30 seconds
Step 3: surf_scene_diff(since: token)
  → "2 elements changed: price_display $65,100→$65,234"

Reading the Scene Summary

The scene summary has a consistent format:

[Domain · pageType · authState] Context description

Top actions:
1. Buy Button (button, center-right)
2. Price Input (textbox, top-center)
3. Symbol Search (textbox, top-left)

State notes:
⚠ Cookie banner: Accept cookies to continue (auto-dismissable)
📝 Form: 2/5 fields, submit: ref_submit_btn
📜 Scrolled 45%
🔒 Not logged in

Δ 2 elements changed: price $65,100→$65,234, volume +12.3K

One-Liner Format

[Domain · pageType · authState] Description

Page types: login, signup, feed, detail, dashboard, chat, search_results, checkout, compose, settings, profile, docs, table, media, error_page, captcha, blank, other

Auth states: logged_in, logged_out, session_expired, unknown

State Notes (what to look for)

SymbolMeaning
⚠Blocker detected (cookie banner, captcha, auth wall). Check if auto-dismissable
📋Modal is open — has title and action count
📝Active form — shows filled/total fields and submit ref
🔒Not logged in or session expired
📜Page is scrolled — shows percentage

Delta Format

When you pass a since token, the delta section tells you exactly what changed:

  • URL/title/page type/auth state changes
  • Elements changed (with from→to values)
  • New elements appeared (with role)
  • Elements removed
  • Regions updated

Annotated Screenshots

When you call surf_perceive(annotate: true) or surf_annotate(), you get:

  1. A screenshot with numbered colored bounding boxes on interactive elements
  2. A legend mapping each number to structured info:
[1] Sign In (button, center) — clickable
[2] Email: user@email.com (textbox, top-center) — editable
[3] Remember me (checkbox, center-left) — unchecked

Color Coding

  • 🟢 Green: buttons, submit actions
  • 🔵 Blue: text inputs, textareas, selects
  • 🟣 Purple: links, navigation
  • 🟡 Yellow: checkboxes, radio buttons, toggles
  • ⚪ Gray: headings, labels, static content

Using Annotations for Action

The legend gives you element refs. Use those refs with SurfAgent's click/type/fill tools to interact with the exact elements you identified visually.


Element Ranking: How Attention Scoring Works

Not all elements are equal. The perception engine scores elements across 7 dimensions:

  1. Centrality — Distance from viewport center (center elements rank higher)
  2. Context relevance — Page-type-aware boosting (login → password/submit boosted, feed → content/compose boosted, dashboard → metrics/actions boosted, checkout → payment/order boosted)
  3. Role score — Buttons > inputs > links > headings > images
  4. Visual weight — Size, font weight, contrast against background
  5. Proximity to focus — Elements near the viewport center or active form
  6. Visibility — Above-fold elements rank higher than below-fold
  7. Action density — Elements in clusters of interactive elements get boosted

Final score = weighted combination → top N returned.


Clusters

Elements are spatially grouped into clusters (50px proximity threshold):

Cluster: "Navigation" (top-left)
  - Home link, Dashboard link, Settings link

Cluster: "Login Form" (center)
  - Email input, Password input, Sign In button, Forgot Password link

Use clusters to understand the page layout at a glance. Each cluster has:

  • Label (auto-inferred from content)
  • Bounding rect
  • Primary action (the highest-scored interactive element in the cluster)
  • Member elements

Performance

  • ~200 tokens per scene summary (vs ~50K for raw DOM)
  • <200ms per perceive call (no LLM involved — all heuristic)
  • State tokens are lightweight ring buffers (5 per tab, 20 tabs max)
  • Annotated screenshots add ~100-200ms for Canvas overlay

Anti-Patterns

❌ Don't call surf_perceive AND surf_page_state on the same page — perceive already includes everything page_state gives you, plus attention ranking and scene summary. It's redundant.

❌ Don't call surf_annotate unless you actually need the screenshot — the image is large (base64 PNG). If you just need to know what's on the page, use surf_perceive without annotate: true.

❌ Don't ignore state tokens — always capture them. They're your "save point" for diffing later.

❌ Don't perceive after every micro-action — if you're typing into a field, you don't need to perceive after each keystroke. Perceive before the interaction, act, then diff after.

❌ Don't assume element refs are permanent — refs are content-hashed and stable across re-rankings of the same page, but they change when the page content changes. Re-perceive after navigation.


Decision Tree: Which Tool Do I Use?

Need to understand the page?           → surf_perceive()
Need to verify an action worked?       → surf_scene_diff(since: your_token)
Need to visually identify an element?  → surf_annotate()
Need both understanding AND visual?    → surf_perceive(annotate: true)
Just need basic page info?             → surf_page_state() (lighter, no scoring)

Integration with Other SurfAgent Tools

After perceive...Use this to act
Identified a button to click/browser/click with element ref or coordinates
Found a form to fill/browser/fill with selector from element data
Detected a blocker/browser/resolve-blocker to auto-dismiss
Need to scroll for more content/browser/scroll then surf_scene_diff
Want to navigate somewhere/browser/navigate then surf_perceive
Detected a captcha/browser/captcha/solve

Daemon HTTP Endpoints (Direct API)

If calling the daemon directly instead of through MCP:

POST /browser/perceive

{
  "tabId": "optional",
  "since": "optional state token",
  "maxAnnotations": 15,
  "annotate": false
}

Returns: { ok, scene, viewport, topElements, clusters, stateToken, annotatedScreenshot?, legend? }

POST /browser/annotate

{
  "tabId": "optional",
  "maxAnnotations": 15
}

Returns: { ok, annotatedScreenshot, legend }

Both endpoints require Bearer auth token (~/.surfagent/daemon-token.txt).

平台分布

OpenClaw

95.55%
按下载量换算1,018

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

通过

权限和风险

调用外部服务

该 Skill 可能调用第三方服务、云服务或外部模型 API,使用前需要确认账号、额度、数据发送范围和服务条款。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills