实战 SOP
实战 SOP

三条命令自托管开源 Dots,模型随便换

开源 Dots 自托管 SOP:uv 安装(Windows PowerShell 与 Linux 双路)后一条 uvx 命令拉起(--openrouter-key 必带),浏览器打开 127.0.0.1:8765 即得左对话右实时浏览器的工作台;--model 一键换 OpenRouter 任意模型;进阶四参数逐个讲透——--seed(一人一号可复现)、--profile-dir(跨次保留登录与 Cookie)、--proxy(时区语言跟出口走)、--help(全参数索引);invisible_playwright_mcp 把同一浏览器以 MCP server 形式接进 Claude Code/Codex/Gemini CLI;用 README 原示例(米兰到里斯本逐日查最低票价、没票就说没票)演示「不许编数字」的提示词纪律;末节合规使用边界:遵守目标网站服务条款与当地法规、只自动化自有业务与有权账户、不用于欺诈/抢票/黄牛/批量注册。全部命令与参数来自 README 原文,未经改写。

发布于 2026年10月2日8 分钟阅读
<!-- open-dots-selfhost-sop | sop | 三条命令自托管开源 Dots,模型随便换 -->

官方 DevDay 刚把 Dots 这个名字配上托管版常驻 Agent,GitHub 上几乎同一时间就出现了开源版的身影:feder-cr/dots 创建于 2026 年 9 月 29 日 23:06(UTC),截至 2026 年 10 月 2 日快照已有 2,416 星与 421 次 fork,MIT 许可证,README 末尾用一句原文划清界限:Not affiliated with OpenAI,与 OpenAI 无任何亲属关系。

这篇 SOP 只解决一件事:怎么把开源 dots 在你自己的电脑上跑起来,并且跑顺。全文命令一律取自仓库 README 原文,不改任何参数;文中数字全部来自 2026-10-02 的仓库快照与 README 原文,不掺编造成分。如果你已经在维护 OpenClaw 这类本地优先的自托管 Agent,OpenClaw 2.0 升级迁移 SOP 讲的是那条路线的迁移与升级;本文的 dots 是另一种形态的自托管,两条路线互不替代。

这只 Agent 是什么

三句话讲完。第一句,README 的定位原意:每个 AI agent 都是模型加浏览器,模型可以用一个参数换掉,浏览器才是网站看到的东西。第二句,开源 dots 自带一只真 Firefox 引擎的浏览器,启动时接上 OpenRouter 上任意模型,就是一个能替你操作网页的 Agent。第三句,它不托管在任何人手里,就跑在你本机,界面是本地的一个网页端口。

技术原理层面它为什么值得单独写一篇文章,本文不展开,这里只管把它跑起来。但定位里有一句话值得先咬文嚼字:浏览器才是网站看到的东西。模型再强,任务失败的原因往往不在模型,页面没加载出来、登录过期、点击没落上,全都发生在浏览器里,发生在模型开始思考之前。这就是为什么这篇 SOP 花这么多篇幅讲浏览器相关的参数,而不是讲提示词技巧。

准备清单:一个 key,两处网络,三条纪律

跑之前把三样东西备齐。

其一,OpenRouter 的 API key。dots 启动时必须带 --openrouter-key 参数,模型调用全部走 OpenRouter,所以 key 从 OpenRouter 拿:注册账号后进 Keys 页面创建一个新 key,key 以 sk-or- 开头,README 命令里的 sk-or-... 就是它的占位符。拿到后立刻存进你的密码管理器,别贴进聊天窗口。

其二,一台 Windows 或 Linux 机器。README 官方给了这两条路线,macOS 用户等官方补文档,不要自己脑补。uv 不用提前装,安装脚本会搞定;Python 也不用你管,uvx 会自动处理运行环境,这是后面命令能压到三条的根本原因。

其三,网络能连通三处:astral.sh(装 uv 的脚本)、GitHub(拉 dots 代码)、OpenRouter(模型调用)。首次运行要从 GitHub 拉整个仓库和依赖,任何一处不通,后面全卡,先把网络确认了。

另外立个规矩:这个 key 是你钱包的钥匙。不进 git、不上截图、不进共享文档,踩坑一节还会再说一遍。

三条命令上手:Windows 与 Linux 各三行

两条路线各三行,命令全部是 README 原文,一字未改。

Windows 下开 PowerShell:

powershell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
$env:Path = "$env:USERPROFILE\.local\bin;$env:Path"
uvx --from git+https://github.com/feder-cr/dots dots --openrouter-key sk-or-...

Linux 下开终端:

