mcpField
W
watch-skill

watch-skill

本地服务
github.com媒体与设计5337 周前更新

关于 watch-skill

Watch Skill 将视频、音频和屏幕活动编入索引并生成带时间戳的证据,另以独立验证契约检查文件、SQL 结果和 DOM 状态等输出。它面向需要搜索媒体内容或独立核验 Agent 工作的团队,也可通过命令行或 REST API 使用。

主要功能

  1. 01为媒体建立带时间戳的索引
  2. 02搜索转录文本、帧和 OCR
  3. 03在回答中引用具体时刻
  4. 04验证文件、JSON、SQL、HTTP 和 DOM
  5. 05提供确定性的验证结论
  6. 06通过 MCP、命令行或 REST 使用

适用场景

  1. 01询问录制内容
  2. 02跨已索引视频查找片段
  3. 03检查 Agent 的更改是否生效
  4. 04查看工具运行的证据

MCP 相关

`watch-skill` 包含一个提供 39 个工具的 stdio MCP 服务。MCP 客户端可借此使用媒体感知和验证能力。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"oxbshw-watch-skill": {
"command": "uvx",
"args": [
"watch-skill"
]
}
}
}
启动命令uvx watch-skill

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiwatch-skill1.4.3

工具

39

收录的工具列表 · 更新于 2 周前

参数类型必填说明
endany否
startany否
budgetany否
sourcestring是
questionany否
backgroundboolean否

详细介绍

Watch Skill:一幅像素艺术场景,Watch Skill 吉祥物正注视着屏幕。上方的胶片条展示了四个阶段——观看来源,将其作为 OCR 和转录内容保存,解析带时间戳的证据,然后运行 THE LOOP 进行评估和修正。屏幕上显示着视频库、带时间戳的证据列表,以及一个以 VERIFIED 结束的捕获—评估—修正—验证循环。

Watch Skill · DeepWatch

赋予 AI Agent 视觉、听觉和可验证的结果。

Watch Skill 将视频、音频和屏幕活动转换为可搜索的带时间戳证据,并以确定性契约而非模型的主观判断回答 这真的有效吗? 将它添加到你目前通过 MCP 使用的 Agent 中。

DeepWatch 是一个开箱即用的 Agent 工作区,基于官方 DeepSeek Harness 构建,已集成 Watch Skill。工具调用会留下可打开的凭证,结果也能由生成它的 Agent 以外的程序进行检查。

Python · PyPI

watch-skill on PyPI PyPI downloads Python versions

Node · npm

@deepwatch/cli @deepwatch/dsh-bundle npm downloads Node DeepWatch release

质量门禁与目录

CI Workspace Install Agent Skills MCP License

开始使用 · 使用方法 · THE LOOP · 软件包 · 架构 · 文档 · 社区


两种能力,可独立使用

感知。 视频、音频和屏幕活动会转换为帧、转录文本和 OCR 文本,每项内容都带有绝对时间戳。只需为来源建立一次索引,就能在保留期间持续查询;每个答案都会引用一个可打开的具体时刻。

验证。 冻结的契约——文件摘要、JSON 值、SQL 结果、HTTP 响应、DOM 状态——由独立进程评估。判定结果为 VERIFIED、FAILED、UNVERIFIED 或 INCONCLUSIVE,并非由大模型给出。

两者单独使用都很实用,有意将它们拆分开来。

### Watch Skill — 引擎

为录制内容建立一次索引,即可随时向它提问。答案会引用可打开的时间戳。 验证契约会检查文件摘要、JSON 值、SQL 结果、HTTP 响应和 DOM 状态,并报告 通过、 失败、未验证 或 无法确定——给出四种答案,因为其中三种并不等同于「否」。

任何 Agent 都能使用:MCP、CLI 或 REST API。

README 配图 DeepWatch — 工作区

基于官方 DeepSeek Harness 构建,并集成了 Watch Skill,只需一条命令即可安装。你将获得一个既能观察又能验证的 Agent,无需自己连接任何组件。

