Commit Graph

6 Commits

Author SHA1 Message Date
2e15720442 fix(web-access): 门槛降回 10.0.98——#77 让新装客户端整个失去浏览器能力 (#78)
真机测试发现的回归,由 #77 引入。

## 现象

全新安装的 10.0.99 客户端上,`BrowserManage` / `BrowserAct` / `BrowserSnapshot`
**完全不存在**——Agent 用 `ToolSearch` 也找不到。它们是 hidden 工具,靠 web-access
技能解锁,而该技能压根没被装上。

## 因果

`sync/builtin-skill.ts:171`:本地不存在 + 客户端版本低于 `required_client_version` →
记 `skippedIncompatible` 直接 return,**不新装**。

#77 把门槛提到 10.0.100,而 **10.0.100 尚未发布**——于是所有新装的 10.0.99 及以下客户端拿不到整个
web-access,连带失去全部内置浏览器能力。

已装 2.1.1 的老用户不受影响(`:207` 那条分支保留本地兼容旧版,不更新成用不了的新版)。

## 判断失误

#77 的理由是「不提门槛老客户端会拿到教它们用不存在能力的说明」。顾虑本身成立,但两害量级差了一个数量级:

| | 后果 |
|---|---|
| 门槛低 | 文档里几条说明超前,Agent 试一次失败、换个路子——**能力还在** |
| 门槛高 | **整个技能不存在**,Agent 连试都没得试 |

## 修法

门槛降回 10.0.98,超前的四条能力改用行内「需
10.0.100+」标注,并写明老版本上的替代做法。老客户端既拿得到技能,也不会被文档误导。`version` 2.2.0 → 2.2.1。

---

