# 装浏览器扩展（一次，三分钟）

装完这一件事，以后**你平时怎么开浏览器就怎么开**，陪看能自己看到你在看第几秒。

不需要专用窗口，不需要改快捷方式，不需要懂什么叫端口。

> 你不用理解任何原理，照着点就行。每一步都写了"**点完你应该看到什么**"。
> 看到的不一样，去最后一节找。

---

## 先看这个：三种省事的程度，自己挑

| 办法 | 你要做什么 | 代价 |
|---|---|---|
| **① 装扩展**（本文） | 双击一个文件 + 点三下，**全程约 1 分钟** | 你自己浏览器，书签登录都在 |
| **② 上架商店**（还不是现状） | 点一下「获取」 | 要先去商店上架，一次投入 1–7 天审核 |
| **③ 什么都不装** | 说一句「陪我看这个链接」 | 片子要在**插件开的那个窗口**里看 |

> **没有"既零安装、又能用你自己浏览器"的办法。** 不是省事没做到，是浏览器不让：
> 外部程序读不到你正在看的页面，除非你装了扩展或者它带着调试端口启动。
> 这条限制是防恶意软件的，微软和谷歌都堵死了。

② 和 ③ 的说明在文末「更懒的两条路」。

---

## 最省事：双击一个文件，然后点三下

### 第 0 步：双击 `scripts\install-extension.cmd`

打开这个目录：

```
D://deepseek//3-Life//dsh-watch-together//scripts
```

找到 **`install-extension.cmd`**，**双击它**。

会弹出一个黑窗口，它自己把三件事做完：

1. 把扩展复制到一个固定的地方（`%LOCALAPPDATA%\dsh-watch-together\extension`）——
   这样以后你把仓库挪走、删掉，扩展照样能用
2. 把那个路径**复制到剪贴板**
3. 帮你**打开浏览器的扩展管理页**

> 黑窗口别关，它会一直告诉你下一步点哪里。

### 然后照着黑窗口里的话点三下

**第 1 下**：扩展管理页打开后，把「**开发人员模式**」开关打开
（Edge 在左下角，Chrome 在右上角）。

**第 2 下**：点「**加载解压缩的扩展**」（Chrome 叫「加载已解压的扩展程序」）。

**第 3 下**：弹出的选择框里，直接在地址栏 **Ctrl+V 粘贴**（路径已经帮你复制好了）
→ 回车 → 点「**选择文件夹**」。

**你应该看到**：列表里多出一张卡片，名字叫 **"陪看位置桥 (Watch Together)"**。

然后**别关那个黑窗口** —— 它在等你。它会自己往下走：

```
✓ 扩展装上了（v0.0.7）。
  再打开一个视频、按播放 —— 通了我会立刻告诉你。

====================================================
  ✅ 全部完成
     正在读到：某某某 @ 01:06.0
====================================================
```

**看到「✅ 全部完成」就是真装好了**，不用再开别的窗口、不用自己判断。
看到这个方框之前，就是还没成。

### 装完怎么确认（上方那个脚本已经替你做了）

如果那个窗口已经关了、或者你想单独再看一次，双击 `scripts\bridge.cmd`，它会开一个专门等消息的黑窗口。

然后**随便点开一个视频、按播放**，等三秒 —— 黑窗口里会出现：

```
✓ 收到上报：某某某 @ 02:05.0
  通了。以后正常开浏览器就行，这个窗口可以关掉。
```

看到这一行就成功了。**以后不用再碰这两个文件。**

**这个窗口会自己说清卡在哪一步**，不用你猜。它一共只会说三种话：

| 它说的话 | 意思 | 你该做什么 |
|---|---|---|
| `… 还没收到扩展的任何消息` | **扩展根本没被加载** | 去 `edge://extensions` 看列表里有没有它 |
| `… 扩展已经连上了，但还没收到播放位置` | 扩展是好的，**问题在视频** | 点开视频、按播放；暂停时不动是正常的 |
| `✓ 收到上报：…` | 通了 | 关掉窗口，正常用 |

**看到第二种就说明扩展装对了** —— 别再折腾安装步骤，去检查视频那边。

> 装好扩展的那一刻，浏览器会自动打开一个"装好了"的页面，上面也写着这三步验证。
> 那个页面看完就可以关。

---

## 为什么最后三下要你自己点？