每次工具调用都会留下回执,注明它操作了什么。工具声明的每条路径都会依据同一个工作区边界进行检查,因此工具无法悄悄写入边界之外的位置。结果会附带可查看的 Core 判定,Library 则会在重启后保留这些结果。

在浏览器中运行。Compare 会并排比较同一契约的两次运行,并显示它们的判定有哪些不同。

Watch Skill 负责观察和验证。DeepWatch 则是内置 Watch Skill 的工作区。


从这里开始

三种入口。选择最符合你的那一行。

你已有你想要前往
已有 Agent(Claude Code、Cursor、Codex、任意 MCP 客户端)为它配上视觉、听觉和验证能力Watch Skill
还没有整个工作区,包括 AgentDeepWatch
已在运行的 DeepSeek Harness将 Watch 添加到其中,保留现有配置@deepwatch/dsh-bundle
1. 将 Watch Skill 添加到你已在使用的 Agent
pip install 'watch-skill[standard]'   # frames, retrieval and the MCP server
watch-skill doctor                    # checks, and repairs what it can
watch-skill watch <video-url-or-file>
watch-skill ask <id> "what changed at 3:12?"

请认真对待额外组件。 单独运行 pip install watch-skill 只会安装 CLI、验证器和 Bridge,无法提取帧:watch 遇到的第一个视频就会因 perceive.missing_dependency 而停止。[standard] 包含帧提取、 检索和 MCP;添加 [ocr] 以读取屏幕上的文字,添加 [whisper] 以便在源内容没有字幕时进行本地转录,添加 [loop] 以支持浏览器,或者选择 [all]。watch-skill doctor 会针对缺少的组件给出确切的命令。

将它接入任何 MCP 客户端——[standard] 已包含服务端:

watch-skill serve              # stdio MCP server, 39 tools

或者一次性将技能安装到 25+ 个 Agent 中:

npx skills add oxbshw/watch-skill -g
### 2. 整个工作区

前置条件。 Node ^22.19 || >=24,这是 CLI 的 engines 声明所要求的版本。Python 3.11、3.12 或 3.13——这是 CI 运行和分类器列出的版本;只有在需要感知和验证引擎时才需要安装。DeepWatch 无需 Python 即可启动,并会将所有 Watch 功能报告为不可用,直到 Python 安装就绪。

# 1. the engine that sees and proves (optional, but it is the point)
pip install 'watch-skill[standard,ocr]'

# 2. the workspace
npm install -g @deepwatch/cli
deepwatch doctor                     # what is present, what is missing, how to fix it
deepwatch setup                      # builds the runtime; shows the download and asks first

# 3. a workspace directory to work in
mkdir my-project
deepwatch web --workspace ./my-project

deepwatch web 会打印本地 URL 并在浏览器中打开工作区。首先看到的是:

DeepWatch 首次运行提示:标题为“See what happened. Prove what worked.”;一行文字说明本地证据工作区已就绪,本地功能无需提供商或网络;安装状态面板显示“Ready now 2 — Watch Core and Agent Model passed their runtime gates”,旁边是“Needs setup 10 — saved is never presented as tested”;一条“Private by default”说明,以及 View diagnostics、Explore offline 和 Finish setup 操作。

这里显示两个数字,而不是一个百分比,因为“已安装”和“已验证”是两种不同的事实,用单一百分比会模糊两者的区别。已就绪统计通过运行时检查的功能。需要设置统计尚未配置或尚未测试的功能——已保存的配置绝不会被说成已测试。无需提供商即可打开工作区:Library、索引和 Watch 工具都可在本地运行。

无需全局安装,也可以通过 npx 运行同一个包:

npx --yes @deepwatch/cli setup
mkdir my-project
npx --yes @deepwatch/cli web --workspace ./my-project

npx 是运行 @deepwatch/cli 的一种方式,并非另一个包——npm 上没有未限定作用域的 deepwatch。

