oranleads
Verified@oranlens/oranleads · v0.8.0 · UNLICENSED · Web UI
橙客 OranLeads:社媒评论区 AI 获客工作台(DSH 插件)
Install
dsh plugin add @oranlens/oranleads Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Published to npm without a public repository. Inspect the package contents before installing.
Tags
Creators
Readme
橙客 OranLeads · DSH 插件
社媒评论区 AI 获客工作台。用户在 DSH 中填写 npm 包名 @oranlens/oranleads 安装。模型默认使用 DeepSeek Flash;免费体验一次任务,年卡最多授权两台设备。
实现
- Rust 核心负责 SQLite 数据库、行业画像与提示词、预筛、评分与客户合并、授权、导出、备份和数据清理。
- Node Host 负责接入 DSH、浏览器采集、模型调用和任务调度;界面使用 JavaScript。
- 原生模块是必需组件,缺失或加载失败时停止启动。
- 客户端只显示「今天」「客户」「设置」。首次体验引导暂时隐藏;无生意信息时进入设置。
- 切入橙客工作台时自动收起 DSH 左侧栏;已经收起时保持不变,使用期间仍可通过 DSH 原有按钮或快捷键手动展开。宿主没有布局接口时正常打开工作台。
- 失败任务显示原始原因和“AI智能寻客”重试入口,不再作为暂停任务提供“继续”;暂停任务仍可从断点恢复。关键词格式错误时向模型纠正格式并最多重试一次,不绕过任务授权。
- 行业、卖什么、服务地区、客单价、同行五项匿名统计接入商城后端,见 匿名统计与设备授权。
本分支按未发布的新产品维护,不导入旧数据库、旧授权文件或此前实验目录。Node 版本的 main 已保存为 Git 标签 v0.7.0-node。
开发与验证
需要 Node.js 22.19+、Rust 1.95.0 和平台编译工具。原生构建支持 macOS arm64/x64、Windows arm64/x64。
npm ci
npm run build:native
npm run typecheck
npm test
npm run test:native
npm run build -- --production
npm run pack:smoke
Node 测试验证采集、RPC、模型调用、任务编排和原生接口;Rust 测试验证实际授权、SQLite、流水线、去重与恢复。测试不使用真实平台评论或付费模型。
维护和损坏库恢复见 Rust 维护说明。
本地安装
先构建当前平台的原生模块,再运行 ./install.sh。桌面版在 DSH「插件 → 安装第三方插件」中填写本目录路径,安装后重启 DSH。
本地调试(不用反复重装)
npm run build:native:开发用原生模块,不要加--js-integrity。带完整性校验的模块会拒绝改过的 JS,npm run dev启动时会检查并提示。- 在 DSH「插件 → 添加插件 → 安装第三方插件」填写本目录的绝对路径,只需装一次。pnpm 会把它记成
link:,插件直接从本目录加载。装过打包版(.tgz)的要先卸载。浏览器版用./install.sh --dev。 - 改完代码后构建,有三种方式:
- 手动跑
npm run build。 - 用
npm run dev监听改动,自动重新构建。 - 由 Claude Code 修改代码时,
scripts/autobuild.sh作为 PostToolUse hook 运行:源码比构建产物新时才构建,配置在仓库根目录的.claude/settings.local.json,不进 git。
- 手动跑
ui/、client/adapter.js、plugin.json改动:重建client/bundle.js,DSH 自带的 client-hmr 约 0.5 秒内把插件替换进页面,不用刷新。插件内的界面状态会重置,会话和数据不受影响。src/host/改动:重建host/index.js,完全退出 DSH(Cmd+Q)后重新打开生效。native/改动:重新运行npm run build:native,再重启 DSH。
npm run dev 生成的是开发构建,不压缩。发布前仍按下面「打包」一节执行生产构建。
普通用户使用官网三步教程:DeepSeek 账号及余额 → 下载并登录 DSH → 通过 npm 包名安装橙客。
打包
npm pack 构建生产版并检查当前平台安装包。npm publish 还会检查 macOS arm64/x64 和 Windows arm64/x64 四套 release 模块,避免发布缺少原生核心的包。
发布构建带 JS 宿主完整性校验:先 npm run build -- --production,再 npm run build:native -- --js-integrity,把当时 host/client 的 SHA256 编进原生模块;会话打开时 Rust 自定位包目录校验这两个文件,包内 JS 被篡改即拒绝启动(core-integrity-invalid)。开发构建不加 --js-integrity,不影响本地迭代。CI 已按此顺序执行。
GitHub Actions 工作流 Build native npm package 在各平台分别编译和测试,再合并 native/bin/<platform>-<arch>,生成完整 npm 包。包内包含 Host、客户端、浏览器适配资源和原生模块;不包含 Rust 源码、模板源文件、调试符号。
在 Actions 中运行此工作流,完成后下载 oranleads-package 附件,包含 .tgz、体积报告和 SHA256SUMS。工作流支持手动运行,以及 main / feat/client-hardening-ab 分支的相关代码推送;PR 也会验证。附件保留 14 天,不自动发布到 npm。
在 macOS 本机可使用 npm run build:native:all 顺序构建四个平台,或 npm run build:native -- --target win32-arm64 构建指定平台。先通过 rustup target add aarch64-apple-darwin x86_64-apple-darwin x86_64-pc-windows-msvc aarch64-pc-windows-msvc 安装目标。Windows 交叉编译需要 cargo install cargo-xwin --locked、PATH 中的 clang-cl、lld-link、llvm-lib(LLVM);cargo-xwin 首次下载 Microsoft CRT / Windows SDK。每次编译限制为两个并行作业。
四个平台完成后运行 npm run build -- --production、npm run pack:smoke -- --all-targets、node scripts/package-report.mjs,在 native/package/ 生成完整安装包与体积报告。交叉编译不替代 Windows 真机验收。
CloakBrowser 优先使用内置包,否则先从 CDN 下载:https://ui-cdn.ginlongoss.com/cloak-browser;失败后自动切换原 OSS 直连地址:https://ginlong-product.oss-cn-shanghai.aliyuncs.com/oranlens/cloak-browser。每个地址使用独立安装进程,压缩包与 SHA256SUMS 均从同一地址获取,切换时重新下载并重置进度。使用绑定的业务域名访问 CDN,不直接使用 .w.kunluncan.com 的 CNAME 调度地址。可用 CLOAKBROWSER_DOWNLOAD_URL 覆盖基址;显式配置自定义镜像后只使用该镜像,失败时报告错误。下载进程在导入 CloakBrowser 前接收镜像配置,避免依赖提前固定为官方源。镜像与离线打包工具为 scripts/vendor-cloak.mjs,浏览器二进制不进入 Git。
进入插件时检查采集浏览器,缺失则弹窗提示下载安装;浏览器就绪后才可从界面发起寻客。下载弹窗和设置页均显示真实下载字节、总大小、百分比与平均速度;无 Content-Length 时显示已下载量,不伪造百分比。Windows x64 当前版本压缩包约 536 MiB(562 MB),各平台大小不同。下载、校验、解压和就绪分阶段展示,以安装进程成功结束并验证可执行文件为完成依据。进度通过独立安装进程传回,Windows 同步解压不会阻塞 Host RPC。
下载弹窗显示安装目录,桌面版可用“选择文件夹”打开 DSH 原生目录选择器,也可手动输入绝对路径。所选位置自动补上 CloakBrowser 文件夹,例如选择 E:\ 后实际安装到 E:\CloakBrowser,选择已有的 CloakBrowser 或 .cloakbrowser 文件夹时不重复添加。界面显示最终安装目录,保存、下载、启动和重启检测均使用该目录;安装或运行期间不能更改。默认缓存目录和此前保存的安装位置保持沿用,选择新目录不会移动或删除旧目录的文件。
目录保存前会实际创建、写入并清理临时文件来检查权限,已存在的目录不会重复创建。校验失败时保留所选路径并显示错误码,不会自动改用默认目录下载。浏览器安装完成后,设置页“平台账号”卡片仅显示“采集浏览器:已就绪”,不展示目录、下载进度或更改目录按钮。
安装完成后弹窗显示“开始使用”,不再显示无需操作的“应用安装目录”。只有手动修改已就绪浏览器的路径后才显示“保存目录”,保存成功会明确提示。
每个下载地址连续 60 秒收不到数据时中止该次尝试,解压超过 3 分钟或单次安装超过 10 分钟也会报错;CDN 失败会尝试 OSS 备用地址,两个地址都失败才提示重试。下载期间可以后台查看已有客户及编辑设置,平台登录暂时禁用;后台浏览器请求等待同一个安装 Promise。读取进度遇到临时 RPC 错误会提示并继续重连。
首次发起 AI 智能寻客、继续既有任务或开启每天自动找时,需阅读并主动勾选同意“AI 自动采集使用声明与风险提示”。不同意、关闭弹窗或同意记录保存失败均不会启动任务。本地保存声明版本及同意时间,相同版本不重复确认,声明更新后需再次同意。任务引擎和定时器同样检查同意记录,Agent 调用及重启恢复也不能绕过确认。声明正文维护于 src/host/task/consent.ts,涵盖个人学习研究用途、平台授权与规则、隐私和内容权利、账号及费用风险、AI 结果局限、依法保留的责任。
目录
native/src/ Rust 业务核心
native/assets/ 唯一数据库 schema、模板与测试样例
native/bin/ 各平台原生模块及校验清单(构建生成)
src/host/native/ 原生加载、接口类型与 DSH 适配
src/host/collector/ 浏览器与平台采集
src/host/ai/ 模型调用、关键词编排、类型与任务预估
src/host/task/ 任务、进度、节奏和调度
src/host/rpc/ 客户端接口
ui/ 客户端界面
test/ Node 编排、采集及原生接口测试
host/index.js Host 构建产物
client/bundle.js 客户端构建产物
当前验证范围
本地验证环境为 macOS arm64。macOS x64、Windows arm64/x64 的原生模块、真实 DSH 加载与生产 Keygen 全流程仍需在对应环境验收。
数据库与备份使用普通 SQLite,不加密。授权凭据由数据目录里的设备密钥文件加密保护(2026-10-27 起不再使用系统钥匙串)设备密钥存于 core/device.key,年卡凭据 core/license.sealed 与体验/时钟记录 core/ledger.sealed 用它加密;文件只对当前系统用户可读。删除数据目录会重置免费体验。应用内备份恢复仅支持同一设备和系统用户。此前开发版的 SQLCipher 文件不会被覆盖,但需先转换后才能使用。