因为浏览器**不允许**任何程序偷偷装扩展。

从 Chrome 137 起，命令行加载扩展的开关（`--load-extension`）在正式版里被直接移除了，
官方连"开发者用的后门"都一起关掉了；扩展的安装记录还存在一个带签名校验的文件里，
外部程序改不动。这不是微软/谷歌为难你 —— **能静默装扩展的通道，正是恶意软件用的通道**，
所以这条路是被故意堵死的。

**AI 也做不到这最后三下**（它没有手，点不了浏览器里的按钮）。但它能：
帮你跑安装准备、帮你起验证服务、帮你读结果。所以最快的流程是：
让它跑 `install-extension`，你点三下，再让它跑 `bridge` 确认。

---

## 手动装（不想跑脚本就走这条）

### 开始之前，先回答两个疑问

**Q：这个东西会不会偷我的密码？**

不会。它只做一件事：每秒读一次当前页面上"视频播到第几秒"，把这个数字发给**你自己电脑上**
的陪看程序（`127.0.0.1`，就是本机，不出网）。

它**不读**你的账号、密码、Cookie、聊天记录、浏览历史，也没有这个权限（扩展的权限清单里
只写了"允许访问本机 9377 端口"）。

**Q：为什么不能从应用商店一键装？**

因为它还没上架。所以要多一步"打开开发者模式"。这一步听起来吓人，其实就是点一个开关。
上架之后就不用这么麻烦了，直接搜名字点安装。

---

## 第 1 步：找到扩展文件夹

两个位置都行，**推荐第一个**（脚本会把它放到那儿，以后仓库挪走也不失效）：

```
C:\Users\你的用户名\AppData\Local\dsh-watch-together\extension
```

或者直接用仓库里的：

```
D:\deepseek\3-Life\dsh-watch-together\extension
```

> 用仓库里那个也行，但**以后你把仓库改名或挪位置，扩展就会失效**（浏览器报"扩展已损坏"）。

进去以后应该能看到这几个文件：

```
manifest.json
background.js
content.js
popup.html
popup.js
icons\
```

> ⚠️ **不要点进 `icons`**，也不要选上一层的 `dsh-watch-together`。
> 认准：**你选的那个文件夹里，必须直接看得到 `manifest.json`**。
> 选错是这一步最常见的失败原因。

**先不要关这个窗口**，下一步要用。

---

## 第 2 步：打开"扩展管理"页面

在你要用来看片的那个浏览器里，新建一个标签页，地址栏输入下面这一行，回车：

- Edge（微软浏览器）：`edge://extensions`
- Chrome（谷歌浏览器）：`chrome://extensions`

**你应该看到**：一个列表页面，显示你现在装的所有扩展。

---

## 第 3 步：打开"开发人员模式"

在**页面的左下角**（Edge）或**右上角**（Chrome），有一个叫
**"开发人员模式"** 或 **"开发者模式"** 的小开关，把它打开。

**你应该看到**：页面顶部（Chrome）或左边（Edge）多出来一排按钮，其中有一个叫
**"加载解压缩的扩展"**、**"加载已解压的扩展程序"** 或 **"加载解压缩"**。

> 找不到？把这些词在页面上大致找一遍，不同版本翻译略有差别。
> Edge 里它在左边那一列的中下部。

---

## 第 4 步：加载扩展

点那个 **"加载解压缩的扩展"** 按钮。

会弹出一个"选择文件夹"的对话框。找到 **第 1 步** 里那个 `extension` 文件夹，
**点一下选中它**（不要点进去），然后点"**选择文件夹**"。

**你应该看到**：
- 列表里多了一张卡片，名字叫 **"陪看位置桥 (Watch Together)"**
- 卡片上有"错误"字样的话，点开看是不是"清单文件缺失"——那是选错文件夹了，删掉重来（见最后一节）

---

## 第 5 步：把图标放到工具栏（方便以后检查）

点浏览器右上角那个**拼图形状的图标**（🧩），在列表里找到 **"陪看位置桥"**，
点它右边的小图钉 📌。

**你应该看到**：工具栏上多了一个**蓝色圆形、中间有个白色播放三角**的图标。

> 这一步不是必须的，但强烈建议做——以后"通没通"点一下就知道。

---

## 第 6 步：确认它真的在工作

这一步很关键，**不做等于没装**。

