dsh-mobile-plugin 0.5.24 → 0.5.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/knowledge/apps/alipay.md +30 -0
- package/knowledge/apps/android-settings.md +30 -0
- package/knowledge/apps/bilibili.md +30 -0
- package/knowledge/apps/boss-zhipin.md +32 -0
- package/knowledge/apps/douyin.md +32 -0
- package/knowledge/apps/taobao.md +33 -0
- package/knowledge/apps/wechat.md +33 -0
- package/knowledge/apps/weibo.md +31 -0
- package/knowledge/apps/xiaohongshu.md +29 -0
- package/knowledge/apps/zhihu.md +30 -0
- package/knowledge/sites/bilibili.com.md +27 -0
- package/knowledge/sites/github.com.md +27 -0
- package/knowledge/sites/x.com.md +28 -0
- package/knowledge/sites/xiaohongshu.com.md +27 -0
- package/knowledge/sites/youtube.com.md +28 -0
- package/knowledge/sites/zhihu.com.md +27 -0
- package/lib/impl.js +9 -0
- package/lib/mobile/cli/acp.js +3 -2
- package/lib/mobile/phone/confirm.js +189 -0
- package/lib/mobile/phone/index.js +21 -1
- package/lib/mobile/phone/irreversible.js +146 -0
- package/lib/mobile/phone/pacing.js +173 -0
- package/lib/mobile/phone/route-hint.js +164 -0
- package/lib/mobile/phone/routes-memory.js +133 -0
- package/lib/mobile/phone/routes.js +84 -0
- package/lib/mobile/phone/service.js +90 -5
- package/lib/mobile/phone/tools.js +1190 -64
- package/lib/mobile/phone-knowledge.js +301 -0
- package/lib/mobile/schedule.js +64 -7
- package/lib/mobile/sessions.js +40 -5
- package/lib/mobile/wechat.js +26 -1
- package/lib/p2p/rendezvous.cjs +118 -0
- package/lib/p2p/session.cjs +595 -0
- package/lib/p2p/wiring.cjs +117 -0
- package/lib/panel/index.html +10 -10
- package/lib/relay/status.js +2 -0
- package/lib/routes/control-plane.js +24 -1
- package/lib/routes/mobile-api.js +20 -1
- package/lib/shared/e2ee-request.js +27 -7
- package/lib/tailcat/host-process.cjs +54 -1
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<h3 align="center">AI-HUB 移动端插件</h3>
|
|
2
2
|
|
|
3
|
-

|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
6
|
<a href="https://app.wnluo.com/public/apps/14"><img alt="安卓 分发下载" src="https://img.shields.io/badge/%E5%AE%89%E5%8D%93-%E5%88%86%E5%8F%91%E4%B8%8B%E8%BD%BD-3DDC84?style=for-the-badge&logo=android&logoColor=white"></a>
|
|
@@ -16,13 +16,13 @@
|
|
|
16
16
|
<a href="EN-README.md"><img alt="English" src="https://img.shields.io/badge/README-English-2f81f7?style=flat-square"></a>
|
|
17
17
|
</p>
|
|
18
18
|
|
|
19
|
-
<p align="center">电脑上开着的
|
|
19
|
+
<p align="center">电脑上开着的 DeepSeek Harness,手机上接着用。</p>
|
|
20
20
|
|
|
21
|
-
**AI-HUB 的手机端插件。** 装在电脑这边,手机 App 就通过一条中转隧道或局域网配对连进你的
|
|
21
|
+
**AI-HUB 的手机端插件。** 装在电脑这边,手机 App 就通过一条中转隧道或局域网配对连进你的 DeepSeek Harness —— 看会话、接着聊、管理文件和工作区,进度实时同步。它也可以脱离桌面外壳单独跑在服务器上,当作无头宿主用。
|
|
22
22
|
|
|
23
|
-