bash
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
uvx --from git+https://github.com/feder-cr/dots dots --openrouter-key sk-or-...

逐行说清每步在干什么,以及为什么这么设计。

第一行都是装 uv。uv 是 Astral 出的 Python 工具管理器,dots 借它解决「环境从哪来」的问题:你不需要自己装 Python,也不需要建虚拟环境。PowerShell 那行里的 ByPass 只作用于这一次启动的子进程,不改你系统的执行策略,装完即忘。

第二行是把 uv 的安装位置加进当前会话的 PATH。Windows 是把用户目录下的 .local\bin 追加进 Path,Linux 是 source 官方的 env 脚本。这一行只影响当前窗口,如果以后新开窗口找不到 uv 命令,先检查新会话的 PATH。

第三行是真正的启动命令。uvx 会从 GitHub 拉取 feder-cr/dots 这个仓库,在隔离环境里装好依赖,然后执行其中的 dots 命令,--openrouter-key 把你的 key 传进去。sk-or-... 是占位符,换成你自己的完整 key。第一次跑这一行会明显慢,因为要拉代码装依赖,属正常现象,不是卡死。

命令跑起来之后,用浏览器打开 http://127.0.0.1:8765 ,你就到位了。

三条命令里没有一步是手工配环境,这是这条上手路线最值得称道的地方:安装、依赖、隔离全部交给 uv 一家处理,你唯一要提供的是 key 和网络。环境配置越少,出问题时可以怀疑的地方就越少。

8765 页面:左边对话,右边浏览器

README 对这个界面的描述只有一句:对话在左,浏览器在右,实时(The conversation on the left, the browser on the right, live)。

这句话值得单独一节,因为它是自托管与云端托管最大的体验差异。你在左边输入任务,右边那只 Firefox 对每一个动作给出实时画面:去哪个 URL、点了哪里、填了什么、页面回了什么,全程可见。出了问题不用翻日志,直接看它停在哪一步;任务做完,整个执行过程本身就是最好的交付凭证。127.0.0.1 意味着界面跑在你本机;但模型调用仍然会经 OpenRouter 出网,这一点心里要有数。

换模型:只改一个参数

README 原文说得很直接:模型是 OpenRouter 上的任意模型,--model 一个参数就能换。

这是自托管路线最实际的好处。同一个浏览器、同一套任务提示词,模型这一层完全由你决定:想让日常任务便宜点,换低价模型;想让复杂任务更稳,换更强的模型。换法就是在启动命令末尾追加 --model 与 OpenRouter 上的模型名,其他什么都不用动。浏览器行为与模型解耦,正是 README 开篇那句 You can swap the model with one flag 在工程上的落地。

它同时意味着你的成本结构是透明的。模型调用按 token 计费,用什么模型、跑多少任务,账都算在你自己头上;托管订阅则替你打包了这笔账。自托管把决定权还给你,连同算账的责任一起。

进阶四参数:seed、profile-dir、proxy、help

README 提到的参数不多,但每一个都对应一类真实需求,按使用频率讲四个。

--seed:一个 seed 一个身份。屏幕、字体、GPU、时区、语言这些特征互相一致,并且同一个 seed 每次跑出同一个「人」。如果有一类任务需要反复执行、希望每次环境一致,固定 seed 就够了;调试时想复现某次行为,把当时的 seed 拿回来用就能对上。

--profile-dir:让浏览器记住登录与 Cookie,跨次运行保留。需要登录态的任务,查你自己订的行程、管你自己的后台,不该每次重走一遍登录流程。把 profile 固定到一个目录,第二次起它就带着登录态干活。Agent 的凭证与权限该怎么管、各方案边界在哪,本站有一篇 Agent 凭证与权限对比 可以对照着读。

--proxy:出口即身份。挂上代理后,时区与语言会跟随出口所在地。这条参数与 --seed 的身份一致性配合才有意义,README 的设计意图是让各项特征互相印证,而不是单点伪装。也正因为这条参数的存在,你更应该想清楚把它指向哪里、为什么指向那里,合规一节还会回到这个话题。

--help:所有参数的总入口。前三个只是 README 重点介绍的,完整参数列表一条命令看:

bash
dots --help

接进你自己的 CLI:invisible_playwright_mcp

dots 本身是个带界面的完整产品,但它背后的浏览器可以单独拆出来用。同一个组织还有另一个仓库 invisible_playwright_mcp,README 原文说得很清楚:Claude Code、Codex、Gemini CLI 或任何 MCP 客户端,都可以通过它把这只浏览器当作 server 接进去;dots 是这个能力的界面。