**setup 会下载什么。**固定版本的 DeepSeek Harness、其确切的必需 peer 依赖,以及与此版本号相同的 DeepWatch 包,都会下载到 DeepWatch 主目录下的运行时中。它会打印注册表、版本和目标位置,并在等待你同意后继续;--yes 表示预先同意,--offline 则会直接拒绝。除你自行安装的 CLI 外,不会全局安装任何内容。--artifacts <dir> 会从经过验证的本地 tarball 中获取 DeepWatch 包,并由本产品自行校验哈希,而不是从注册表获取;这适用于构建检出版本。不过,这并不会让安装变成离线安装:在这种模式下,固定版本的 Harness 及其生成的 peer 依赖闭包也会从 npm 获取,setup 打印的计划会在开始获取前说明这一点。

**启动不需要模型提供商。**工作区可以启动,Library 可以运行,Watch 工具也能在没有模型提供商的情况下响应。你需要为 Agent 配置提供商,以使用聊天、工具调用和 THE LOOP 的批评步骤。

连接模型,并验证连接

在工作区中按顺序完成四个步骤。最后一步才是关键。

在应用中功能
Settings → Models → Add provider为提供商命名并输入密钥,或将字段留空,从启动环境中读取密钥。
Settings → Role Bindings → Choose a model为一个角色绑定特定的提供商和模型——Chat 或 Visual perception。
Run provider test向该绑定发送一次真实请求,并报告返回结果。
Ready只有此时,工作区才会向它发送任何内容。
DeepWatch 的 Settings 中的 Role Bindings。Chat 标记为 Ready,绑定到 OpenRouter 和 deepseek/deepseek-v4-pro,并提供 Change model、Run provider test 和 Unassign Chat 操作。Visual perception 和 Speech to text 均标记为 Not configured,未分配任何模型,并提供 Choose a model 按钮。

保存不代表已通过测试。 尚未成功通过提供商测试的绑定会被阻止,轮次也会明确说明:“……已绑定,但尚未通过提供商测试,因此目前不能向其发送任何内容。” 主机重启后,请重新运行测试——绑定会保留,但验证结果不会。

能力是按角色分配的,而不是按提供商分配的。未分配任何模型的角色会明确说明这一点,绝不会悄悄回退到其他角色的模型。因此,上面三个角色中有两个显示为 Not configured,而不是继承 Chat 的模型。

值得尝试的第一个任务

打开一个工作区目录,并提出一个会操作磁盘内容的请求:

创建 notes/totals.json,写入数字 12、30 和 18,然后读回文件并告诉我它们的总和。

你会得到一个答案,答案下方还会按工具调用逐行列出,并注明每个工具调用操作的确切工作区相对路径。本 README 中的其他内容都是以此为基础展开的。

依赖项就绪不等于已使用某项能力。 deepwatch doctor 会报告已安装且可访问的内容——Node、Harness、配置文件、Watch Core、ffmpeg。它不会声称这些能力已在你的机器上实际运行过;工作区自己的就绪面板统计的也是同一情况。绿色行表示所需组件都已就位;运行上面的任务,才能确认这些组件能否协同工作。

3. 接入你已在运行的 DeepSeek Harness
cd <your-project>
dsh plugin --profile <your-profile> add @deepwatch/dsh-bundle
dsh --profile <your-profile>

没有 web 子命令。 dsh web 是 dsh --profile web 的别名,因此 dsh --profile <your-profile> web 会启动你的配置文件,然后把 web 作为参数交给应用——这并不是你想要的效果,而且命令也不会提示这一点。 Harness 会在 dsh --help 中自行打印说明:dsh --profile web — 启动 web 配置文件(与 dsh web 相同)。只需在 --profile 后指定一次配置文件名称, 不要传递其他内容。

两条命令中指定相同的配置文件。 dsh plugin add 会写入你指定的 配置文件;如果安装到一个配置文件却启动另一个,你就会发现 Agent 没有 watch_* 工具,也没有任何错误信息说明原因。

在项目目录中启动。 收据日志会写入 Host 启动时所在的工作目录,所以 请先 cd 到该目录——否则 Library 会为你当前并未工作的目录建立索引,并报告 empty。

启动前,若要检查配置文件实际组合了哪些内容:

dsh --profile <your-profile> --dump-config | grep watch-

