mirror of
https://git.openapi.site/https://github.com/desirecore/market.git
synced 2026-09-05 20:03:43 +08:00
fix(web-access): 修正内置浏览器工具文档与客户端版本门控 (#73)
跟进 desirecore/desirecore#1718 的 Codex review,修掉 web-access v2.1.0 正文中 4 处与真实工具实现不符的地方(均对照 desirecore@origin/dev 源码核实): - 补 market.required_client_version: 10.0.98,避免老客户端把可用的 v2.0 换成调用不存在工具的说明 - BrowserImport 动作名修正:真实枚举 discover/create_plan/dry_run/apply/rollback/list_plans,无 'plan';domains 由 create_plan 消费;planId 前缀 bimp_ - input.wheel 示例补 x/y(schema 硬要求),capabilities 示例补 browser.input.pointer.wheel 并说明显式列表是做减法 - BrowserImport 降级为需额外授权的可选路径:browser.import.* 不在 agentDefault 内且 agentElevated 在工具层零引用,登录态默认改回 L3-fallback CDP skill 2.1.0 → 2.1.1,manifest 1.2.19 → 1.2.20,human-locked 的 en-US 已重新对齐 source_hash。
This commit is contained in:
@@ -13,7 +13,7 @@
|
||||
|
||||
| 场景 | 推荐 |
|
||||
|------|------|
|
||||
| 到达并操作登录态站点(小红书 / B站 / 微博 / 飞书 / 知乎) | **内置浏览器**(配合 BrowserImport 导入 Cookie) |
|
||||
| 到达并操作登录态站点(小红书 / B站 / 微博 / 飞书 / 知乎) | **内置浏览器**(登录态优先走 L3-fallback CDP;仅在已授予 `browser.import.*` 时才用 BrowserImport 导入 Cookie) |
|
||||
| 抽取登录态站点的长正文 | Python Playwright(内置浏览器没有批量取文通道,见下) |
|
||||
| 简单点击 / 滚动 / 截图 | **内置浏览器** |
|
||||
| 多个任务要互不串扰地并行 | **内置浏览器**(一任务一 Space) |
|
||||
@@ -57,9 +57,13 @@ BrowserManage:
|
||||
- browser.navigate.url
|
||||
- browser.navigate.activate-tab
|
||||
- browser.input.pointer.click
|
||||
- browser.input.pointer.wheel # 要滚动加载就必须带上,漏了 input.wheel 会被策略拒绝
|
||||
- browser.input.keyboard
|
||||
```
|
||||
|
||||
**显式传 `capabilities` 就是在做减法**:不传时按 `agentDefault` 全量签发租约,传了就只签这一份
|
||||
列表。所以别照抄示例——把你这次真正要用的动作对应的能力都列全。
|
||||
|
||||
`create_space` 会触发一次用户确认。任务收尾用 `close_session` 释放。
|
||||
|
||||
### BrowserSnapshot
|
||||
@@ -122,23 +126,49 @@ BrowserAct:
|
||||
params: { format: png } # 结果落 artifact store,回执给 artifact.id / sha256 / bytes
|
||||
```
|
||||
|
||||
### BrowserImport(**需人工审批**)
|
||||
### BrowserImport(**需人工审批 + 额外授权**)
|
||||
|
||||
把用户浏览器里的登录态 Cookie 导入当前 Space,替代旧版「attach 用户已登录的 Chrome」。
|
||||
把用户浏览器里的登录态 Cookie 导入当前 Space。
|
||||
|
||||
> **前置条件(先看这里,别直接试)**:`browser.import.discover` /
|
||||
> `browser.import.cookies.inspect` / `browser.import.cookies` 三个能力**不在 `agentDefault` 里**,
|
||||
> 而 `BrowserManage(create_space)` 建的 Agent grant 就是按 `agentDefault` 签的。也就是说
|
||||
> **仅靠 create_space / start_session 走不通 BrowserImport**,必须由 Host/用户侧另行授予 import
|
||||
> 能力(`agentElevated` 或 Workbench 路径)。没有这层授权就别在这条路上耗——**直接回落
|
||||
> L3-fallback(Python Playwright 连用户已登录的 Chrome)**,那是当前更稳的登录态复用方式。
|
||||
|
||||
动作枚举只有这 6 个:`discover` | `create_plan` | `dry_run` | `apply` | `rollback` | `list_plans`
|
||||
(**没有 `plan`**)。完整流程是 `discover → create_plan → dry_run → apply`:
|
||||
|
||||
```yaml
|
||||
BrowserImport:
|
||||
action: discover # discover | plan | apply | ...
|
||||
action: discover # 列出可导入的来源,返回不透明 sourceProfileId
|
||||
```
|
||||
|
||||
```yaml
|
||||
BrowserImport:
|
||||
action: apply
|
||||
planId: bip_xxx
|
||||
action: create_plan # 域名授权、来源、冲突策略都在这一步定死
|
||||
sourceKind: chromium-profile # chromium-profile | firefox-profile | safari-profile
|
||||
# | browser-extension | cookie-file
|
||||
sourceProfileId: <discover 返回的 ID>
|
||||
domains: [xiaohongshu.com] # 必须逐域显式授权
|
||||
conflictStrategy: newer-wins
|
||||
conflictStrategy: newer-wins # keep-target | replace-target | newer-wins | fail-on-conflict
|
||||
```
|
||||
|
||||
```yaml
|
||||
BrowserImport:
|
||||
action: dry_run # 先看命中多少条,再决定要不要真的写入
|
||||
planId: bimp_xxx # create_plan 返回的 ID,前缀是 bimp_
|
||||
```
|
||||
|
||||
```yaml
|
||||
BrowserImport:
|
||||
action: apply # 只认 planId;域名/策略在 create_plan 时已固化
|
||||
planId: bimp_xxx
|
||||
```
|
||||
|
||||
写坏了用 `action: rollback` + 同一个 `planId` 回退;`list_plans` 查当前 Space 的历史 plan。
|
||||
|
||||
解密与过滤全在 Host 侧完成,**Cookie 值不会进入 Agent 上下文或审计日志**。
|
||||
|
||||
### BrowserShare
|
||||
|
||||
@@ -19,7 +19,7 @@ updated_at: '2026-08-06'
|
||||
|
||||
## 推荐流程
|
||||
1. 公开文档(companion 页面/官方文档站点 `feishu.cn/hc/...`)→ WebFetch / Jina
|
||||
2. 用户文档 → 内置浏览器 BrowserImport 导入 Cookie + BrowserAct(tab.navigate) 到达,正文抽取回落 Playwright
|
||||
2. 用户文档 → 内置浏览器 BrowserAct(tab.navigate) 到达(登录态:已授予 `browser.import.*` 才用 BrowserImport,否则直接回落),正文抽取回落 Playwright
|
||||
3. 长期程序化访问 → 申请 OpenAPI access_token,走 HTTP,避免 CDP
|
||||
|
||||
## 推荐选择器
|
||||
|
||||
@@ -18,7 +18,7 @@ updated_at: '2026-08-06'
|
||||
|
||||
## 推荐流程
|
||||
1. 单条公开微博 → 优先尝试 `https://m.weibo.cn/status/<id>`,WebFetch 看是否拿到正文
|
||||
2. 拿不到 → 内置浏览器 BrowserImport 导入 Cookie + BrowserAct(tab.navigate) + BrowserAct(input.click ref) 点"展开",正文抽取回落 Playwright
|
||||
2. 拿不到 → 内置浏览器 BrowserAct(tab.navigate) + BrowserAct(input.click ref) 点"展开"(登录态:已授予 `browser.import.*` 才用 BrowserImport,否则直接回落),正文抽取回落 Playwright
|
||||
3. 用户主页时间线:必须登录,BrowserAct(input.wheel) 触发懒加载
|
||||
|
||||
## 推荐选择器
|
||||
|
||||
@@ -18,7 +18,8 @@ updated_at: '2026-08-06'
|
||||
- xsec_token:详情页 URL 包含 `xsec_token=...`,**通过站内交互生成**——直接拼 URL 容易失败
|
||||
|
||||
## 推荐流程
|
||||
1. BrowserManage(create_space/start_session) → BrowserImport 按域导入 xiaohongshu.com 的 Cookie
|
||||
1. BrowserManage(create_space/start_session);登录态若已授予 `browser.import.*`,用
|
||||
BrowserImport(discover → create_plan[domains: xiaohongshu.com] → dry_run → apply),否则回落 CDP
|
||||
2. BrowserAct(tab.navigate) 打开笔记;列表页用 BrowserSnapshot(semantic) 收 `.note-card` 链接的 ref
|
||||
3. 正文抽取回落 L3-fallback Playwright(内置浏览器的 semantic 快照不含正文,accessibility 在本站会超限)
|
||||
4. 收尾 BrowserManage(close_session);ephemeral Space 不留 Profile
|
||||
|
||||
Reference in New Issue
Block a user