对你的日常意味着什么:你在编码 CLI 里让 Agent 干活时,遇到要看网页、点网页的环节,不用再切出去手动代劳,直接用同一只浏览器后端。如果你的 Codex 环境还没接入外部工具,先看这篇 Codex harness 接入 SOP,再回来接这个 server;想理解这类浏览器操作型 Agent 的完整搭建思路,计算机操作 Agent 搭建 SOP 是更好的长篇读物。

示例任务:一句提示词里藏着纪律

README 给了一个示例任务,原文大意如下:去某个 URL,查米兰到里斯本的单程经济舱、一位成人,把下个月 12 日到 16 日每一天的最低价逐日读出来;某天没有票,就说没有票;不许猜数字。

这个任务的写法本身值得学。它把四个要素一次给齐:明确的 URL、明确的筛选条件、明确的时间范围,以及最重要的一条,把模型的幻觉出口堵死。「没票就说没票,不许编数字」这句话看起来朴素,实际上决定了你能不能相信这个 Agent 交付的结果:一个被明确禁止猜数字的任务,返回的每个数字你才敢用。以后你给这只 Agent,或者给任何 Agent,派任务都建议照这个格式写:条件、范围、拿不准时怎么办,一条不缺。模糊的任务不会换来一个谨慎的 Agent,只会换来一个自信的 Agent,而后者更危险:它给每个数字都配上了笃定的语气,你要花双倍时间逐个核对。

合规使用边界

这一节不是免责套话,是这篇 SOP 的一部分,请当成使用前提来读。

第一,遵守目标网站的服务条款与当地法律法规。各网站对自动化访问的态度不同,你的使用场景是否被允许,判断责任在你。

第二,只自动化你有权访问的账户与自有业务。查你自己的行程、管你自己的后台,是这类工具的正常用途;替别人操作账户、越权访问,不在讨论范围内。

第三,不要用于欺诈、抢票、黄牛、批量注册。这些场景不仅违反服务条款,在不少司法辖区还直接触法。

第四,反检测不是无前提的豁免。本文如实介绍了 README 中的技术设计(引擎级指纹、seed 身份一致性、逐键输入的可信事件),这些是中性技术事实;但「页面检不出来」不等于「可以随便用」,工具的合规性永远由使用方式决定。如果有人向你承诺「用了它就不会被封」,把这句话当营销话术处理。

踩坑提示

五条高频提醒,全是常识级,但每一条都有人栽。

其一,首跑慢是正常的。uvx 第一次启动要从 GitHub 拉仓库、装依赖,耗时远长于以后每次,别在第几分钟就动手杀进程。

其二,key 的三条纪律:不进 git、不上截图、不进共享文档。万一怀疑泄露,去 OpenRouter 撤销旧 key 重建一个,代价一分钟,比账号被盗刷便宜得多。

其三,占位符别照抄。命令里的 sk-or-... 必须换成完整 key,原样执行会在模型调用时失败。

其四,两条路线别串门。PowerShell 的命令贴进 Linux 终端、bash 的命令贴进 PowerShell,都会在第一行就失败。Windows 用户注意用 PowerShell,不是老式 cmd。

其五,任务提示词别太省。示例任务那四要素(URL、条件、范围、不许编)是模板,不是修辞。派模糊的任务给 Agent,得到的只能是模糊的结果。

常见问题

Q1: 需要提前装 Python 或配虚拟环境吗?

不需要。README 的路线用 uv 解决一切:安装脚本先装 uv,uvx 再在隔离环境里拉起 dots 及其依赖。你只需要保证网络可达 astral.sh、GitHub 与 OpenRouter,再加上一个 OpenRouter key。

Q2: 能不能用 OpenRouter 之外的模型?

按 README 原文,模型是 OpenRouter 上任意模型,启动必须带 --openrouter-key,换模型用 --model。README 没有提供其他模型接入方式,本文不猜。

Q3: 我的登录态怎么保留?

用 --profile-dir 把浏览器 profile 固定到某个目录,登录与 Cookie 会跨次运行保留。第一次登录之后,后续任务直接带着登录态执行。

Q4: 它能给我的 Claude Code 或 Codex 当浏览器用吗?

可以。同组织的 invisible_playwright_mcp 仓库把这只浏览器以 MCP server 形式提供给 Claude Code、Codex、Gemini CLI 等 MCP 客户端,dots 是它的界面。参数细节用 dots --help 查看。

Q5: 这个项目与 OpenAI 有关系吗?

没有。README 末尾原文声明 Not affiliated with OpenAI,许可证为 MIT。托管版 Dots 是 OpenAI 的产品,开源 dots 是社区独立实现,两者不要混为一谈。