Regression from #77 found during real-machine testing: raising
`required_client_version` to an unreleased version made the whole skill
fail to install on fresh clients, taking all built-in browser tools with
it.

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-08-07 23:54:22 +08:00
f104d18165 feat(web-access): 截图像素直接给、clip 元素级裁剪、artifact 用绝对路径 (#77)
跟进 desirecore/desirecore#1741 与 #1756(均已合入 dev,随 10.0.100 发布)。

## 变更 / Changes

- **截图像素直接给**:现在作为 image 块进工具结果,视觉模型当场就能看。补一节说明什么时候才需要再 `Read`
一次(结果明确写了未附带像素、或需要原始分辨率),避免同一张图在上下文里占两份。同时说明非视觉模型下会明确告知「你看不到它的内容」,此时不要凭空描述画面。
- **元素级裁剪不再需要 `cdp.raw`**:`BrowserSnapshot` 的
`options.clip={x,y,width,height,scale}` 直接支持,`scale` 最大 4(已对照
`command-params.ts:333` 核实)。
- **artifact 改用 `result.artifact.absolutePath`**:原文教的
`${DESIRECORE_ROOT}/...` 在路径展开里根本不认(只认 `~` / `$HOME` /
`$USERPROFILE`),拼出来是相对路径、`Read`
报「文件不存在」;原文给的还是目录,照抄会撞上「路径不是文件」。真机实测两条都踩过。

## 刻意未改 / Deliberately unchanged

「用户真实鼠标会抢控制权」一条**保持原样**——修它的 desirecore/desirecore#1740 尚未合并,现状描述仍然准确。

## 版本门控 / Version gating

`required_client_version` 10.0.98 → **10.0.100**(含上述两个 PR 的最早版本)。market
是运行时拉取的,不提门槛会让老客户端拿到教它们用不存在能力的说明。

---

Follows desirecore/desirecore#1741 and #1756 (both merged to dev,
shipping in 10.0.100). Screenshot pixels now arrive as an image block
directly; element-level cropping no longer needs raw CDP; artifact reads
use the absolute path from the receipt. The 'real mouse steals control'
note is intentionally left as-is because its fix (#1740) is not merged
yet.

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-08-07 23:54:22 +08:00
b2865d501d 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。
2026-08-07 23:54:03 +08:00
af4176bbd7 feat(web-access): 迁移到内置受管浏览器工具(v2.1.0) (#72)
## 变更说明 / Description

### 中文

客户端 v10.0.98(desirecore/desirecore#1596)停用了旧的 `BrowserListTabs` /
`BrowserNavigate` / `BrowserEval` / `BrowserClick` / `BrowserScreenshot`
/ `BrowserScroll` / `BrowserSetFiles` / `BrowserCloseTab` 及其 cdp-proxy
后端,调用会直接返回「该旧 BrowserXxx/cdp-proxy 入口已停用」。而 web-access v2.0.2 的
`provides.tools` 仍声明这批工具——技能激活后注入的是一组必然失败的工具。

本次把 `provides.tools` 换成统一浏览器工具,并同步正文与参考文档:

- `provides.tools`:`BrowserManage` / `BrowserSnapshot` / `BrowserAct` /
`BrowserImport` / `BrowserShare` + 保留 `SitePatternRead` /
`SitePatternWrite` / `LocalBookmarks`
- 中英文 SKILL 正文同步改写(L0 / 能力描述 / 决策树 / 四层策略表 / L3-fast 速查 / 反模式)
- `references/browser-tools.md` 整篇重写为新 API + 实测边界
- 5 份站点经验(小红书 / B站 / 微博 / 知乎 / 飞书)的流程改用新工具
- 版本 2.0.2 → 2.1.0,`updated_at` 更新,i18n `source_hash` 重算

**L3-fast 的定位相应收窄**:内置浏览器负责「到达 + 交互 + 截图 + 隔离」,抽取长正文仍回落 Jina
Reader(公开页)或 Playwright(登录态)——理由见下方实测。

### English

Client v10.0.98 retired the legacy `BrowserXxx` tools and the cdp-proxy
behind them, so web-access v2.0.2 was injecting a set of tools that
always fail. This PR migrates `provides.tools` to the unified browser
tools and rewrites the body, the browser-tools reference, and the five
site-pattern playbooks accordingly. L3-fast is re-scoped to
navigation/interaction/screenshots; bulk text extraction still falls
back to Jina Reader or Playwright.

## 测试方式 / Test Plan

在客户端 v10.0.98 + `electron-embedded` Provider 上实测:

- [x] `provides.tools` 里 8 个工具 ID 全部在 builtin registry 中存在
- [x] 把本 PR 的技能装进 dev 实例,带 `skillIds:['web-access']` 驱动智能体:真实调用
`BrowserManage(create_space)` → `BrowserManage(start_session)` →
`BrowserAct(tab.navigate)` → `BrowserManage(close_session)`,全部 success
- [x] `scripts/i18n/validate-i18n.py` 全仓库通过(中英文标题数一致、source_hash 一致)

文档中记录的边界均来自实测,而非推测:

| 边界 | 实测现象 |
|------|---------|
| 截图前必须 `tab.activate` | 标签页默认停在 `(-10000,-10000,1x1)`,直接截图卡满 30s
deadline 并触发 `browser.host.gone`,之后全部 `BROWSER_TAB_HOST_NOT_FOUND` |
| `page.evaluate` 不是取文通道 | 每次调用需人工审批;字符串/对象返回值被替换为
`[REDACTED:browser-runtime-value]`,仅 number/boolean/null 穿透 |
| `accessibility` 快照真实页面不可用 | example.com 正常返回 StaticText;维基百科条目一律
`BROWSER_RESULT_TOO_LARGE`(2 MB 上限,且 `depth` 参数被宿主忽略) |
| `semantic` 快照不含正文 | 只列 button / input / a 等可交互元素 |

## 风险与回滚 / Risk and rollback

- 纯技能内容变更,无脚本或清单结构改动
- 需要客户端 v10.0.98+;旧客户端装到本版会拿到一组不存在的工具名(旧客户端上原本那批工具也已失效,不构成回退)
- 回滚即 revert 本 PR
2026-08-07 23:53:28 +08:00
xyx
eab5c824a5 fix: replace hardcoded ~/.desirecore paths with ${DESIRECORE_ROOT} variable (#16)
## Summary

- 将所有技能文件中的硬编码 `~/.desirecore/` 和 `$HOME/.desirecore/` 路径替换为
`${DESIRECORE_ROOT}/` 变量
- 递增 manifest.json version 至 1.2.1

## Why

dev 模式下 `DESIRECORE_HOME=~/.desirecore-dev`,硬编码路径导致技能读取错误的端口文件和目录。主仓库的
`variable-substitutor.ts` 会在运行时将 `${DESIRECORE_ROOT}` 替换为实际根目录。

## Test plan

- [ ] `npm run dev` 启动后触发任意技能,确认端口路径解析为
`~/.desirecore-dev/agent-service.port`
- [ ] prod 模式确认路径为 `~/.desirecore/agent-service.port`

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-05-29 15:36:19 +08:00
0100aec989 feat(web-access): v2.0 — Skill-Scoped 工具门控 + cdp-proxy 子模块 + BrowserXxx 工具家族
升级 web-access 技能 v1.1.2 → v2.0.0,与 desirecore/desirecore PR #536 同步。

新增内容(在 i18n 1.1 schema 下保持双语一致):
- SKILL.md / SKILL.zh-CN.md:补充 BrowserXxx 工具家族说明、L3-fast vs L3-fallback
  分层策略(默认 BrowserXxx,复杂场景兜底 Python Playwright)、SKILL 激活前后的
  hidden 工具门控行为、SitePattern 三层学习库语义
- frontmatter 新增 `provides.tools`:声明 11 个 hidden 工具(8 个 BrowserXxx +
  SitePatternRead/Write + LocalBookmarks),客户端按 Skill 激活解锁
- references/browser-tools.md:8 个 BrowserXxx 工具的完整参数与典型用法
- references/site-patterns/ 5 个基线站点模板:xiaohongshu / bilibili / weibo /
  zhihu / feishu,含 _index 总览

manifest.json:stats.lastUpdated 同步到 2026-05-06。

关联:
- 主仓库 PR:desirecore/desirecore#536
- ADR-027 Node CDP 代理子模块(desirecore-docs)
2026-05-06 12:05:39 +08:00