兼容的 Harness。 此版本经过测试的版本恰好是 @deepseek-ai/[email protected]——这是固定的依赖版本,而非版本范围,因此 在不同 Harness 上使用配置文件属于未经测试的组合。运行 dsh --version 即可查看当前版本。

以上就是安装步骤。该包声明了 dsh.bundle.patch,因此 DSH 会将其 合并到配置文件的层堆栈中,并在自身补丁之后应用该补丁。此外还声明了 四种更精简的变体——media、browser、memory、document,供只需要一种能力而非全部能力的配置文件使用。

安装引擎——并加上额外依赖,因为 bundle 的媒体能力由引擎提供:

pip install 'watch-skill[standard,ocr]'

[standard] 包含帧、检索和 MCP;[ocr] 用于读取屏幕上的文本。直接运行 pip install watch-skill 安装的 Core 无法提取帧,而 Bridge 会连接到它,并在第一个 视频上报告 perceive.missing_dependency。Bridge 会自行从 PATH 中查找可执行文件。

完整指南:@deepwatch/dsh-bundle。

要求。 与本项目其他部分相同:Node ^22.19 || >=24,以及引擎所需的 Python 3.11、3.12 或 3.13。支持 Windows、macOS 和 Linux。


哪个包适合你

此仓库通过两个注册表发布了 21 个包,其中只有三个是供用户主动安装的。

包注册表适用情况
watch-skillPyPI你想通过 CLI、MCP 或 REST 使用感知、证据、检索和验证功能。这是引擎。
@deepwatch/clinpm你想使用完整工作区。它提供 deepwatch 命令,用于配置并启动其他所有组件。
@deepwatch/dsh-bundlenpm你已在运行 DeepSeek Harness,并想将 Watch 添加到自己控制的配置文件中。

@deepwatch/ 下的其他所有内容都是插件或内部依赖——bundle 组合使用的 Harness 组件(dsh-tools、dsh-library、dsh-live、 dsh-memory、dsh-workspace 等),以及它们共享的包 (dsh-contracts、dsh-sdk、dsh-core-bridge)。发布这些包是为了让 bundle 能够解析依赖,也让组合可以只选择其中一项,而非全部安装。 直接安装其中某个包,是为了将单个组件嵌入你控制的组合中;这并不是使用该产品的途径。

npx @deepwatch/cli 是运行 @deepwatch/cli 的一种方式,而不是另一个包; npm 上没有不带作用域的 deepwatch 包。

**包映射**展示了这 20 个包如何组合,每个包自己的 README 也会说明它的用途和所需条件。

THE LOOP:观察、行动、验证

感知只是其中一半。THE LOOP 指的是 Agent 在试图修复问题时如何利用感知。

THE LOOP:Agent 在自己的结账页面上发现 TOTAL: $NaN,收到一份结构化评判,其中指出故障可见的时间戳;代码修复后,再次捕获确认故障已消失。
pip install 'watch-skill[standard,loop]' && playwright install chromium

watch-skill loop start http://localhost:3000/checkout \
  "the total updates when quantity changes, and no NaN appears"
  1. 观察 — 真实浏览器将页面录制为视频;提取视频帧并进行 OCR,每帧都带有绝对时间戳。
  2. 评判 — 请视觉模型判断捕获结果是否符合你编写的标准。模型会报告问题,并标出每个问题被发现时的时间戳。
  3. 修复 — 修改代码。
  4. 验证 — watch-skill loop iterate 会重新捕获并与上一次运行的结果进行差异对比,因此“已修复”意味着原先的问题确实消失了。

评判步骤需要具备视觉能力的模型。没有这类模型时,捕获、视频帧、OCR 和验证仍可正常工作;评判步骤会说明自己无法判断,而不是猜测。参见 THE LOOP。

纠错会变成经验

答案出错时,你可以纠正它。Watch Skill 会对纠错进行分类,将其作为经验存入本地存储;如果错误类型属于机械性错误,还会应用这条经验重新提问,并统计由此节省的工作量。

经验会在运行之间保留,并且只存储在你的设备上。系统不会自行学习——需要由你提供纠正——也不会上传任何内容。 经验与节省。


DeepWatch 工作区