|
|
24
24
|
|
|
25
|
-
手机连的是**你自己那台电脑上的
|
|
25
|
+
手机连的是**你自己那台电脑上的 DeepSeek Harness**,不是某个云端服务。电脑不用公网 IP,也不用在路由器上开端口:插件从内网主动往外建一条隧道,手机沿这条路回来。
|
|
26
26
|
|
|
27
27
|
## 功能
|
|
28
28
|
|
|
@@ -108,7 +108,7 @@ pnpm add dsh-mobile-plugin@<版本>
|
|
|
108
108
|
|
|
109
109
|
## 为什么做这个
|
|
110
110
|
|
|
111
|
-
|
|
111
|
+
DeepSeek Harness 跑在电脑上,但我不是一直坐在电脑前。出门、在别的房间、躺床上,想知道刚才那个任务跑到哪一步了,或者它正卡在一个要我点的审批上,只能走回去。
|
|
112
112
|
|
|
113
113
|
这个插件的出发点就这么窄:不是把整个 DSH 塞进手机屏幕,而是让人离开电脑之后,还能看见、还能接着聊、还能把该点的那一下点掉。
|
|
114
114
|
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: alipay
|
|
3
|
+
display: 支付宝
|
|
4
|
+
description: 支付、生活服务与理财
|
|
5
|
+
packages: ["com.eg.android.AlipayGphone"]
|
|
6
|
+
aliases: ["支付宝", "Alipay", "alipay"]
|
|
7
|
+
open: 支付宝
|
|
8
|
+
pace: careful
|
|
9
|
+
---
|
|
10
|
+
## 是什么
|
|
11
|
+
支付宝是支付与生活服务 App,包名 `com.eg.android.AlipayGphone`。支付、转账、缴费、出行、理财等都在同一个应用里。
|
|
12
|
+
|
|
13
|
+
## 界面
|
|
14
|
+
底部通常有「首页 / 理财 / 消息 / 生活 / 我的」等标签(版本不同略有差异)。
|
|
15
|
+
- 首页:顶部是扫一扫、收付款、卡包等常用入口,下面是应用宫格和生活服务卡片。
|
|
16
|
+
- 理财:余额宝、基金、保险等。
|
|
17
|
+
- 消息:账单通知、朋友消息、服务提醒。
|
|
18
|
+
- 我的:账户、账单、设置。
|
|
19
|
+
|
|
20
|
+
## 功能
|
|
21
|
+
- 扫一扫/收付款:首页顶部入口,也常有悬浮按钮。
|
|
22
|
+
- 转账、红包、AA 收款:在首页搜索或「消息」里。
|
|
23
|
+
- 账单:在「我的 → 账单」里,可按月份查看。
|
|
24
|
+
- 生活缴费、出行、社保等:首页应用宫格里的小程序入口。
|
|
25
|
+
- 卡包:证件、券、会员卡在首页卡包。
|
|
26
|
+
|
|
27
|
+
## 已知现象
|
|
28
|
+
- 涉及金额的操作会有确认页和密码或指纹验证。
|
|
29
|
+
- 首页宫格入口多,且会随活动变化。
|
|
30
|
+
- 很多生活服务是小程序,打开后界面与主 App 不同。
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: android-settings
|
|
3
|
+
display: Android 设置
|
|
4
|
+
description: 安卓系统设置,管理网络、显示、权限、账号与系统信息
|
|
5
|
+
packages: ["com.android.settings"]
|
|
6
|
+
aliases: ["系统设置", "手机设置", "Android 设置", "Settings", "设置"]
|
|
7
|
+
open: 设置
|
|
8
|
+
pace: careful
|
|
9
|
+
---
|
|
10
|
+
## 是什么
|
|
11
|
+
安卓系统自带的设置 App,包名 `com.android.settings`。管理网络、显示、通知、应用、权限、账号和系统信息。
|
|
12
|
+
|
|
13
|
+
## 界面
|
|
14
|
+
首页是分类列表,顶部有搜索框;点进分类后是逐层的子页面和详情页。
|
|
15
|
+
- 常见分类:网络和互联网、已连接设备、应用、通知、电池、存储、声音、显示、安全、隐私、位置、账号、系统、关于手机。
|
|
16
|
+
- 分类名称、层级和顺序会随安卓版本和手机厂商而不同,有的厂商还加自己的入口。
|
|
17
|
+
- 返回按钮的文字和样式随页面变化,是否回到首页以页面标题和结构判断。
|
|
18
|
+
|
|
19
|
+
## 功能
|
|
20
|
+
- 搜索设置项:顶部搜索框按名称直接跳到对应设置项。
|
|
21
|
+
- 开关类:Wi-Fi、蓝牙、飞行模式、定位等;开关状态有时只靠颜色和位置表示,界面树里不一定有明确的「开/关」文字。
|
|
22
|
+
- 应用管理:查看已装应用、权限、存储占用、默认应用。
|
|
23
|
+
- 账号:系统账号、同步。
|
|
24
|
+
- 关于手机:型号、系统版本、版本号,同一页还可能有序列号、IMEI、设备名称等信息。
|
|
25
|
+
- 系统更新、恢复出厂、语言与输入法、开发者选项。
|
|
26
|
+
|
|
27
|
+
## 已知现象
|
|
28
|
+
- 点击开关会立即切换状态,界面树里不一定标出当前是开还是关。
|
|
29
|
+
- 部分设置项在厂商定制系统里换了位置或名称。
|
|
30
|
+
- 修改权限、网络、账号等会真实改变设备状态。
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bilibili
|
|
3
|
+
display: 哔哩哔哩
|
|
4
|
+
description: 视频社区,看视频、弹幕与评论
|
|
5
|
+
packages: ["tv.danmaku.bili"]
|
|
6
|
+
aliases: ["哔哩哔哩", "B站", "bilibili", "b站"]
|
|
7
|
+
open: 哔哩哔哩
|
|
8
|
+
pace: careful
|
|
9
|
+
---
|
|
10
|
+
## 是什么
|
|
11
|
+
哔哩哔哩是视频社区 App,包名 `tv.danmaku.bili`,以中长视频、弹幕和评论为特色。
|
|
12
|
+
|
|
13
|
+
## 界面
|
|
14
|
+
底部通常有「首页 / 动态 / 会员购 / 我的」等标签(版本不同略有差异)。
|
|
15
|
+
- 首页:顶部有分区与搜索框,下面是推荐视频流;视频封面带时长、播放量、弹幕数。
|
|
16
|
+
- 动态:关注的 UP 主更新。
|
|
17
|
+
- 我的:历史、收藏、关注、稍后再看。
|
|
18
|
+
|
|
19
|
+
视频页:上方是播放器(弹幕开关、清晰度、倍速在播放器里),下方是标题、UP 主、简介、评论区和相关推荐。
|
|
20
|
+
|
|
21
|
+
## 功能
|
|
22
|
+
- 搜索:结果分视频、番剧、用户、专栏等分组,视频给标题、UP 主、播放量、时长。
|
|
23
|
+
- 播放页:简介、评论、弹幕;评论区能看到作者、正文、点赞数、楼中楼回复数、日期和是否置顶。
|
|
24
|
+
- 关注/收藏/投币:视频下方的一排操作按钮。
|
|
25
|
+
- 直播:单独入口,在分区或首页。
|
|
26
|
+
|
|
27
|
+
## 已知现象
|
|
28
|
+
- 读到的评论通常只是排在前面的一批,不是全部。
|
|
29
|
+
- 部分内容需要登录或大会员才能看。
|
|
30
|
+
- 视频清晰度受账号和片源限制。
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: boss-zhipin
|
|
3
|
+
display: BOSS直聘
|
|
4
|
+
description: 招聘求职 App
|
|
5
|
+
packages: ["com.hpbr.bosszhipin"]
|
|
6
|
+
aliases: ["BOSS直聘", "Boss直聘", "boss直聘", "BOSS", "直聘"]
|
|
7
|
+
open: BOSS直聘
|
|
8
|
+
pace: careful
|
|
9
|
+
---
|
|
10
|
+
## 是什么
|
|
11
|
+
BOSS直聘是招聘求职 App,包名 `com.hpbr.bosszhipin`,求职者和招聘方直接沟通。
|
|
12
|
+
|
|
13
|
+
## 界面
|
|
14
|
+
底部通常有「职位 / 公司 / 消息 / 我的」等标签。
|
|
15
|
+
- 职位:推荐职位流,顶部有搜索,可按城市、薪资、经验等筛选。
|
|
16
|
+
- 公司:公司列表与详情。
|
|
17
|
+
- 消息:与 BOSS/HR 的聊天列表。
|
|
18
|
+
- 我的:简历、收藏、投递记录。
|
|
19
|
+
|
|
20
|
+
职位详情页:职位名称、薪资、公司、职位描述、招聘者信息,底部是「立即沟通」或「继续沟通」。
|
|
21
|
+
|
|
22
|
+
## 功能
|
|
23
|
+
- 搜索:按职位关键词搜,另有筛选条件。
|
|
24
|
+
- 职位详情:任职要求、公司信息、招聘者。
|
|
25
|
+
- 聊天:与招聘者直接对话,可发简历、交换联系方式。
|
|
26
|
+
- 简历:在「我的」里维护在线简历。
|
|
27
|
+
- 投递/沟通记录:在「我的」里查看。
|
|
28
|
+
|
|
29
|
+
## 已知现象
|
|
30
|
+
- 没登录时打开就是登录页,有「微信登录」「一键登录」「其他方式登录」,登录页有勾选同意用户协议和隐私政策的选项。
|
|
31
|
+
- 登录页左上角返回进入手机号登录页(手机号、「下一步」、「接收不到短信」,以及微信、QQ 等其他登录方式),再返回就退出 App,没有不登录浏览的入口。
|
|
32
|
+
- 职位薪资常写成区间,实际以沟通为准。
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: douyin
|
|
3
|
+
display: 抖音
|
|
4
|
+
description: 短视频、直播与商城
|
|
5
|
+
packages: ["com.ss.android.ugc.aweme"]
|
|
6
|
+
aliases: ["抖音", "douyin", "抖音商城"]
|
|
7
|
+
open: 抖音
|
|
8
|
+
pace: careful
|
|
9
|
+
---
|
|
10
|
+
## 是什么
|
|
11
|
+
抖音是短视频与直播 App,包名 `com.ss.android.ugc.aweme`。短视频、直播、商城在同一次安装里。
|
|
12
|
+
|
|
13
|
+
## 界面
|
|
14
|
+
底部通常有「首页 / 商城 / 消息 / 我」等标签(不同版本略有差异)。
|
|
15
|
+
- 首页:上下滑动的全屏视频流,顶部有「关注 / 推荐」等分栏和搜索图标。
|
|
16
|
+
- 商城:商品分类、购物车、订单等电商入口。
|
|
17
|
+
- 消息:私信、互动通知。
|
|
18
|
+
- 我:个人主页、作品、喜欢、钱包等。
|
|
19
|
+
|
|
20
|
+
视频页右侧是作者头像、点赞、评论、收藏、分享一列按钮;底部是文案、音乐和评论区入口。
|
|
21
|
+
|
|
22
|
+
## 功能
|
|
23
|
+
- 搜索:顶部放大镜进搜索页,结果分视频、用户、商品、直播等分组。
|
|
24
|
+
- 直播:进入直播间后底部有商品讲解入口、评论区、送礼按钮。
|
|
25
|
+
- 商城:直播间和视频里都可能有商品卡片,点进去是商品详情。
|
|
26
|
+
- 关注/推荐:首页分栏切换。
|
|
27
|
+
- 拍摄:底部中间的「+」进入拍摄与发布。
|
|
28
|
+
|
|
29
|
+
## 已知现象
|
|
30
|
+
- 商品价格、库存、直播间正在讲解的商品会随时变化。
|
|
31
|
+
- 部分电商入口会跳转到应用商店或外部页面。
|
|
32
|
+
- 首次打开可能弹出青少年模式、隐私政策等弹窗。
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: taobao
|
|
3
|
+
display: 淘宝
|
|
4
|
+
description: 网络购物平台
|
|
5
|
+
packages: ["com.taobao.taobao"]
|
|
6
|
+
aliases: ["淘宝", "Taobao", "taobao", "手机淘宝"]
|
|
7
|
+
open: 淘宝
|
|
8
|
+
pace: careful
|
|
9
|
+
---
|
|
10
|
+
## 是什么
|
|
11
|
+
淘宝是网络购物 App,包名 `com.taobao.taobao`。商品浏览、下单、购物车、订单都在同一个应用里。
|
|
12
|
+
|
|
13
|
+
## 界面
|
|
14
|
+
底部通常有「首页 / 逛逛 / 消息 / 购物车 / 我的淘宝」等标签。
|
|
15
|
+
- 首页:顶部搜索框和扫一扫,下面是分类、活动会场和推荐商品流。
|
|
16
|
+
- 逛逛:内容化的种草信息流。
|
|
17
|
+
- 消息:与卖家的聊天、物流通知。
|
|
18
|
+
- 购物车:已加购商品。
|
|
19
|
+
- 我的淘宝:订单、收藏、地址、设置。
|
|
20
|
+
|
|
21
|
+
商品详情页:图片、价格、规格选择、评价、店铺入口,底部是客服、收藏、加入购物车、立即购买。
|
|
22
|
+
|
|
23
|
+
## 功能
|
|
24
|
+
- 搜索:支持关键词、图片搜索、筛选(价格、销量、发货地等)。
|
|
25
|
+
- 商品详情:价格、规格(颜色/尺码等)、库存、评价、店铺。
|
|
26
|
+
- 购物车:可勾选、改数量、结算。
|
|
27
|
+
- 订单:在「我的淘宝 → 订单」里,分待付款、待发货、待收货、待评价等。
|
|
28
|
+
- 与卖家沟通:商品页的客服入口进入聊天。
|
|
29
|
+
|
|
30
|
+
## 已知现象
|
|
31
|
+
- 价格、库存、优惠券和活动会随时变化,页面显示价未必是最终结算价。
|
|
32
|
+
- 规格没选全时「加入购物车/立即购买」不可点。
|
|
33
|
+
- 部分商品有预售、定金等特殊流程。
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wechat
|
|
3
|
+
display: 微信
|
|
4
|
+
description: 即时通讯、公众号与支付
|
|
5
|
+
packages: ["com.tencent.mm"]
|
|
6
|
+
aliases: ["微信", "WeChat", "weixin", "wechat"]
|
|
7
|
+
open: 微信
|
|
8
|
+
pace: careful
|
|
9
|
+
---
|
|
10
|
+
## 是什么
|
|
11
|
+
微信是即时通讯与社交 App,包名 `com.tencent.mm`。聊天、公众号、小程序、支付都在同一个应用里。
|
|
12
|
+
|
|
13
|
+
## 界面
|
|
14
|
+
底部通常是「微信 / 通讯录 / 发现 / 我」四个标签。
|
|
15
|
+
- 微信:会话列表,未读标记、置顶、草稿和「服务通知」都在这页。
|
|
16
|
+
- 通讯录:联系人、群聊、标签、公众号分类入口。
|
|
17
|
+
- 发现:朋友圈、视频号、扫一扫、小程序、看一看、搜一搜等入口。
|
|
18
|
+
- 我:头像、服务(钱包)、收藏、设置、个人信息。
|
|
19
|
+
|
|
20
|
+
顶部有一条搜索框,可同时搜联系人、群聊、聊天记录、小程序和公众号,结果按分组显示。
|
|
21
|
+
|
|
22
|
+
## 功能
|
|
23
|
+
- 单聊/群聊:输入框里有文字只是草稿,发出后会话里才出现本人的气泡;群聊每条消息带发言人。
|
|
24
|
+
- 通讯录里的显示名、备注名、群名和头像可能彼此相近,进入会话后标题才是实际对象。
|
|
25
|
+
- 公众号:内容与个人会话分开,点进公众号是历史文章列表。
|
|
26
|
+
- 支付/服务:在「我 → 服务(或钱包)」里,包含收付款、钱包、生活缴费等入口。
|
|
27
|
+
- 朋友圈在「发现 → 朋友圈」,是信息流而不是消息列表。
|
|
28
|
+
- 小程序有单独的小程序面板,也可从搜索和聊天卡片进入。
|
|
29
|
+
|
|
30
|
+
## 已知现象
|
|
31
|
+
- 首次登录或换设备需要手机扫码或短信验证。
|
|
32
|
+
- 「服务通知」是一条系统会话,里面是各类提醒,不是真人聊天。
|
|
33
|
+
- 部分链接在内置浏览器打开,顶部有返回和「…」菜单。
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: weibo
|
|
3
|
+
display: 微博
|
|
4
|
+
description: 社交平台,热点与原帖
|
|
5
|
+
packages: ["com.sina.weibo"]
|
|
6
|
+
aliases: ["微博", "Weibo", "weibo"]
|
|
7
|
+
open: 微博
|
|
8
|
+
pace: careful
|
|
9
|
+
---
|
|
10
|
+
## 是什么
|
|
11
|
+
微博是社交媒体平台,包名 `com.sina.weibo`,以短内容、热点和转发评论为主。
|
|
12
|
+
|
|
13
|
+
## 界面
|
|
14
|
+
底部通常有「首页 / 视频 / 发现 / 消息 / 我」等标签。
|
|
15
|
+
- 首页:关注的人的微博流,顶部分「关注 / 推荐」。
|
|
16
|
+
- 发现:热搜榜、话题、分类。
|
|
17
|
+
- 消息:@、评论、赞、私信。
|
|
18
|
+
- 我:主页、微博、关注/粉丝。
|
|
19
|
+
|
|
20
|
+
微博详情页:正文、图片或视频、发布时间、转发/评论/点赞数,下面是评论区。
|
|
21
|
+
|
|
22
|
+
## 功能
|
|
23
|
+
- 搜索:可搜用户、微博、话题,也可按热度排序和限定时间范围。
|
|
24
|
+
- 原帖:有作者、发布时间、转发、评论、点赞数和正文。
|
|
25
|
+
- 转发/评论/点赞:帖子下方一排按钮。
|
|
26
|
+
- 热搜榜在「发现」里,按热度排列。
|
|
27
|
+
|
|
28
|
+
## 已知现象
|
|
29
|
+
- 转评赞反映传播程度,不是有同样问题的人数。
|
|
30
|
+
- 部分内容需要登录后查看,未登录会提示登录。
|
|
31
|
+
- 信息流会插入推荐内容,与关注内容混在一起。
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: xiaohongshu
|
|
3
|
+
display: 小红书
|
|
4
|
+
description: 笔记、搜索与社区
|
|
5
|
+
packages: ["com.xingin.xhs"]
|
|
6
|
+
aliases: ["小红书", "Xiaohongshu", "REDnote", "xhs"]
|
|
7
|
+
open: 小红书
|
|
8
|
+
pace: careful
|
|
9
|
+
---
|
|
10
|
+
## 是什么
|
|
11
|
+
小红书是内容与社区 App,包名 `com.xingin.xhs`,以图文与视频笔记为主。
|
|
12
|
+
|
|
13
|
+
## 界面
|
|
14
|
+
底部通常有「首页 / 购物 / 发布(+)/ 消息 / 我」几个标签。
|
|
15
|
+
- 首页:双列瀑布流笔记,顶部分「关注 / 发现 / 附近」等分栏,右上角有搜索放大镜。
|
|
16
|
+
- 消息:赞和收藏、评论、关注、私信。
|
|
17
|
+
- 我:个人主页、笔记、收藏、赞过。
|
|
18
|
+
|
|
19
|
+
笔记详情页:作者入口在顶部,正文可展开,底部是评论输入与点赞、收藏、评论、分享按钮。
|
|
20
|
+
|
|
21
|
+
## 功能
|
|
22
|
+
- 搜索:结果混合笔记、用户、话题、地点、商品卡片,外观相近,靠标签和作者区分。
|
|
23
|
+
- 笔记详情:正文、作者、互动量、评论区;部分笔记挂商品链接。
|
|
24
|
+
- 发布:底部「+」进入,可选图片或视频、写标题正文、加话题。
|
|
25
|
+
- 购物:商城与商品笔记在同一个 App 内。
|
|
26
|
+
|
|
27
|
+
## 已知现象
|
|
28
|
+
- 信息流、点赞数、价格和库存都是动态内容。
|
|
29
|
+
- 未登录时部分内容会提示登录后查看。
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: zhihu
|
|
3
|
+
display: 知乎
|
|
4
|
+
description: 问答与专栏
|
|
5
|
+
packages: ["com.zhihu.android"]
|
|
6
|
+
aliases: ["知乎", "Zhihu", "zhihu"]
|
|
7
|
+
open: 知乎
|
|
8
|
+
pace: careful
|
|
9
|
+
---
|
|
10
|
+
## 是什么
|
|
11
|
+
知乎是问答和文章社区,包名 `com.zhihu.android`,内容以问题、回答和专栏文章为主。
|
|
12
|
+
|
|
13
|
+
## 界面
|
|
14
|
+
底部通常有「首页 / 视频 / 会员 / 消息 / 我的」等标签。
|
|
15
|
+
- 首页:推荐与关注两条流,顶部有搜索框。
|
|
16
|
+
- 消息:通知、私信。
|
|
17
|
+
- 我的:主页、收藏、关注。
|
|
18
|
+
|
|
19
|
+
问题页:顶部是问题标题和关注/写回答按钮,下面是按排序排列的回答;每个回答有作者、赞同、评论、收藏按钮。
|
|
20
|
+
|
|
21
|
+
## 功能
|
|
22
|
+
- 搜索:结果分问题、回答、文章、用户、话题等分组。
|
|
23
|
+
- 回答:能读到已渲染的正文、作者、赞同数和评论区;未展开的「阅读全文」需要点开。
|
|
24
|
+
- 专栏:独立的文章页,结构类似回答。
|
|
25
|
+
- 关注问题/话题:在问题页和话题页的关注按钮。
|
|
26
|
+
|
|
27
|
+
## 已知现象
|
|
28
|
+
- 回答里作者的身份、利益关系和适用场景需要另外核实。
|
|
29
|
+
- 部分内容需要登录后查看,未登录会提示。
|
|
30
|
+
- 赞同数是互动量,不等于事实正确。
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bilibili.com
|
|
3
|
+
display: 哔哩哔哩
|
|
4
|
+
description: 视频社区网页版,看视频、弹幕与评论
|
|
5
|
+
sites: ["bilibili.com", "b23.tv"]
|
|
6
|
+
aliases: ["哔哩哔哩", "B站", "bilibili", "b站"]
|
|
7
|
+
---
|
|
8
|
+
## 是什么
|
|
9
|
+
哔哩哔哩(B站)是视频社区,网页主域名 `bilibili.com`,站内短链常是 `b23.tv`。内容以中长视频、番剧、直播为主,特色是弹幕和评论区。
|
|
10
|
+
|
|
11
|
+
## 界面
|
|
12
|
+
首页顶部是搜索框和分区导航,下面是推荐视频卡片网格,卡片带封面、时长、播放量、弹幕数。左侧导航有首页、番剧、直播、游戏中心、会员购、动态、热门、频道等。
|
|
13
|
+
|
|
14
|
+
视频播放页:上方是播放器,控制条里有弹幕开关、画质、倍速、音量、网页全屏/全屏;播放器下方是标题、UP 主与关注按钮、播放量、点赞/投币/收藏/分享,再接简介和分P,最下面是评论区与相关推荐。动态、稍后再看、历史、收藏在个人中心里。
|
|
15
|
+
|
|
16
|
+
## 功能
|
|
17
|
+
- 搜索:结果分视频、番剧、用户、专栏等分组,视频给标题、UP 主、播放量、时长。
|
|
18
|
+
- 弹幕:按时间飘过,可开关、调透明度、屏蔽词。
|
|
19
|
+
- 评论区分主楼与楼中楼回复,可按热度或时间排序。
|
|
20
|
+
- 关注、点赞、投币、收藏(三连);可以建收藏夹。
|
|
21
|
+
- 番剧、直播、专栏各有独立入口;直播页有实时弹幕。
|
|
22
|
+
|
|
23
|
+
## 已知现象
|
|
24
|
+
- 高清画质、部分番剧和大会员内容与账号等级、会员相关。
|
|
25
|
+
- 部分内容需要登录后才能看或参与互动。
|
|
26
|
+
- 读到的评论通常只是排在前面的一批,不是全部。
|
|
27
|
+
- 受版权和地区限制,个别视频在特定地区不可见。
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: github.com
|
|
3
|
+
display: GitHub
|
|
4
|
+
description: 代码托管与协作平台,仓库、Issue 与 PR
|
|
5
|
+
sites: ["github.com"]
|
|
6
|
+
aliases: ["GitHub", "github", "代码仓库"]
|
|
7
|
+
---
|
|
8
|
+
## 是什么
|
|
9
|
+
GitHub 是代码托管与协作平台,主域名 `github.com`。核心单位是「仓库」(repository):一个项目的代码、提交历史、Issue、Pull Request、Actions 等都挂在仓库下。
|
|
10
|
+
|
|
11
|
+
## 界面
|
|
12
|
+
仓库页顶部是一排标签:Code、Issues、Pull requests、Actions、Projects、Wiki、Security、Insights、Settings。Code 页左侧是分支切换与文件树,中间是文件列表,下面渲染 README;右侧 About 栏有简介、Topics、Releases、语言占比。
|
|
13
|
+
|
|
14
|
+
文件页顶部显示路径和分支,右上角是「Raw / Blame / 历史」等按钮;代码行可以点行号定位。顶部全局搜索框可切「仓库 / 代码 / Issue / 用户」等范围。个人主页顶部是头像与关注信息,下面是置顶仓库和贡献热力图。
|
|
15
|
+
|
|
16
|
+
## 功能
|
|
17
|
+
- 浏览目录与单个文件、查看提交历史、对比分支、看某一行是谁改的(Blame)。
|
|
18
|
+
- Star、Watch、Fork 一个仓库;Releases 页下载发行包。
|
|
19
|
+
- Issues 与 Pull Requests 各有列表和筛选,PR 里有 Files changed、Commits、Checks 三个视图。
|
|
20
|
+
- Actions 跑 CI 工作流;代码搜索可按语言、仓库过滤。
|
|
21
|
+
- 支持 Markdown 渲染、任务清单、代码块、表格。
|
|
22
|
+
|
|
23
|
+
## 已知现象
|
|
24
|
+
- 部分操作(提交、开 PR、评论、Star)需要登录。
|
|
25
|
+
- 大文件走 Git LFS,页面上是占位说明而不是内容。
|
|
26
|
+
- 未登录时对 API 和页面有访问频率限制,刷太快会临时被挡。
|
|
27
|
+
- 私有仓库只有授权账号看得到。
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: x.com
|
|
3
|
+
display: X(原推特)
|
|
4
|
+
description: 社交平台,短帖、时间线与实时话题
|
|
5
|
+
sites: ["x.com", "twitter.com"]
|
|
6
|
+
aliases: ["X", "推特", "Twitter", "twitter"]
|
|
7
|
+
---
|
|
8
|
+
## 是什么
|
|
9
|
+
X(推特 Twitter 改名后)是社交平台,主域名 `x.com`,旧地址 `twitter.com` 仍会跳转过来。核心内容是「帖子」(post):一段短文字,可带图片、视频、链接和投票。
|
|
10
|
+
|
|
11
|
+
## 界面
|
|
12
|
+
桌面网页左侧是一列导航:首页、探索、通知、私信、书签、列表、社区、个人资料,底部还有发帖入口。中间是时间线,右侧是搜索框和趋势榜。移动网页把导航收进顶部与底部标签,时间线占满屏。
|
|
13
|
+
|
|
14
|
+
帖子的固定结构:作者头像与昵称、正文、媒体、以及下面一排操作——回复、转帖、点赞、查看数、书签、分享。点开一条帖子是同一条的详情页,下面接回复。
|
|
15
|
+
|
|
16
|
+
## 功能
|
|
17
|
+
- 发帖:文字、图片(最多四张)、视频、投票、引用另一条帖子。
|
|
18
|
+
- 时间线有「为你推荐」和「正在关注」两种排序。
|
|
19
|
+
- 转帖分两种:直接转帖,和带评论的引用转帖。
|
|
20
|
+
- 搜索可按「热门 / 最新 / 用户 / 媒体」切换;趋势榜按地区列当前热门话题。
|
|
21
|
+
- 私信是独立入口;列表可把指定账号聚成一条时间线;社区(Communities)是按主题的圈子。
|
|
22
|
+
- 个人资料页有帖子、回复、媒体、喜欢等标签;订阅用户可发长文。
|
|
23
|
+
|
|
24
|
+
## 已知现象
|
|
25
|
+
- 未登录访问常被登录墙挡住,或只能看少量内容。
|
|
26
|
+
- 时间线默认按推荐算法排序,不完全是时间顺序。
|
|
27
|
+
- 视频和图片在单独的查看器里打开,可左右切换。
|
|
28
|
+
- 长文、编辑帖子、部分私信功能与订阅账号相关。
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: xiaohongshu.com
|
|
3
|
+
display: 小红书
|
|
4
|
+
description: 生活方式内容社区,图文与视频笔记
|
|
5
|
+
sites: ["xiaohongshu.com", "xhslink.com"]
|
|
6
|
+
aliases: ["小红书", "xiaohongshu", "RED"]
|
|
7
|
+
---
|
|
8
|
+
## 是什么
|
|
9
|
+
小红书是生活方式内容社区,主域名 `xiaohongshu.com`,分享链接常见 `xhslink.com` 短链。基本单位是「笔记」:图文或视频配上标题、正文和标签。
|
|
10
|
+
|
|
11
|
+
## 界面
|
|
12
|
+
首页是瀑布流的信息流,一张张笔记卡片带封面、标题、作者头像和点赞数;顶部是搜索框,左侧导航有发现、发布、通知、我。
|
|
13
|
+
|
|
14
|
+
笔记详情页:上方是图片轮播(或视频播放器),下面是标题、正文、话题标签、点赞/收藏/评论数、作者信息与关注按钮,再往下是评论区与相关推荐。个人主页有笔记、收藏、赞过等标签。
|
|
15
|
+
|
|
16
|
+
## 功能
|
|
17
|
+
- 发布图文或视频笔记,可加标题、正文、话题标签和地点。
|
|
18
|
+
- 搜索笔记、用户、商品等,可按最新、最热排序。
|
|
19
|
+
- 点赞、收藏(可建专辑)、评论、关注作者。
|
|
20
|
+
- 关注页看关注的人发的笔记;消息里有评论、赞、新增关注等分类。
|
|
21
|
+
- 有直播入口;商品笔记可关联店铺或商品卡。
|
|
22
|
+
|
|
23
|
+
## 已知现象
|
|
24
|
+
- 未登录时浏览和互动功能受限,常提示登录。
|
|
25
|
+
- 信息流按推荐算法分发,不完全按发布时间。
|
|
26
|
+
- 图片是竖向长图轮播,视频笔记会自动播放。
|
|
27
|
+
- 部分笔记的评论或收藏需要登录后才看得到。
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: youtube.com
|
|
3
|
+
display: YouTube
|
|
4
|
+
description: 视频平台,看视频、订阅频道与 shorts
|
|
5
|
+
sites: ["youtube.com", "youtu.be"]
|
|
6
|
+
aliases: ["YouTube", "油管", "youtube"]
|
|
7
|
+
---
|
|
8
|
+
## 是什么
|
|
9
|
+
YouTube 是视频平台,主域名 `youtube.com`,短链域名 `youtu.be`。内容以频道上传的视频为核心,另有 Shorts 短视频、直播和播放列表。
|
|
10
|
+
|
|
11
|
+
## 界面
|
|
12
|
+
桌面网页左侧是导航:首页、Shorts、订阅、我(媒体库)、历史、播放列表,顶部是搜索框。首页是缩略图组成的视频网格,每张卡片带时长、标题、频道名、观看数和发布时间。
|
|
13
|
+
|
|
14
|
+
观看页分三块:上方是播放器(进度条、播放/暂停、音量、字幕、设置、剧场模式、全屏);播放器下方是标题、频道与订阅按钮、点赞/点踩、分享、保存,再接简介和评论区;右侧是相关推荐列表。
|
|
15
|
+
|
|
16
|
+
## 功能
|
|
17
|
+
- 搜索可按上传时间、类型、时长、排序方式过滤。
|
|
18
|
+
- 播放器里可调画质、播放速度、字幕(含自动生成字幕)、循环。
|
|
19
|
+
- 播放列表、稍后观看、点赞的视频都在「媒体库」里。
|
|
20
|
+
- Shorts 是上下滑动切换的竖屏短视频流。
|
|
21
|
+
- 频道页有首页、视频、Shorts、直播、播放列表、社区、简介等标签。
|
|
22
|
+
- 直播页有实时聊天栏。
|
|
23
|
+
|
|
24
|
+
## 已知现象
|
|
25
|
+
- 播放前和播放中会插播广告。
|
|
26
|
+
- 点赞、订阅、看年龄限制内容通常要先登录。
|
|
27
|
+
- 部分视频有地区限制或会员(Premium)限制。
|
|
28
|
+
- 自动生成的字幕可能不完全准确;评论默认按「热门」排序。
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: zhihu.com
|
|
3
|
+
display: 知乎
|
|
4
|
+
description: 问答社区,问题、回答、文章与话题
|
|
5
|
+
sites: ["zhihu.com"]
|
|
6
|
+
aliases: ["知乎", "zhihu"]
|
|
7
|
+
---
|
|
8
|
+
## 是什么
|
|
9
|
+
知乎是问答社区,主域名 `zhihu.com`。核心内容是「问题」下方的一条条「回答」,另有文章、专栏、想法等内容形式。
|
|
10
|
+
|
|
11
|
+
## 界面
|
|
12
|
+
首页默认是推荐流,顶部有「关注 / 推荐 / 热榜」等切换;左侧或顶部是搜索框。问题页顶部是问题标题与描述,下面是回答列表,每条回答带作者、正文、赞同/反对、评论数,长回答会折叠成「展开阅读全文」。右侧常有「相关问题」和话题标签。
|
|
13
|
+
|
|
14
|
+
导航栏有首页、会员、发现、等待回答、我的等入口。个人主页分动态、回答、提问、文章、专栏等标签。
|
|
15
|
+
|
|
16
|
+
## 功能
|
|
17
|
+
- 提问、写回答、评论、赞同或反对,赞同可在赞同/喜欢之间切换。
|
|
18
|
+
- 收藏回答到收藏夹;关注问题、话题、用户。
|
|
19
|
+
- 写文章与专栏;发「想法」(短内容)。
|
|
20
|
+
- 搜索覆盖问题、回答、文章、用户、话题,可只看某一类。
|
|
21
|
+
- 盐选专栏是付费内容;私信与通知在消息入口。
|
|
22
|
+
|
|
23
|
+
## 已知现象
|
|
24
|
+
- 未登录浏览常弹出登录框,或只能看部分内容。
|
|
25
|
+
- 长回答显示为摘要,点「展开阅读全文」才展开。
|
|
26
|
+
- 推荐流里会混入广告和推广内容。
|
|
27
|
+
- 部分回答和盐选内容需要会员或付费才能看全。
|
package/lib/impl.js
CHANGED
|
@@ -33,6 +33,7 @@ const { lanUrls, advertisedCandidates, phoneCandidates, ipv6Candidates, withManu
|
|
|
33
33
|
const { pairingPayload, pairingText } = require('./relay/pairing-payload.cjs')
|
|
34
34
|
const { resolvePort } = require('./relay/port-allocator.cjs')
|
|
35
35
|
const { mountTailcat, chooseTailcatTarget } = require('./tailcat/wiring.cjs') // 直连隧道:入口 + 助手会话 + 启停
|
|
36
|
+
const { mountP2P, chooseP2PTarget } = require('./p2p/wiring.cjs') // 点对点隧道:只有助手会话(连接从隧道里进来,不必开回环门)+ 落点端口的选择
|
|
36
37
|
const { createPreviewService } = require('./relay/preview.js')
|
|
37
38
|
const { mountTerminal, mountCli } = require('./mobile/services.js')
|
|
38
39
|
// 手机打开「电脑上的网页版」时用的那枚一次性登录令牌(见 mobile/host-web.js)。
|
|
@@ -305,6 +306,8 @@ function apply(ctx) {
|
|
|
305
306
|
const advertisedLanPort = () => (state.lanEnabled ? sidecarLifecycle.getAdvertisedLanPort() : state.lanPort) // 对外报地址用实绑端口,见 lifecycle
|
|
306
307
|
// 直连隧道:不配中转也能连的兜底通道;挂不上就只是没这条通道,中转与局域网照旧。
|
|
307
308
|
const tailcat = mountTailcat({ mount, warn, state, saveState: core.saveState, targetPort: chooseTailcatTarget({ lanEnabled: () => state.lanEnabled, lanPort: lanPortInUse, webPort: () => ctx.webServer.port }), hostName: () => state.name, ctx, name })
|
|
309
|
+
// 点对点隧道:两端打洞直连、数据不经过任何服务器。落点端口与直连隧道同一条判据(见 chooseP2PTarget)。
|
|
310
|
+
const p2p = mountP2P({ mount, warn, state, saveState: core.saveState, localPort: lanPortInUse, targetPort: chooseP2PTarget({ lanEnabled: () => state.lanEnabled, lanPort: lanPortInUse, webPort: () => ctx.webServer.port }), ctx, name })
|
|
308
311
|
// 每次同步前都跑一次探测,而不是只在启动时探一次:`/api/relay/config` 改了
|
|
309
312
|
// lanPort 之后同样要走这条路(否则新端口被占时又会退回死地址)。并发调用复用
|
|
310
313
|
// 在飞的那次——探测要占一个监听句柄,重复触发没有意义。
|
|
@@ -392,6 +395,8 @@ function apply(ctx) {
|
|
|
392
395
|
getMirrorPush: mirror.getMirrorPush,
|
|
393
396
|
// 直连隧道那一格:手机轮询 `/status` 时据此自己把通道加进来。
|
|
394
397
|
getTailcat: () => (tailcat ? tailcat.status() : null),
|
|
398
|
+
// 点对点隧道那一格:手机轮询 `/status` 时据此把这条通道也算进来。
|
|
399
|
+
getP2P: () => (p2p ? p2p.status() : null),
|
|
395
400
|
})
|
|
396
401
|
function applyServices() {
|
|
397
402
|
void syncSidecar().catch(() => undefined)
|
|
@@ -438,6 +443,8 @@ function apply(ctx) {
|
|
|
438
443
|
pairingPayload,
|
|
439
444
|
// 直连隧道:二维码要多带一段「去这个一次性节点换正式地址」,状态接口要多一行。
|
|
440
445
|
tailcat,
|
|
446
|
+
// 点对点隧道:二维码要多带一段「电脑的公钥与打洞候选」,配对后两端各持一半。
|
|
447
|
+
p2p,
|
|
441
448
|
restartSidecar,
|
|
442
449
|
// 「手机上最近来过没有」——控制面状态里补给面板用(见 ./mobile/activity.cjs)。
|
|
443
450
|
mobileActivity: activity.snapshot,
|
|
@@ -507,6 +514,8 @@ function apply(ctx) {
|
|
|
507
514
|
registerRoute,
|
|
508
515
|
// 直连隧道:已配对的手机走这条拿到自己的入口地址,不用重新扫码。
|
|
509
516
|
tailcat,
|
|
517
|
+
// 点对点隧道:会合那一步(手机报上候选、这里把它拉起来并回自己的候选)。
|
|
518
|
+
p2p,
|
|
510
519
|
// 预览是 WebSocket 升级路由,走的是 webServer 的另一套名字空间;与 registerRoute
|
|
511
520
|
// 一样必须包在 ctx.effect 里,否则插件重载时重复注册会直接抛错。
|
|
512
521
|
registerUpgradeRoute: (route) => mountRoute(route, true),
|
package/lib/mobile/cli/acp.js
CHANGED
|
@@ -7,8 +7,9 @@
|
|
|
7
7
|
* 那正是这次不做「逐家适配」的关键 —— 四家 CLI 的差别全被适配器吃掉了,这里只认一种协议。
|
|
8
8
|
*
|
|
9
9
|
* 为什么用动态 `import()`:插件这一层是 CJS(`lib/mobile/package.json`),而 SDK 是纯 ESM。
|
|
10
|
-
*
|
|
11
|
-
*
|
|
10
|
+
* 稳定入口的运行时要 zod(`dist/v1/schema/zod.gen.js` 里 `import * as z from "zod/v4"`),
|
|
11
|
+
* 所以 zod 是我们的**直接依赖**,不是可选 peer —— 靠宿主或 profile 里碰巧有一份,
|
|
12
|
+
* 装到关了自动补 peer 的环境里就是「zod 落在安装闭包之外」。
|
|
12
13
|
*
|
|
13
14
|
* `session/update` 一律走 `onNotification` 自己接,**不用** SDK 的 `ActiveSession`:后者会把
|
|
14
15
|
* 每条更新再排进一个内部队列供 `nextUpdate()` 取,我们从不取,等于给每个会话攒一个只涨不
|