# directionallylocal 中文文档

规范地址：https://npmcn.com/package/directionallylocal/

版本：0\.10\.1
npm 元数据更新时间：2026-11-03T10:20:55.694Z
中文译文更新时间：2026-11-03T12:16:08.561Z
软件包许可：Apache-2\.0

本文由上游 README 机器翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/directionallylocal
原文对照：https://npmcn.com/package/directionallylocal/?lang=original
项目主页：https://directionallylocal.com/
源码仓库：https://github.com/directionally-local/installer

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：493 kB，51 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：^22\.23\.4 \|\| ^24\.22\.1 \|\| \>=26\.12\.1
- 运行依赖：2 个
- 首次发布：2026-10-28T08:39:06.678Z
- 最新版本发布：2026-11-03T10:20:55.318Z
- 已发布版本数：20（近 12 个月 20 个）

## 中文简介

定向本地：在您自己的服务器上后台编码代理。一行服务器安装，以及用于服务器和笔记本电脑的dl命令。

## 安装

```sh
npm install directionallylocal
```

也可以使用：`pnpm add directionallylocal`、`yarn add directionallylocal`、`bun add directionallylocal`

## README

# 定向本地安装程序

编写在您自己的计算机或服务器上运行的代理程序。发送任务；它自己运行 [Hotcell](https://github.com/directionally-local/hotcell) 沙盒，驱动 [自动驾驶仪](https://github.com/directionally-local/autopilot)，并以pull请求的形式返回，即使你的笔记本电脑是关闭的。从 [dl.new](https://dl.new/)。

这是怎么回事： [路线图](https://npmcn.com/package/directionallylocal/docs/ROADMAP.md)。

## 从你的笔记本电脑开始

```sh
npm install -g directionallylocal
dl
```

`dl` 在你所在的文件夹中启动自动驾驶。首先没有什么需要设置的：没有Docker，没有沙盒，没有GitHub令牌。自动驾驶仪自己的第一次运行选择你的供应商，并签署你。每一个 `dl` 是新一届； `dl -c` 继续上一个。

后台任务是需要设置的部分 `dl` 你第一次开口就帮你安排好。 `dl run "task"` 由于无处可寄，它只问了一个问题：

```
  Background tasks keep going when this laptop sleeps.

  Where should they run?
  › Use my own server
    Run them on this computer   needs Docker Desktop or OrbStack
```

-   **使用我自己的服务器** -当你的笔记本电脑关闭时继续运行；需要SSH访问。 `dl` 中列出的主机 `~/.ssh/config` (或需要 `user@host[:port]`)，通过SSH检查它，在那里安装自己，并对这台笔记本电脑进行配对。服务器上没有暴露任何内容： `dl` 通过SSH隧道到达。
-   **在这台电脑上运行** -没有出租；当它休眠时，任务暂停。macOS和Linux，使用Docker；Windows上还没有提供（使用服务器，或者采用Linux路径的WSL 2）。

然后在该位置安装Hotcell和Autopilot，构建沙盒映像，启动服务，请求提供程序（Autopilot的选择器）和GitHub令牌，并发送任务。 `dl setup` 在没有任务的情况下也可以做同样的事情，因为你宁愿先把事情设置好。这台电脑显示的是：

```
  ✓ Checking this computer   macOS 15.1 · Docker Desktop 29.5.2 · Node 24.22.1 · 120 GB free
  ✓ Installing Hotcell (sandbox SDK) + Autopilot (harness)   Autopilot 3.3.0 · Hotcell 0.1.38
  ✓ Building the sandbox image   Node 24 · Autopilot 3.1.2
  ✓ Starting services     start at login · logs in ~/.directionallylocal/logs
  ✓ Connecting            this computer · tasks pause while it sleeps

  [Autopilot's own provider picker, key entry and model picker]

  ✓ Provider              DeepSeek · deepseek-v4-pro · key stays on this computer
  Use your GitHub CLI login (you)? It stays on this computer. [Y/n]
  ✓ GitHub                signed in as you · from the GitHub CLI
  ✓ Storing keys on this computer   DeepSeek · GitHub

  ✓ Ready · fits ~6 agents at once

  · Sending to this-computer: you/app at 1a2b3c4  deepseek-v4-pro
```

### 提供者和模型

对于后台任务，供应商和模型也是Autopilot的选择，所以 `dl` 交给自动驾驶仪自己的选择器(`autopilot connect`)：它的任何提供者（OpenRouter, DeepSeek, OpenAI, Anthropic, Moonshot， Z.ai, Ollama, LM Studio，一个自定义的OpenAI兼容端点，…），它的密钥和它的模型。同样的选择配置您自己的 `autopilot` 命令。 `dl` 将模型保留为该地方的模型(`dl run` 服务器上的会话使用它，除非 `-m` 另一个名字;在这台电脑上 `dl` 是一样的吗？ `autopilot`（所以它使用你在那里选择的东西）并将键推到该位置：

-   **在这台电脑上，** 到Hotcell的密钥存储库中（一个0600文件） `~/.directionallylocal/hotcell`（不是登录Keychain）。
-   **在服务器上，** 通过安装使用的相同SSH通道，将其放入Hotcell的密钥存储库中。

钥匙留在这里。沙盒从Hotcell获得花费上限的网关令牌；你的笔记本电脑永远不会持有某个地方的提供者密钥。无钥匙提供商（Ollama、LM Studio）不存储密钥。稍后使用 `dl provider set`，模型 `dl model`。

### GitHub令牌

后台任务通过GitHub推送分支和打开拉取请求，所以每个地方都需要一个令牌；一个普通 `dl` 塞申斯从不要求。 `dl` 提供GitHub CLI登录(`gh auth token`), _“使用GitHub CLI登录（你）？”它会留在这台电脑上。”_;如果没有，它会在一行中这样说，并请求带有Contents和Pull请求的细粒度令牌读/写。代币也留在原地；沙盒通过Autopilot的存储库范围代理进行推送。

### 然后是一个疗程

`dl setup` 以一行结束， `✓ Ready · fits ~6 agents at once`，并立即打开一个会话。什么裸 `dl` 打开取决于代理运行的位置(默认位置， `dl use`； `--server NAME` 选择另一个)。没有任何设置，它就是一个简单的自动驾驶仪，就像这台电脑一样：

**在这台电脑上， `dl` 就是简单的自动驾驶仪。** 它开始 `autopilot` 在终端中，在您运行它的文件夹中，就像您键入的一样 `autopilot`：每个Autopilot功能都能正常工作(`/resume`， `/clear`， `!` shell命令，MCP服务器)，与您自己的Autopilot配置和提供程序 `autopilot connect` 设置。任何文件夹都可以工作，无论是否为git，并且不会向任何地方发送任何内容：代理直接编辑文件夹，并在终端关闭时停止。每一个 `dl` 是新一届； `dl -c` 是 `autopilot -c`，以及之后的任何东西 `--` 自动驾驶模式(`dl -- --session ID`）.

**在服务器上， `dl` 是一个持续运行的会话。** 自动驾驶仪的屏幕连接到服务器上的对话(`autopilot attach-remote`)，在你关闭终点站后继续运行。在GitHub存储库中，它是该存储库的代码会话(您未提交的更改将随之进行； `--no-local-changes` 发送没有);在其他任何地方，聊天。每一个 `dl` 开始新的对话； `dl -c` 重新打开从该服务器上的此文件夹启动的最新文件。当此文件夹中较早的一个仍在工作或等待您时， `dl` 在连接(`1 earlier session here is still working · dl -c to rejoin`）. 在源不在GitHub上的git存储库中，它会在一行中显示，并打开一个聊天窗口。

**无论哪种方式, `dl run "task"` 是背景，沙盒路径。** 它将任务发送到该位置，在Hotcell沙盒中运行，在终端关闭后继续运行，并以pull请求结束。

```sh
dl                                  # this computer: autopilot here. A server: its session (repository or chat)
dl -c                               # this computer: autopilot -c. A server: the latest session from this folder
dl -- --session <id>                # this computer: pass flags through to autopilot
dl --server box                     # a session on the server named box, whatever the default
dl new                              # the same as bare dl (kept as an alias for a release)
dl run "fix the flaky checkout test"  # background task in a sandbox; your uncommitted changes go along
dl runs                             # tasks and their pull requests
dl pull <id>                        # check one out here
dl status                           # where agents run, their provider, model and versions, what they're doing
```

`dl status` 如果一个地方有比这台笔记本电脑更先进的自动驾驶仪或Hotcell `dl` 针: `! box runs Hotcell 0.1.30, this dl pins 0.1.38 dl update box`。

“适合~N个代理”的数字是一个保守的估计：主机自己的份额（至少1.5 GB或15%）之后剩下的内存，除以每个沙箱1 GB，上限为每个CPU 2个。经过测量的数字将取代它。

### 一个Autopilot和一个Hotcell版本

`dl` 包 `autopilot-ai` 在一个确切的版本（它的会话客户端）和引脚 `hotcell` 完全正确，并在它设置的每个地方安装相同的版本，包括沙盒映像，因此客户机和服务器永远不会漂移，两个人安装相同的版本 `dl` 使用相同的沙盒。 `dl update NAME` 将一个位置带回两个引脚：服务器得到它的 `dl` 首先刷新（安装脚本，在本笔记本电脑上） `dl` 版本，所以两端匹配)，然后 `dl up`;这台计算机重新运行它的安装程序。设置服务器安装这台笔记本电脑 `dl` 版本也在那里，从来不是npm的最新版本。当笔记本电脑是自己的 `dl` 在npm之后， `dl update` 用一个修复它的命令就可以这么说。

## 命令

`dl` 是英文的缩写 `directionallylocal`;这两个工作。

### 在你的笔记本电脑上

| 命令 | 它是做什么的 |
| --- | --- |
| `dl` | 与代理交谈：每次一个新的会话。没有任何设置，很简单 `autopilot` 在这个文件夹中（它的第一次运行选择提供程序）；没有安装任何东西。在这台电脑上：简单 `autopilot` 在这个文件夹，任何文件夹，与您自己的Autopilot配置(`dl -- ARGS` 传递ARGS给它)。在服务器上：在GitHub存储库中，该存储库的代理会话；别的地方，聊聊天；当你离开时，它还在运行。 |
| `dl -c`， `dl --continue` | 在这台电脑上， `autopilot -c`。在服务器上，重新打开从该文件夹开始的最新对话。 |
| `dl setup` | 设置或修复运行后台任务的位置。可以安全地重新运行。 `--identity FILE` 指定要使用的SSH密钥。 |
| `dl new` | 和bare一样 `dl`这里有一个新的会议。作为释放的别名。 |
| `dl status` | 你的代理在哪里运行，他们的供应商、型号、Autopilot和Hotcell版本（在这台笔记本电脑的引脚旁边），以及他们在做什么。在任何地方工作。 |
| `dl connect URL` | 连接到别人设置的服务器；批准它显示的代码。 |
| `dl run "TASK"` | 在沙箱中运行任务，在后台，从GitHub存储库内部；它以pull请求结束。Ctrl-C停止观看，而不是停止任务。第一次，它询问任务在哪里运行并设置。 |
| `dl runs` | 您的任务及其拉取请求。 `--json` 为脚本。 |
| `dl watch ID` / `dl cancel ID` | 完成一个任务，或者停止一个任务。 |
| `dl pull ID` | 在这里查看任务的分支。 |
| `dl preview ID` | 使用Serverless Objects在服务器上部署任务的Workers分支，并在这里通过SSH隧道打开它。 |
| `dl servers` | 代理运行的地方。 `dl servers rename OLD NEW`， `dl servers remove NAME`。 |
| `dl use [NAME]` | 任务和裸露的地方 `dl` 不 `--server`。没有名字，显示它。 |
| `dl provider` | 每个地方的提供者和GitHub令牌。 `dl provider set` 在Autopilot列表中选择另一个供应商、密钥和型号； `dl provider github` 替换GitHub令牌。 `--server NAME` 选好地方。 `dl keys` 是同一个命令。 |
| `dl model [ID]` | 一个地方的任务和会话模型。没有ID，自动驾驶仪自己的模型选择器。 |
| `dl update [NAME]` | 更新一个地方的Autopilot， Hotcell和sandbox图像到版本 `dl` 别针。通过SSH的服务器（它的） `dl` 首先，这台电脑就位。 `--wait` 等待正在运行的任务，而不是请求；由于没有终端，它无论如何都要等待。 |
| `dl local status` | 在此计算机上运行的代理：正在运行？，在哪里，有多少适合。 |
| `dl local uninstall [--purge]` | 停止并移除它们。 `--purge` 也删除键和数据。 |

运行选项: `--server NAME`， `-m/--model MODEL`， `--repo OWNER/NAME`， `--detach`。

### 在服务器上

以root用户运行这些文件。 `dl` 它本身显示了这是什么，它是否健康，连接的笔记本电脑和运行。

| 命令 | 它是做什么的 |
| --- | --- |
| `dl up` | 安装或修复一切。重新运行安全：它保留您的密钥和生成的秘密，并跳过已经完成的工作。 |
| `dl up --dry-run` | 打印什么 `up` 会改变，不改变任何东西。 |
| `dl connect-laptop` | 如何连接笔记本电脑，以及在浏览器中批准它的链接。 `dl connect-laptop CODE` 批准笔记本电脑显示的代码。 |
| `dl laptops` | 连接笔记本电脑。 `dl laptops remove NAME` 断开一个。 |
| `dl runs` | 正在运行或已完成的任务及其拉取请求。 |
| `dl logs [hotcell|autopilot] [-f]` | 服务的日志。 |
| `dl preview ID [--remove]` | 将任务的分支部署为预览，或者停止它。需要 `DL_PREVIEWS_BUCKET`。 |
| `dl previews` | 实时预览：任务、端口、分支。 |
| `dl doctor` | 检查每个部件，并对每个故障进行修复；提供商的路由必须在Hotcell中处于活动状态。 |
| `dl keys [set <provider>|github]` | 设置了哪些键，或者替换一个键（隐藏输入）。任何自动驾驶仪提供商id (`openrouter`， `deepseek`， `openai`， `ollama`,……);定制的需要 `--base-url URL` (和 `--auth-header H --auth-format F` 当它不是承载时)。 |
| `dl status` | 显示已安装的版本以及访问服务器的位置。 |
| `dl uninstall` | 删除服务和软件，但保留配置和数据。添加 `--purge` 要删除这些，再加上服务帐户和沙箱映像。 |

### 无人值守安装

将答案设置为环境变量： `DL_TAILSCALE_AUTH_KEY`， `DL_PROVIDER` (提供者id； `openrouter` （未设置时）用 `DL_PROVIDER_API_KEY` (和 `DL_PROVIDER_BASE_URL` 对于一个提供商，Hotcell没有内置路由； `DL_OPENROUTER_API_KEY` 是OpenRouter的缩写)，和 `DL_GITHUB_TOKEN`。 `DL_ACCESS` 选择如何到达服务器： `tailscale` (默认), `loopback` （仅限这台机器），或者 `ssh` （笔记本电脑的设置使用）。 `DL_SKIP_CREDENTIAL_CHECK=1` 跳过离线安装的在线密钥检查。

笔记本电脑的设置通过SSH驱动服务器 `dl up --access ssh --answers-stdin --events json`，它将答案作为一个JSON对象放在stdin (`{"provider": {"id", "baseUrl", "apiKey", "apiKeyEnv", "authHeader"?, "authFormat"?}, "githubToken"}`;旧的笔记本电脑 `"openrouterKey"` 仍然可以工作)，并将进度报告为JSON行。它运行两次：一次用于安装，使用 `{}`一次是用钥匙，在自动驾驶仪的选择器之后。 `dl up --needs` 回答这个问题的报告仍然缺乏，没有任何改变。服务器将提供程序写入Aster的 `aster.json` 作为 `"provider": {"id", "baseUrl", "apiKeyEnv"}` 与 `"models": "catalog"`。

## 单行安装

用于笔记本电脑或服务器：

```sh
curl -fsSL https://directionallylocal.run | sh
```

**在笔记本电脑上** （macOS或Linux，如您所愿），它会安装 `dl` 成 `~/.directionallylocal` 没有sudo：当你的Node.js足够新（22.23.4+,24.22.1+或26.12.1+）时，它会使用你的Node.js，否则它会从nodejs.org下载Node.js 24到同一个文件夹中，并根据其发布的SHA-256进行检查 `dl` 独自一人（你的壳） `node` 保持原样)。它增加了 `~/.directionallylocal/bin` 到shell启动文件中的PATH (`.zshrc`， `.bashrc` 或 `.bash_profile`、鱼的 `conf.d`,否则 `.profile`)和开始 `dl` 在你运行它的文件夹里。管道化的脚本不能更改运行它的shell的PATH，所以当 `~/.local/bin` 或 `~/bin` 已经在PATH上了吗 `dl` 在那里, `dl` 在同一终端工作；否则，它会显示要运行的一行(例如 `source ~/.bashrc`)，当你第一次离开的时候 `dl`． 新的终端总是有它。 `DL_NO_START=1` 跳过开始 `dl`， `DL_NO_MODIFY_PATH=1` 让您的启动文件单独存在，并且 `DL_HOME=DIR` 安装在其他地方。 `dl local uninstall --purge` 保持 `dl` 本身。

**在服务器上** (Ubuntu或Debian，作为根用户： `curl -fsSL https://directionallylocal.run | sudo sh`)，如果需要，它会安装Node.js `directionallylocal` 全局，并运行 `dl up`． 笔记本电脑的设置使用相同的脚本通过SSH引导服务器，使用 `DL_INSTALL_ONLY=1` 还有笔记本电脑自己的 `dl` 版本 `DL_VERSION`。

哪一个是：当它在Linux上以root身份运行时，当笔记本电脑的设置运行它时(`DL_INSTALL_ONLY=1`)，或者在Linux机器上 `dl up` 已经成立；其他的都是笔记本电脑。就是这条线 `dl` 在没有安装服务器的机器上，root获得服务器的指令，而其他人则获得笔记本电脑的指令。 `DL_MODE=server` 或 `DL_MODE=laptop` 覆盖它。

## 它在服务器上设置了什么

-   **Node.js 24 LTS** 如果Node缺少或缺少CVE-2026-111497的修复程序（接受22.23.4+,24.22.1+和26.12.1+）。来自NodeSource的节点安全版本被添加到Ubuntu的自动更新中，否则会跳过它们。删除 `/etc/apt/apt.conf.d/52directionallylocal-nodejs` 选择退出。
-   **码头工人,** 如果没有，再加上一条规则，使沙箱远离云元数据端点。Docker不会自动更新，因为它的repo会发布重大升级，重启Docker守护进程可能会停止运行沙箱。
-   **来自npm的Hotcell和Autopilot，** 下 `/opt/directionallylocal/releases/<versions>`, `current` 指向活动释放。
-   **三个系统单位：** `hotcell.service` （沙箱和凭据网关，在环回）和 `autopilot.service` （与笔记本电脑配对的API） `127.0.0.1:4096`)，每个账户都有自己的非特权账户，加上 `directionallylocal-metadata-block.service`，沙盒的防火墙规则。只有在使用Tailscale访问时，Tailscale Serve才会公开API。
-   **沙盒图像** 内置了Node、git、Python和Autopilot运行时。
-   **配置** 在 `/etc/hotcell`， `/etc/autopilot` 和 `/etc/directionallylocal`，仅由root和匹配的服务帐户可读。数据存在于 `/var/lib/hotcell` 和 `/var/lib/autopilot`。

支持：Ubuntu 24.04和22.04和Debian 12，在x86\_64或arm64上，至少有4gb的RAM和15gb的空闲 `/var`。

## 安装脚本的地址

`site/` Cloudflare Worker是做什么用的 `https://directionallylocal.run`． 它 `install.sh` 来 `curl` 在裸域(和 `/install.sh`)，将浏览器发送到directionallylocal.com，而不提供任何其他服务。子域的 `directionallylocal.run` 是用户的即时地址，并且域名在公共后缀列表中，因此Worker永远不会设置cookie。将其部署为 `npx wrangler deploy -c site/wrangler.toml`。

`site/wrangler.jsonc` 是cell和Serverless Objects读取的可移植配置； `site/wrangler.toml` 只使用cloudflare `routes` 和 `workers_dev`． 安装脚本签入为 `site/install-script.ts` 所以Worker没有非javascript的导入；用 `npm run sync:site-script` 后编辑 `install.sh`。 `sobjects build --strict site` 检查Worker是否可移植。名称服务和审批页面的设计已经完成 [`docs/plans/portable-services.md`](https://npmcn.com/package/directionallylocal/docs/plans/portable-services.md)。

## 发展

```sh
npm install
npm test          # node:test through tsx; a simulated server exercises up, doctor, and uninstall
npm run typecheck
npm run build
npm run sync:site-script   # after editing install.sh
```

要使用未发布的Autopilot或Hotcell版本测试整个流程，请设置 `DL_AUTOPILOT_SPEC` 和/或 `DL_HOTCELL_SPEC` 到一个NPM规范或者到一个 `.tgz` （`npm pack` 在他们的结帐处)。当地的设置, `dl up` 在服务器和沙盒映像上构建，然后安装它们而不是 `autopilot-ai@<pinned version>` / `hotcell@<pinned version>`;该发布名为 `dev` 并且在每次运行时重新安装和重新构建，因为开发构建可能已经更改。构建报告的版本最终会出现在状态文件中。

```sh
DL_AUTOPILOT_SPEC=~/autopilot/autopilot-ai-3.1.0.tgz DL_HOTCELL_SPEC=~/hotcell/hotcell-1.5.0.tgz dl
```

## 许可证

apache - 2.0。看到 [许可证](https://npmcn.com/package/directionallylocal/LICENSE)。

## 常见问题

### directionallylocal 是什么？

定向本地：在您自己的服务器上后台编码代理。一行服务器安装，以及用于服务器和笔记本电脑的dl命令。

### 如何安装 directionallylocal？

在项目目录运行 npm install directionallylocal，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 dl、directionallylocal，可以用 npx dl 直接运行。

### directionallylocal 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/directionallylocal 是否存在。

### directionallylocal 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### directionallylocal 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js ^22\.23\.4 \|\| ^24\.22\.1 \|\| \>=26\.12\.1。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### directionallylocal 可以商用吗？

directionallylocal 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### directionallylocal 还在维护吗？

最新版本 0\.10\.1 发布于 2026/11/03（今天）；至今共发布 20 个版本，其中过去 12 个月发布了 20 个；首次发布于 2026/10/28。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