以上所有内容都是引擎,任何 Agent 都可以使用。DeepWatch 基于官方 DeepSeek Harness 构建,并已集成 Watch Skill,因此你在其中运行的 Agent 无需任何额外配置,就能生成凭证和判定结果。

本节接下来将端到端演示一项任务。结账页面收取了错误的金额,而你手头只有一段屏幕录制。

将录制交给引擎 · 询问金额从哪里开始出错 · 修复代码 · 从 Agent 外部证明修复有效 · 第二天再回来查看记录。以下所有数据和判定结果,都来自生成本节的那次运行,使用的是 Watch Skill 1.4.3 和 DeepWatch 0.1.3。

1 · 将录制交给引擎

有人更改数量,整个过程持续四秒。没有任何文字说明哪里出了问题。

watch-skill watch ./checkout-bug.webm --index

提取出的视频帧带有绝对时间戳,屏幕上的文字也一并提取:

Selection: 4 kept from 8 candidates (4 near-duplicates dropped)
  t=00:00   2 × $10.00   Subtotal $20.00   Tax (10%) $2.00   Total $20.00
  t=00:01   5 × $10.00   Subtotal $50.00   Tax (10%) $5.00   Total $50.00
  t=00:02   3 × $10.00   Subtotal $30.00   Tax (10%) $3.00   Total $30.00

现在可以看出这个 bug:税额已经计算并显示出来,却没有计入总额。之所以能看出来,是因为这些视频帧得以保留——在其他内容完全相同的布局中,三个金额发生变化,对视频帧采样器来说看起来像是重复画面,因此脚本化捕获会记录自身执行操作的时刻,由引擎将这些时刻固定下来。

2 · 询问问题发生在哪里
watch-skill ask <video-id> "what was the total when the quantity was three?"

答案引用了对应的时间戳,视频帧也保存在磁盘上。如果录制中没有给出答案,引擎就会如实说明:问题无法回答时,不应据此进行猜测。

3 · 修复应用程序

现在,Agent 有了着手处理的线索。它读取证据,在 cart.js 中找到 orderTotal,并发现它计算出的税额从未进入返回值。

它触及的每个文件都会留下回执,注明路径;工具声明的每个路径都会相对于同一个工作区边界解析。工作区之外的写入会被拒绝,并记录下来:文件不会被触碰,日志中会新增一张回执,标记为 scope:outside_workspace / state:cancelled,并注明这次尝试。两者缺一不可——如果边界只是默默拒绝,就无从得知它曾被测试过。

以下是实际留下的记录,来自生成本节内容的那次运行。日志中有 14 行,合并后得到 12 张回执,因为其中两条各记录了两次——一次在工具返回时,另一次在 Core 给出判定时。此处省略了 4 条 todo_write 和 glob 记录;以下 8 条触及了内容:

回执判定
watch_list_sources—
watch_ask_source—
read — checkout/cart.js—
read — checkout/index.html—
watch_moment—
edit — checkout/cart.jsVERIFIED
watch_verifyINCONCLUSIVE
pwsh—

模型只知道有位客户被收取了错误金额,而且有一段录音存在。它并不知道 Bug 是什么,工作区中的任何内容也没有说明这一点。它列出来源,询问录音,截取其中一段内容,读取两个文件,修改一行,并自行运行验证——结果是 INCONCLUSIVE,因为它编写的检查无法评估。报告会如实呈现这个结果,而不会将其算作通过。

4 · 在 Agent 之外证明修复有效

契约在修复前就已冻结,并存放在 Agent 无法写入的目录之外。Watch Core 会在单独的进程中评估契约,并返回一个并非由 Agent 编写的判定——VERIFIED、FAILED、UNVERIFIED 或 INCONCLUSIVE。

上述运行使用的契约是 c98bd4ae3d13864869ae02be46cdba48fb97f790ec50feead6e30d17ccc007b0,其摘要在 Agent 开始前就已计算。修复前,Core 对全部三项检查都返回了 fail——预期为 22,实际为 20、预期为 33,实际为 30,以及从渲染后的页面中读取到 #total text = '$20.00'。修复后,使用同一份未更改的契约,三项检查全部通过,页面显示为 $22.00。