1. 打开一个视频页面，比如 B 站随便点一个视频，**并且按下播放**。
2. 等 3 秒。
3. 点工具栏上那个蓝色图标。

**你应该看到**：

```
状态   已连上
进度   00:03 / 10:42
页面   【某某某】标题...
本机   正常（0 秒前刚收到）
```

状态是**绿色的"已连上"**，进度在**一秒一秒往上跳**（点一下开关再点开看，数字变了就对了）。

看到这个，说明全部搞定。**以后不用再管它了。**

> 如果显示"未连上"或"服务在，没有视频"——不是扩展坏了，是陪看程序还没开始工作。
> 先在 DSH 里说一句"陪我看视频"，让它开始，再回来看这个面板。

---

## 第 7 步（可选）：检查一次整体状态

如果你是用命令行跑的，可以在项目目录里执行：

```
node bin/watch.mjs doctor
```

**你应该看到**：

```
OK   plugin       ...
OK   cookie-file  ...
OK   ffmpeg       ...
FAIL debug-port   9333 —— 没开（装了浏览器扩展就不用开）
OK   extension    正在上报 00:03 · 【某某某】标题
...
READY — 正在放 00:03（来源 浏览器扩展）
```

`debug-port` 那一行 **FAIL 是正常的**——你走的是扩展这条路，不需要它。

只要最后一行是 **READY**，就没问题。

---

## 常见问题（照着症状找）

### ⓪″ 选文件夹的时候，里面看着是空的 / 只有一个 `icons`

**这个框只显示文件夹，一个文件都不显示。** 标题写的是「选择扩展目录」，
所以你在里面**永远看不到** `manifest.json`、`.js` —— 这不代表文件不在。

另一个常见坑：**不小心点进了 `icons` 子文件夹**再选，那就选错层了。
地址栏最后必须是 `\extension`，不能是 `\extension\icons`。

**别靠眼睛，跑一句就能判**：

```
node bin/watch.mjs install-extension --verify
```

它会像这样把目录里每个文件都列出来：

```
  检查目录：C://Users//你//AppData//Local//dsh-watch-together//extension
  ✓ background.js (3282 B)
  ✓ content.js (2540 B)
  ✓ icons/ (3 个文件)
  ✓ manifest.json (824 B)
  ✓ popup.html (1443 B)
  ✓ popup.js (1932 B)
  ✓ welcome.html (2665 B)

  ✓ 这个目录是完整的，可以「加载解压缩的扩展」。
```

**全是 ✓ → 文件是齐的**，直接在那个对话框里点「选择文件夹」就行，别管列表里显示什么。

如果你已经**点进了 `icons`**（地址栏最后是 `\extension\icons`）：
点左上角的 **← 后退** 一次，回到 `extension` 那一层，再点「选择文件夹」。

如果它报 `✗ 缺关键文件：manifest.json, content.js, background.js`，那才是真丢了：

1. 先**重跑一次** `install-extension`（新版会逐个文件核对，缺哪个当场报）；
2. 还缺 → 多半是**杀毒软件把 `.js` 拦掉了**（"扩展目录 + js" 太像可疑脚本）。
   把这个目录加进杀毒的信任区，再重跑。

### ① 点"加载"时提示"清单文件缺失"或"Manifest file is missing"

**你选错文件夹了。** 你选的目录里没有 `manifest.json`。

正确做法：选 **`extension` 这个文件夹本身**，而且选它的时候就看得到 `manifest.json` 在列表里。

> 如果你选了 `extension\icons`，或者选了 `dsh-watch-together`（上一级），都会报这个错。
> 把装错的那个删掉，重新来一遍。

### ② 装好了，面板显示"未连上"

**原因几乎总是同一个：陪看程序没在跑。**

扩展只是"把位置报出去"，没人接就当然连不上。解决办法：

- 在 DSH 里说一句"陪我看视频"，让它启动；
- 或者命令行里跑 `node bin/watch.mjs chat`（它会一直开着，还顺便有聊天框）。

再点一次图标。还是"未连上"？看下一条。

### ③ 面板显示"服务在，没有视频"

服务是通的（好消息），只是**当前这个标签页里没有正在播的视频**。

- 是不是切到别的标签页了？切回视频那个标签页再看。
- 视频在播放器里但显示暂停？按一下播放。
- 视频是嵌在别人的网页里（iframe）？见第 ⑦ 条。

