# @dylanpiercey/work 中文文档

规范地址：https://npmcn.com/package/%40dylanpiercey/work/

版本：0\.2\.92
npm 元数据更新时间：2026-11-12T22:25:37.858Z
中文译文更新时间：2026-11-13T02:12:02.255Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40dylanpiercey/work
原文对照：https://npmcn.com/package/%40dylanpiercey/work/?lang=original
项目主页：https://github.com/DylanPiercey/work#readme
源码仓库：https://github.com/DylanPiercey/work

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

- 包体积（解压后）：18.4 MB，979 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=24
- 运行依赖：4 个
- 首次发布：2026-08-12T18:33:08.253Z
- 最新版本发布：2026-11-12T22:25:37.716Z
- 近 30 天下载量：8963（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：317（近 12 个月 317 个）

## 中文简介

代理 Dev 工作空间的 Web GUI

## 安装

```sh
npm install @dylanpiercey/work
```

也可以使用：`pnpm add @dylanpiercey/work`、`yarn add @dylanpiercey/work`、`bun add @dylanpiercey/work`

## README

# 工作

用于代理 Dev 工作空间的自办网络图形界面——桌面和移动 PWA(英语:PWA). 启动多repo工作树工作空间,运行编码代理(Claude Code, Codex, 副驾驶, Cursor, Grok) 或真实终端中的平面贝壳, 审查 diffs 并发送反馈给特工, 并观看公关状态—— 从任何设备.