来自 watch_verify 的 VERIFIED 结果卡片:两项检查全部通过,一项确认文件存在,另一项确认其 total 字段;卡片上显示了契约的 sha256 摘要。

上方卡片截取自另一项任务——从这里开始中的 totals.json 任务——因为它展示了 VERIFIED 卡片的样子。它不是 checkout 修复的截图;该修复的证据就是上文所列的契约和回执。

屏幕上显示了契约的 SHA-256,因此你可以确认它是同一份契约。

判定就是答案,四种结果各有不同含义。针对上述契约进行测量时:对于修复后的工作区,结果为 VERIFIED;若指向不包含这些文件的目录,检查仍会运行并报告为 false,因此结果为 FAILED;如果预期只是用文字描述,背后没有可执行的检查,则结果为 UNVERIFIED——这是如实的结果,但不代表通过;如果某项检查完全无法评估,结果则为 INCONCLUSIVE,该检查自身的状态会保留为 null,而不会被归并为 false。若未提供可供测量的工作区,Core 会直接拒绝请求(verify.workspace_unresolved),而不是猜测目录。

5 · 明天继续

重启一切——终止进程,再重新启动。两条记录都会回来, 而且它们属于两种不同的存储,值得区分。

Watch Core 的来源索引位于 Watch 数据目录中。无论是否打开任何内容,它都在那里,而且 watch-skill list 无需工作区即可读取。Library 的收据索引属于 Host 本身:日志写入工作区下的 .watch/receipts,Library 会在刷新时从该文件重建索引。它是派生数据,可以安全丢弃。

这就是 Library 会跟随工作区的原因。从你正在使用的目录启动应用;如果 Host 从其他位置启动,日志也会写到其他位置。重启后 Library 显示 empty,通常是因为它指向了错误的目录,而不是数据丢失。

以上一次运行为例:写入了 14 条收据,进程被终止,重启后 14 条全部重新打开——记录 ID 相同,最后修订版本相同,而且 Core 已经给出判定的两条记录仍保留各自的结论:修复的结论为 VERIFIED,无法运行的检查则为 INCONCLUSIVE。

Library 页面显示匹配结果,列表包含针对工作区相对路径的读写操作,以及一次 pwsh 调用。提示信息显示“索引已就绪。由此工作区自己的 Host 提供回答”,页面标记为 Local-first。

Compare 会并排显示失败运行和通过运行,并指出它们的判定在哪里出现分歧。比较只描述差异,不会自行给出判定。

Compare 页面中选中了两条验证记录:左侧是 FAILED 的 watch_verify,右侧是修复文件后运行所得的 VERIFIED 记录。差异表显示两条记录分别只存在于一侧。

这里的每张图片都是运行中构建版本的实拍,而且它们并非都来自同一个构建版本——声称它们来自同一个版本,会是本页最容易出现的虚假说法。引导界面截图来自当前图库,针对 Watch Skill 1.4.3 and DeepWatch 0.1.4 重新拍摄,当时确定性浏览器场景的测试结果为 42 项全部通过;如果截图与拍摄所用的引擎不匹配,门禁就会拒绝这组截图。Settings 和结果卡片截图来自 1.4.3 / 0.1.4 候选版本,之所以保留,是因为此版本没有改变它们展示的界面。

截图页面 列出了每张图片对应的构建版本,并提供横跨三种视口的完整 57 张截图图库。

这里的“local-first”确切来说是什么意思。 你的来源、收据、判定和记忆都存储在你的机器上,Library 搜索也在本机运行。这并不意味着完全不会使用网络:setup 会从 npm 下载运行时,有些 Watch 扩展首次运行时会获取模型,而你配置的托管模型提供商会收到你发送给它的内容。保留在本机的是记录及对记录的检索。

捕获内容需要单独征得同意,与上述事项无关。工作区可以记录的每种来源都会列出所需权限及是否已请求该权限——只有在你使用该来源时才会请求:

DeepWatch Settings 的 Sources 页面列出了 Screen、Window、Camera、Microphone 和 Live session。每项均标记为 Local 和 Not requested,权限说明为“首次使用时请求”;实时会话继承其来源,受监督的浏览器则无需操作系统权限。

持有提供商密钥并不代表允许媒体离开本机;即使网络已连通,云端引擎也仍需单独征得同意。这是有意设置的两个独立开关。


人们如何使用它

向视频提问为录制内容建立一次索引,然后就可以提问。答案会引用可点击打开的时间戳。 01-watch-and-ask
验证 Agent 的工作运行确定性契约的 Core——文件摘要、JSON 值、SQL、HTTP、DOM。 14-browser-verification
通过观察界面来修复 UI捕获、评估、修复、重新验证。 04-ui-loop
跨所有内容搜索为你看过的每个来源建立一个索引。 03-cross-video-search
离线工作本地 Whisper 和 OCR,无需服务提供商,任何内容都不会离开设备。 15-private-offline-workflow
实时观看观看流或浏览器会话,并限制范围、跟踪游标。 18-live-watch

每个示例都是一个可运行的目录,旁边写明了前置条件和预期输出。

全部 20 个示例,按所学内容分类
学习核心功能01 Watch and ask · 02 Focused moment · 03 Cross-video search
使用 Agent 构建06 MCP and REST · 09 Framework adapters · 15 Private offline workflow
理解和整理05 Multilingual Arabic · 10 Structured extraction · 11 Batch mode · 12 Library memory · 16 Shareable viewer
验证和改进04 UI loop · 07 Lessons and stats · 08 Loop types · 13 Self-improvement · 14 Browser verification · 17 Freshness and offline · 20 Observer loop
实时观看18 Live watch · 19 Live browser

以上就是全部 20 个示例;索引见 examples/。


各部分如何协同

flowchart LR
  subgraph W["DeepWatch workspace"]
    H["DeepSeek Harness<br/>agent, tools, UI"]
    P["Watch plugins<br/>tools · library · live · memory"]
    H <--> P
  end
  P <-->|"Bridge (stdio)"| C["Watch Core<br/>Python engine"]
  C --> E[("Evidence store<br/>frames · transcripts · index")]
  C --> V["Verifier<br/>isolated subprocess"]
  V --> R[("Verification records<br/>contract · checks · verdict")]
  P --> J[("Receipt journal<br/>one per tool call")]
  A["Any other agent<br/>MCP · CLI · REST"] <--> C

只有 Watch Core 会给出判定。 Host 可以发现、关联、冻结契约并发起询问——但不能决定答案。这就是 ADR-002 的规定;如果 packages/ 下的任何内容开始生成判定,构建门禁就会失败。

收据记录工具调用做了什么;判定记录 Core 检查了什么。两者由不同的进程写入,Library 会将它们显示在不同的列中,因为 Agent 成功运行命令和 Agent 做对了事情,并不是同一种说法。

了解更多:架构 · 验证 · 39 个工具。


哪些功能可用,以及需要什么

能力开箱即用需要
启动应用、浏览、读取诊断信息✅无
验证契约、遏制、回执✅无
视频帧和场景使用 [standard]ffmpeg ≥ 5.1 — watch-skill doctor 会安装它
读取屏幕上的文字使用 [ocr]首次使用时下载模型(约 80 MB)
语音转文字使用 [whisper]首次使用时下载模型;如果来源有字幕,则优先使用字幕
与 Agent 聊天—添加并绑定一个提供商
视觉场景描述—能识别图像的模型
浏览器捕获 / THE LOOP使用 [loop]playwright install chromium
记忆关闭在设置中启用;存储内容为明文,并且会明确说明这一点
桌面应用未分发 — 尚无安装程序运行 deepwatch web

即使未配置提供商,DeepWatch 也能启动并保持实用:验证、遏制、资料库和本地感知都在本地运行。需要提供商的是 Agent — 聊天、工具使用以及 THE LOOP 的批判步骤。

