# Sell Lens **Repository Path**: auralink/sell-lens ## Basic Information - **Project Name**: Sell Lens - **Description**: 获取电商数据助手,浏览器插件会给你当前浏览的电商平台的操作功能 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-28 - **Last Updated**: 2026-10-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: Neo ## README # Sell Lens Sell Lens 是一个 Chrome 扩展,用于采集在电商以及其他网站上展示商品信息,以及其他发掘商机相关功能。 ## 项目结构 ```text ├── manifest.config.ts # Manifest 配置 ├── vite.config.ts # Vite 构建配置 ├── src/ │ ├── background.ts # Background Service Worker │ ├── shared/ # 扩展内共享模块 │ ├── popup/ # 扩展弹窗 │ ├── sidepanel/ # 侧边栏 │ ├── content/ # Content Script │ └── options/ # 设置页 └── public/icons/ # 扩展图标 ``` ## 开发 ```bash # 安装依赖 npm install # 开发模式(支持 HMR) npm run dev # 生产构建 npm run build ``` ## 加载扩展 1. 运行 `npm run dev` 或 `npm run build` 2. 打开 Chrome,访问 `chrome://extensions` 3. 开启右上角「开发者模式」 4. 点击「加载已解压的扩展程序」,选择项目根目录下的 `dist/` 文件夹 ## 本地后台(ctx-background-bridge) sell-lens 不含独立 native host —— 所有后台命令通过 HTTP POST 发送到独立的 `ctx-background-bridge` daemon(`http://127.0.0.1:8766/native`),由 daemon 直连 supabase 管理。 ``` Chrome 扩展 ──HTTP POST /native──► native-host-bridge -daemon │ ▼ 直连 supabase PING / NOTIFICATION / CONTENT_* / SUGGEST_OBSERVATION_CREATE ``` - **daemon 未启动**:fetch 失败,扩展提示「没有连接后台请检查」。不影响扩展其他功能。 - **消息体**:`{sourceId, type, timestamp, payload}`,与 daemon 的 `native.Message` 对齐。 - **鉴权**:daemon 仅接受本地回环(127.0.0.1 / ::1)调用,无需扩展侧签名。 ### 1. 启动 daemon 在 `ctx-background-bridge` 项目下执行: ```powershell # 编译并以前台模式启动 daemon go build -o bin/native-host-bridge.exe . .\bin\native-host-bridge.exe -daemon ``` 或用项目自带的 `scripts/start-server.ps1`。 daemon 会监听: - `:8765` WebSocket(供其他 WS 客户端使用,sell-lens 不走这条) - `:8766` HTTP(含 `/native` POST 端点 + `/health` 健康检查) ### 2. 测试连通性 1. 启动 daemon 2. 扩展 Popup 或 Side Panel 的工具页点击 **Ping Native Host** 3. 期望响应:`PONG` + timestamp ### 3. 扩展权限 `manifest.config.ts` 已声明 `host_permissions: ['http://127.0.0.1:8766/*']`, 授权扩展向 daemon 发起 fetch 请求。无需 `nativeMessaging` 权限。 ## 模块说明 | 模块 | 路径 | 说明 | |------|------|------| | Popup | `src/popup/` | 点击扩展图标打开的弹窗 | | Side Panel | `src/sidepanel/` | 浏览器右侧侧边栏 | | Background | `src/background.ts` | 后台 Service Worker | | Content Script | `src/content/` | 注入到网页的脚本 | | Options | `src/options/` | 扩展设置页 | | Shared | `src/shared/` | 跨模块共享代码(types / storage / native 调用 / messages) | ## 调试 - **Popup**:右键扩展图标 → 检查弹出内容 - **Side Panel**:Popup 中点击「打开侧边栏」,或 Chrome 工具栏侧边栏图标 → 选择本扩展 → 右键检查 - **Background**:扩展详情页 → Service Worker → 检查 - **Content Script**:在目标页面 F12 控制台查看日志 - **Options**:扩展详情页 → 扩展程序选项 - **后台 daemon**:启动 daemon 的终端窗口查看日志;`curl http://127.0.0.1:8766/health` 验证存活 ## 扩展上下文失效 扩展重载(`chrome://extensions` → reload)后,已经打开的页面上的 content script 上下文会失效,访问 `chrome.runtime.*` 抛 "Extension context invalidated"。 扩展代码已用 try/catch 兜住(`safeSourceId` / overlay 回调 / `publishContext` / `SETTINGS_UPDATED` 监听),失败时静默处理。**重载后请刷新所有打开的目标页面** 加载新 content script,即可恢复。