三条命令跑起来后,你第一个派给它的任务是什么?

本文由 AI 辅助生成,经人工审核编辑。最后更新:2026-10-02

常见问题

需要提前装 Python 或配虚拟环境吗?
不需要。README 的路线用 uv 解决一切:安装脚本先装 uv,uvx 再在隔离环境里拉起 dots 及其依赖。你只需要保证网络可达 astral.sh、GitHub 与 OpenRouter,再加上一个 OpenRouter key。
能不能用 OpenRouter 之外的模型?
按 README 原文,模型是 OpenRouter 上任意模型,启动必须带 --openrouter-key,换模型用 --model。README 没有提供其他模型接入方式,本文不猜。
我的登录态怎么保留?
用 --profile-dir 把浏览器 profile 固定到某个目录,登录与 Cookie 会跨次运行保留。第一次登录之后,后续任务直接带着登录态执行。
它能给我的 Claude Code 或 Codex 当浏览器用吗?
可以。同组织的 invisible_playwright_mcp 仓库把这只浏览器以 MCP server 形式提供给 Claude Code、Codex、Gemini CLI 等 MCP 客户端,dots 是它的界面。参数细节用 dots --help 查看。
这个项目与 OpenAI 有关系吗?
没有。README 末尾原文声明 Not affiliated with OpenAI,许可证为 MIT。托管版 Dots 是 OpenAI 的产品,开源 dots 是社区独立实现,两者不要混为一谈。 三条命令跑起来后,你第一个派给它的任务是什么?

相关文章

实战 SOP

block/buzz 自托管部署 SOP:从 Docker 到 agent 入组

block/buzz 自托管部署完整 SOP(与 buzz-hive-mind 热点文成对):本地开发栈(just setup/build/dev)+ 生产单节点(deploy/compose Docker,Postgres/Redis/MinIO)+ 配置(.env:RELAY_URL/BUZZ_RELAY_PRIVATE_KEY/RELAY_OWNER_PUBKEY)+ agent 入组(Nostr keypair NIP-98 签名,buzz-admin 管成员)+ 闭门 relay + 5 FAQ。部署命令全据 README/compose/.env/CLI/ARCHITECTURE,未编造。

2026年8月6日9 分钟阅读
实战 SOP

从读码到上机:DeepSeek 昇腾算子栈三条上手路线

DeepSeek 昇腾算子栈上手 SOP,三条路线按门槛与硬件递进:①无昇腾硬件的读码路线——clone 四仓对照英伟达侧主仓看移植差异,精读 FlashMLA 深度技术报告,CUDA 用户可直接用主仓(融合 kernel 目前仅 CUDA);②昇腾硬件部署——TileKernels 直接 pip install tile-kernels(Python 3.12+、PyTorch 2.13+、TileLang 0.1.15+、Ascend 950 NPU + CANN 9.2.0+)或源码 pip install -e ".[dev]",DeepGEMM-Ascend 源码安装(git clone --recursive、./develop.sh、pip install . --no-build-isolation,CANN 9.20);③DeepEP-Ascend 通信库(git clone + DeepJIT 子模块、ASCEND_HOME_PATH 设置),如实标注根目录无 LICENSE 文件的合规注意与验证栈边界(950DT、CANN 9.2.0、torch_npu 2.13.0rc1)。附硬件/软件门槛总表、常见坑(scaling factor 打包差异、偶数 rank、子模块 recursive)与自查清单;命令与版本号全部来自各仓 README 原文。

2026年10月1日10 分钟阅读
实战 SOP

改一行 base_url 白嫖 500 万 tokens:1.6T 旗舰进 Agent

把 LongCat-2.5-Preview 接进现有 Agent 工具链的三条路线实操 SOP,按门槛递进:①网页直用(longcat.ai 官网登录,对话传图与简单 Agent 任务);②OpenAI 协议接入(base_url 改 https://api.longcat.ai/openai,模型 ID LongCat-2.5-Preview,现有 OpenAI SDK 零迁移);③Anthropic 协议接 Claude Code(ANTHROPIC_BASE_URL / ANTHROPIC_AUTH_TOKEN / ANTHROPIC_MODEL 三个环境变量),Codex、OpenClaw、OpenCode、Kilo Code 同理换 base_url 与模型名。附 1M 上下文与 128K 输出的用法提示、500 万免费 tokens 福利(转述口径)与 Preview 阶段局限(无公开 benchmark、权重未放出、接口可能调整),上线前先小流量验证价格延迟成功率。

2026年9月29日10 分钟阅读