### ⓪ 双击 `install-extension.cmd` 后，那三步没看清就没了

不用重装。在项目目录里跑这一句，它只会**再把那三步打印一遍**（不动任何文件）：

```
node bin/watch.mjs install-extension --steps
```

窗口一闪而过通常是"从某个编辑器/管家的运行按钮跑的"，那种方式没有交互终端。
直接去文件夹里**双击** `install-extension.cmd` 更稳，它结尾会停住等你按键。

### ⓪′ 双击 `install-extension.cmd` 黑窗口一闪就没了

两个可能：

- **没装 Node.js**。这个脚本要靠它复制文件。去 https://nodejs.org 装一下（一路下一步）。
- 装了 Node 但不在 PATH 里 → 那就走下面的「手动装」，效果一样，只是路径要自己粘。

### ④ 浏览器重启后提示"停用开发者模式扩展"

这是浏览器的安全提示，**不是出错**。

点 **"保留"** / **"Keep"** 就行。如果你点错了"停用"，扩展会变灰——
回到第 2 步的扩展页面，把它重新**打开**即可，不需要重装。

### ⑤ 面板数字不动了（一直停在同一个时间）

- 视频暂停了 → 这时候不动是**对的**（陪看也知道你暂停了，不会说话）。
- 视频在播但数字不动 → 可能是页面在后台被浏览器"节流"了。把那个标签页切到前台。
- 换了视频，还是旧标题 → 刷新那个页面。

### ⑥ 工具栏上找不到蓝色图标

点右上角的**拼图图标 🧩**，里面就能看到"陪看位置桥"，点旁边的小图钉固定。

### ⑦ 某些网站的视频读不到

如果那个网站把播放器放在**内嵌框架**里（比如某些影视站、部分课程网站），
扩展默认只在最外层页面里工作，就看不到里面的播放器。

目前这是已知限制。遇到的话用备用方案：双击 `scripts/start-edge-debug.cmd`，
用那个窗口看。

### ⑧ 我以后不想用了

第 2 步那个扩展页面里，找到"陪看位置桥"，点"**移除**"。删掉就干净了，
不会在系统里留下任何东西。

---

## 它到底做了什么（不想看可以跳过）

一句话：**每秒把"视频播到第几秒"这个数字，发给你自己电脑上的陪看程序。**

```
你浏览器里的页面
   └─ 扩展读到 <video> 的当前时间：03:42
        └─ 发到 127.0.0.1:9377（本机，不出网）
             └─ 陪看程序拿到 03:42，决定"这段该说话了"
```

陪看程序同时支持另一条路：读浏览器的**调试端口**。那条路更底层，但要专门开一个窗口。
两条路随便通一条就行，装了扩展之后就不用管调试端口了。

如果哪天你既没装扩展、也没开调试窗口，陪看会**明确告诉你"读不到进度"**，
并且问你现在看到哪儿——它不会瞎猜。因为猜错一次，后面每一段都是错的。

---

## 更懒的两条路（供参考 / 以后再说）

### ② 上架扩展商店 —— 一次投入，之后所有人都是"点一下装上"

现在的三下点击，**唯一的根源是"未上架"**：未上架的扩展只能靠「开发者模式 + 加载解压缩」装，
这是浏览器给开发者的口子，不是给用户的。

上架之后，用户看到的就是一个「获取」/「添加至 Chrome」按钮，点完就装好，**没有开发者模式、没有选文件夹**。

代价（一次性）：

- Edge 加载项商店：注册免费，审核通常 1–7 天
- Chrome 应用商店：注册 5 美元（一次性），审核 1–3 天
- 之后每次改扩展都要重新提交审核

**这是"对别人友好"的正解。** 如果这个插件要给不认识的人用，早晚要走这一步。

### ③ 干脆不装：插件自己开窗口放片子

> **「零安装、让插件自己开窗口」那条路已经没有了**（2026-10-31 删除）：它会在你眼前多开一个
> 独立 profile 的浏览器，还得在里面重新登录一次 B 站，实际体验比装一次扩展差得多。
> 现在读不到位置就直接问「你看到几分几秒了」。

如果你的日常是"看片就用那个窗口"，这条路其实比装扩展更省事。
两条可以同时存在，不会打架。