功能通过三种方式提供,彼此不能互换。 本地依赖项(ffmpeg、yt-dlp、JS 运行时)在你的设备上运行,watch-skill doctor 会获取并修复它们。下载的模型(OCR 权重、whisper)也在你的设备上运行,需要一次性下载较大的文件,你的任何文件都不会因此离开设备。托管提供商 — Agent 的模型以及你绑定的任何视觉模型 — 则是由他人运营的服务,其延迟、价格和条款均由对方决定,并且能看到你发送的内容。你自行运行的兼容 OpenAI 的服务(Ollama、vLLM、LM Studio、llama.cpp)属于指向自有硬件的托管方式:数据保留在本地,而特定模型是否支持工具调用或图像取决于该模型,DeepWatch 会报告这一点,而不会绕过限制。

在你添加提供商之前,不会有任何内容发送给提供商;持有提供商凭据并不代表获准上传视频帧或转录文本 — 上传需要单独征得同意。

会自动修复的内容。 watch-skill doctor 会修复依赖项:下载 yt-dlp 并保持其为最新版本、引导安装 JS 运行时、安装 OCR 语言数据,并在可行时获取 ffmpeg,同时报告每项修复。这是此处唯一会在未收到请求时采取行动的功能。此版本没有自动恢复任务、没有自主学习,也没有静态加密。**已知限制**列出了完整清单。


用数据衡量,而非空口断言

与领先的视频理解 API 使用相同文件和相同评分器进行对比:

Watch Skill基线
书面分析的依据充分性89.7%27.9%
每 100 个词的引用数13.230.12
真实视频片段中的帧交付率96.9%31.2%
提示开始时间在半秒内的比例100%25%

方法和测试夹具:benchmarks/video_backends/。 与其他方案的权衡:对比。


文档

快速入门安装、首次监视、首次连接 Agent
安装与升级两款产品、可选附加组件、兼容性政策
配置设置、提供商、存储位置
工具参考全部 39 个 MCP 工具及其 REST/CLI 对应项
验证契约、十四种检查类型、保证级别
架构边界、数据流、扩展点
Agent 矩阵各客户端的设置方式及验证程度
故障排除依赖修复与常见运行时错误
成本哪些功能免费运行,提供商会对哪些项目收费
已知限制此版本尚不支持的功能

DeepWatch: workspace README · 设置 · 二十个软件包 · 发布 · 平台支持

工具数量有三个,因为它们回答的是不同问题:watch-skill serve 提供 39 个 MCP 工具,DeepWatch 中添加到 Agent 的 22 个 watch_* 工具,以及该 Agent 总共可用的 47 个工具。


社区与生态

由他人撰写的介绍,以及收录本项目的目录。以下内容根据各自的实际内容进行描述——介绍文章代表有人尝试并分享体验,这与背书并不相同,而且这些内容都无法说明有多少人在使用本项目。

教程与介绍文章

Watch Skill 使用教程:让 Codex 看懂视频和录屏逐步介绍如何将 Watch Skill 接入 Codex CLI:安装、MCP 配置,以及处理第一个视频。中文。
Watch Skill:AI 视频分析与视频校正设置与操作指南,包含实际案例和故障排除章节。英文。

视频

演示第一部分 · 第二部分Bilibili 上的屏幕录制演示,涵盖安装和首次分析。中文。

目录

Skills.sh收录十种 Agent 技能,并可通过一条命令将其安装到受支持的客户端中。
SkillsMP收录同一组技能的另一个目录。
MCP 注册表io.github.oxbshw/watch-skill 服务条目,供通过名称解析 MCP 服务的客户端使用。

完整内容按教程、视频、集成和目录列表分类整理:docs/ecosystem.md。如果你撰写或录制了相关内容,欢迎提交拉取请求,将其添加到该页面。


贡献

欢迎提交问题和拉取请求。CONTRIBUTING.md 介绍了二十分钟上手流程:需要安装什么、运行哪个检查,以及提交消息的格式。安全政策:SECURITY.md。设计决策及其原因:DECISIONS.md 和 ROADMAP.md。


README 配图

基于 DeepSeek Harness 构建 · 由 Watch Skill 提供支持

DeepWatch 和 Watch Skill 是独立项目,与 DeepSeek 无关联,也未获其背书。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。