-   **工作空间** 被命名的 git 工作树目录(每个 GitHub repo, 由共享的光取缓存所克隆,全部在生成的分支上. 创建, 增加/重新移动重置、归档/重置、删除.
-   **会议** —— tmux中真实的 CLIS, 镜像浏览器于 WebSocket (xterm.js) (英语). 会话在服务器中幸存了重新启动和电话锁;代理钩 表面工作 / 等待 / 闲置状态 .
-   **审查** 在工作空间的每个回放中 快速的 diff 视图 线条注释,您可以直接发送到代理会话.
-   **移动第一PWA** ——可安装,并设有触控调节终端(sticky) 键盘切换,d-pad为箭头/tab/ctrl-c,动力滚动.

## 安装(空心机)

新建 Linux 或 macOS 框上的一个命令——安装系统工具 (git, tmux, 为节点- pty 的编译器),, [爱](https://mise.jdx.dev/) + 节点, 和背景服务(系统/启动)

```sh
curl -fsSL https://cdn.jsdelivr.net/npm/@dylanpiercey/work/install.sh | bash
```

已经有节点( 和 git/ tmux) ? `npm i -g @dylanpiercey/work && work setup` 进行相同的减去系统工具。 稍后更新为 `work update` (或 重新运行安装器). 在版本管理器( mise, 作为安装器)下 设置; nvm, asdf, fnm)的工作安装在该节点版本的内部 目录,因此升级或去除节点可以删除与之相关的工作: 新的节点活动,以同样的方式再次安装(`work doctor` 说 (如适用).

## 开发

需要使用 Linux 或 macOS `git`, (中文(简体) ), `tmux`, (中文(简体) ), `gh` (认证),和节点24+. 脚本通过 [爱](https://mise.jdx.dev/) 运行 `pnpm install`GitHub 签名和代理CLI是应用程序的 自己的设置 :

```sh
./scripts/bootstrap.sh
```

## 运行

```sh
pnpm dev                  # http://localhost:7171

# While hacking on work itself, point the background service at a checkout
# (and back at the npm install when done):
cp scripts/work-source.sh ~/.local/bin/work-source && chmod +x ~/.local/bin/work-source
work-source local          # this tree (or: work-source local /path/to/work)
work-source rebuild        # rebuild + restart without rewriting the unit
work-source prod           # global @dylanpiercey/work again
work-source                # status
```

### 从命令行(和特工)

应用程序的每页都有一个 `work` 也指挥,所以一个特工——或 脚本 – 从终端可以使用并设置工作 : `work help` 列出他们. 在一个工作空间, `work branches`, (中文(简体) ), `work session`, (中文(简体) ), `work topic`, (中文(简体) ), `work review`, (中文(简体) ), `work notify` 财务报告和审定财务报表 `work open` (代理人通过 他们自己的CLI的子剂,不是通过工作, `work workspace create`, (中文(简体) ), `work repo add`, (中文(简体) ), `work config get|set` (已选中) 以物配主; `work config schema` 列出他们名单, `work agent|skill|lsp|host` 财务报告和审定财务报表 `work gh login`· ; `work status` 合计 机器上,还有 `work procs` 将每个工作空间端口的链接打印为 用户浏览器会打开它 。 每个命令都用 `--json` (JSON一个人在 永远不要在它下面出现 `--non-interactive`。 。 。 .

### 访问

工作没有自己的登录——它像您一样运行代理和终端,所以 答题 **只有这个机器** 默认( 它监听 `127.0.0.1`) (中文(简体) ). 改为: 从其他设备中找到它, 把它放在终止 TLS 的东西后面 和认证符——一个带有登录的倒置代理符,一个有 Cloudflare 隧道 访问, `tailscale serve` - 告诉大家

-   `WORK_ALLOWED_HOSTS=work.example.com` ——代理服务的名称 (其中包含其工作空间-端口子域). 其他工作拒绝 名称, 也就是阻止其它网页标出自己名称的原因 在您的机器( DNS 重新绑定) .
-   如果代理运行在 **另一个机器**工作必须倾听 其网络 : `WORK_LISTEN=0.0.0.0` 财务报告和审定财务报表 `WORK_TRUSTED_PROXIES=<proxy ip>` (IP或CIDRs,逗号分隔). 工作 然后回答代理和这台机器,拒绝其他人 网络,否则会绕过代理登录. `WORK_TRUSTED_PROXIES=*` 回答任何机器——只在网络上你 信任现在的样子.

安装时设定它们( E)`WORK_ALLOWED_HOSTS=… WORK_TRUSTED_PROXIES=… WORK_LISTEN=0.0.0.0 work setup`(三); `work setup` 让他们在服务 从后起. 一个被拒绝的请求得到一个页面,说明它需要哪个设置. 所有文件(页数、API和 `/term` 服务于单曲 应用端口,所以将整个主机名引导到它.

**分级** 是零配置方式。 在一台机器上登入了Tailscale (1.52或较新), `work setup` 运行提议 `tailscale serve --bg <port>`, (中文(简体) ), 工作时间 `https://<machine>.<tailnet>.ts.net/` 用于您的设备 仅尾网(永不漏斗,它会发布到互联网上), 并将此名称添加到 `WORK_ALLOWED_HOSTS`:用电话打开它 注册到 同一个尾网. `work setup --tailscale` 做它不问和 `--no-tailscale` 跳过问题; `--yes` 独自离开Tailscale的配置 如来相. 一个已经指向工作的服务配置只有它的名字 允许,以及 `work doctor` 说出其中的哪个.

**直接连接.** 在代理、隧道或中继、终端后面 移动到此机器的WebRTC 直接连接 速度快于通过代理服务器的路径( 设置 / 终端 / 直接) 连接: 默认自动, 总是, 或关闭, 每个设备一个设置 。 页数, aPI 和 签入仍然通过您的代理; 设置了直接路径 搭载终端交通 单独加密( DTLS) 至 UDP 端口 `WORK_RTC_PORT` (默认情况下) 当登录时结束。 那个端口由帮手掌握 在使用直接连接时: 从第一个开始,然后在最后一个开始十分钟后离开。 代理侧检查或 日志没有看到直接的终端流量: 翻转特性 关闭( 设置中的每个设备, 或 `WORK_RTC=off` 给机器) 必须 在局域网上,直接路径不需要更多;从另一个网络 (手机)UDP端口必须可以通过您的路由器到达. 设置 → 终端可以允许工作在需要时在路由器上打开它 (UPnP,默认关闭):只有在一个设备没有连接到之后, 被租了,然后被租回来 主机防火墙可以保存设备 也出来,虽然它通常没有(ICE通过一个状态从 大部分的网络,所以工作不说 它直到一个设备失败 在没有东西通过港口时直接连接。 礛 `work doctor` 说它放下了端口,或者可能(只有根可以读取端口) 规则,它从默认判断 并给出命令显示 他们的旨意是: `work setup` 提议添加 这条规则,命名 `work` 故加以清除`--firewall` 加起来 没有问, `--no-firewall` 跳过问题). macOS 的防火墙接受程序而不是端口,所以这里是 节点服务运行 `work doctor` 检查和 `work setup` 让我们进去. `WORK_RTC_STUN` 命名找到此机器的 STUN 服务器 公开地址( Cloudflare 默认为; 无为空) .

**快点 `git status`。 。 。 .** 列出大型Repo未跟踪文件最多 关于什么 `git status` 成本,工作要求它 每一个检查和话题 树枝的活树. 因此,服务打开了 Git 的未跟踪缓存 (单位:千美元)`core.untrackedCache`)在重置设备中保存(`<work root>/.cache`,其 工作树是每个工作空间的检查结果, 之后git再次读取 只有更改的目录; 您的代理 `git status` 获得 也快点 它依赖于目录修改时间,所以它只是 打开工作根为本地文件系统, 并带有精细的时间戳 (不是NFS,SMB,FUSE上架,HFS+或FAT)和git自己的支票通过那里. 套装 `core.untrackedCache=false` 独自一人 `git config --global core.untrackedCache false` 随处取出; `work doctor` 说它是什么.

**远程开放工作空间端口.** 侧边栏链接中的端口芯片 `http://<host>:<port>`,它只在机器可以到达的地方工作 直接 - 在尾网名称下,因为 `tailscale serve` 没有 通配符名称: 有一个芯片到达一个可以监听的 dev 服务器 循环( r)`--host`)),一个回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回 穿过地道,路线 应用端口的通配符主机名及其代理工作——HTTP和 网锁,所以HMR工作——到 `localhost:<port>`。 。 。 . `WORK_PORT_HOSTS` 选择 主机名塑造芯片链接; `sub` 总是被接受, `dash` 仅限 并仅针对三个或三个以上标签的名称:

-   `sub` (默认) : `https://3000.work.example.com`通配符 `*.work.example.com` 路径和覆盖该路径的证书(您自己的 带有 DNS-01 通配符的反向代理; 只有高级的 Cloudflare 证书管理器, 因为通用 SSL 覆盖一个标签 .
-   `dash`数字 : `https://3000-work.example.com`区域下的一个标签,所以 Cloudflare隧道实施免费计划. DNS 通配符匹配整个 标签,所以隧道的公共主机名是 `*.example.com` 指点 应用程序端口,在同一通配符上有一个访问应用程序,所以 端口坐落在与应用程序相同的登录后. 工作忽略了主机名 不要从一个端口开始,所以该区下的其他名称不会受到影响.

工作机器上只有回路端口可以到达, 后面是相同的 认证为应用程序。 API 和终端 Websockets 拒绝外国 `Origin`因此,一个工作空间所服务的页面不能驱动共享的工作 登录 cookie.

## 配置

| 变量 | 默认 | 目的 |
| --- | --- | --- |
| `WORK_ROOT` | `~/work` | 工作空间根 (+) `.cache` 赤色还原) |
| `WORK_DATA_DIR` | `~/.local/share/work` | sqlite db 和服务器状态 |
| `WORK_APP_PORT` | `7171` | HTTP 服务器( 应用程序、 资产和 `/term` 网络语汇) |
| `WORK_ALLOWED_HOSTS` | —— 说 | Hostnames a 代理服务器在它下服务( 见访问) |
| `WORK_LISTEN` | `127.0.0.1` | 听住地址(`0.0.0.0` 每个接口) |
| `WORK_TRUSTED_PROXIES` | —— 说 | 网络允许的代理IP/CIDR(`*`(中文(简体) ) |
| `WORK_PORT_HOSTS` | `sub` | 端口芯片主机名形状 : `sub` 编号 : `dash` (见上文) |
| `WORK_USER` 编号 : `WORK_HOST` | 当前用户/主机 | 分支名称前缀部件 |
| `WORK_BRANCH_PREFIX` | `<user>-<host>` | 整个分支名称前缀, 覆盖部分 |
| `WORK_RTC` | 打开 | `off` 关闭直接连接( 见访问) |
| `WORK_RTC_PORT` | 应用程序端口 | 直接连接的 UDP 端口 |
| `WORK_RTC_STUN` | 云花飞来 | 它们的STUN服务器, 逗号分隔( 空: 无) |

使用面板(和 `work usage`直接从每个窗口读取计划/配额窗口 代理CLI在磁盘上的证书——克洛德, Codex, Cursor, Grok, 和副驾驶 (通过) `gh`'"的标志". 供货商不是签到的 就这么说吧 脚本 等待房间在窗口读取 `work usage --json`,其形状(和 每个字段都意味着什么 `work help usage` 写出.

运行多个 `work` (一台笔记本电脑和一个桌子盒,说) 设置 − 外观给每个人一个名字和一个口音颜色:标签标题,家用屏幕 图标,通知,和应用程序的 铬都带走,所以两个窗口或 两个安装的应用程序不再看起来完全相同.

通过民调刷新公关芯片( 本地驱动通过 `repo-pushed`) (中文(简体) ). 不需要进入 GitHub webhooks .

## 磁盘上的布局

-   `~/work/<slug>-<id>/` 工作空间:每回波产生一棵工作树+ `AGENTS.md` (和 `CLAUDE.md` symlink)对公约进行编码
-   `~/work/.cache/github.com/<owner>/<repo>.git` ——共享赤取缓存
-   `~/.local/share/work/work.db` - sqlite数据库(权威状态)

终端位于一个专用 tmux 服务器中 (`tmux -L work`),活下来的被活活活活活的被活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活 瞬间系统化单元,所以应用程序重启不会杀死您的会话 .

## 常见问题

### @dylanpiercey/work 是什么？

代理 Dev 工作空间的 Web GUI

### 如何安装 @dylanpiercey/work？

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

### @dylanpiercey/work 支持 TypeScript 吗？

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

### @dylanpiercey/work 支持 ESM 还是 CommonJS？

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

### @dylanpiercey/work 需要什么版本的 Node\.js？

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

### @dylanpiercey/work 可以商用吗？

@dylanpiercey/work 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @dylanpiercey/work 的下载量有多少？

根据 npm 官方下载统计，@dylanpiercey/work 在 2026/10/13 – 2026/11/11 这 30 天内被下载 8,963 次，日均约 299 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @dylanpiercey/work 还在维护吗？

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

