# @edryslabs/edrys-dev 中文文档

规范地址：https://npmcn.com/package/%40edryslabs/edrys-dev/

版本：0\.4\.4
npm 元数据更新时间：2026-11-12T09:45:57.644Z
中文译文更新时间：2026-11-13T07:24:34.218Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40edryslabs/edrys-dev
原文对照：https://npmcn.com/package/%40edryslabs/edrys-dev/?lang=original
项目主页：https://github.com/edrys-labs/edrys-devserver#readme
源码仓库：https://github.com/edrys-labs/edrys-devserver

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

- 包体积（解压后）：159 kB，14 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=20
- 运行依赖：6 个
- 首次发布：2026-10-27T08:39:52.199Z
- 最新版本发布：2026-11-12T09:45:57.185Z
- 近 30 天下载量：2535（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：15（近 12 个月 15 个）

## 中文简介

本地开发 edrys- Lite 实验室: 为 edrys- Lite 服务, 在自己的端口上同步, 每当实验室文件更改时, 更改类

## 安装

```sh
npm install @edryslabs/edrys-dev
```

也可以使用：`pnpm add @edryslabs/edrys-dev`、`yarn add @edryslabs/edrys-dev`、`bun add @edryslabs/edrys-dev`

## README

# 编辑- dev

构建并尝试一个 [红外线](https://github.com/edrys-labs/edrys-Lite) 在你和学生分享之前 用自己的电脑做实验室.

你把你的实验室写成文件`lab.yml`, (中文(简体) ), `edrys-dev` 在浏览器中打开它作为类,每次保存文件时,所有打开的标签中都会更新类. 你工作时不需要账户和部署.

## 快开始

惠璶 [节点.js](https://nodejs.org/) 二十个或更新.

1.  为实验室创建文件夹并创建文件 `lab.yml` 其中:
    
    ```yaml
    name: My first lab
    meta:
      description: Trying out edrys-dev.
    modules:
      - url: https://edrys-labs.github.io/module-markdown-it/index.html
        config:
          content: |
            # Welcome
    
            Edit lab.yml, save it, and watch this text change.
        width: full
        height: tall
    ```
    
2.  在文件夹中启动 edrys- dev :
    
    ```bash
    npx @edryslabs/edrys-dev lab.yml --open
    ```
    
    您的浏览器打开课程 。 在终端中,你会看到两个地址:
    
    ```
    edrys-dev: /home/you/my-lab/lab.yml
      http://localhost:3210/?dev
    class open, share link:
      http://localhost:3210/?/classroom/…
    students join at:
      https://edrys-labs.github.io/?/classroom/…
    ```
    
3.  换个东西进去 `lab.yml` 并拯救我们。 班级自行更新.
    

如果您经常使用 edrys-dev, 请安装一次 `npm install -g @edryslabs/edrys-dev` 然后从刚刚开始 `edrys-dev lab.yml --open`。 。 。 .

别闹了 `Ctrl+C`。 。 。 .

## 在实验室工作

-   **这个 `/?dev` 选项卡是您的.** 这是老师对班级的看法. 保持打开:是标签将您的更改取回到 `lab.yml`。 。 。 .
    
-   **尝试实验室作为一个学生或站.** 在 a 中打开共享链接 _不同_ 浏览器或私人窗口。 在同一浏览器里,你会再次成为老师.
    
-   **让学生从自己的电脑上进来.** 之后再给他们联系 `students join at:`它打开同一个课 [https://edrys-labs.github.io 互联网档案馆的存檔,存档日期2013-12-22](https://edrys-labs.github.io/)所以学生只需要浏览器,而你 `/?dev` 选项卡留在您的计算机上,并不断跟踪 `lab.yml`。在学生加入时继续打开标签:他们从打开该标签的浏览器那里获得课程。 与代理或辅导员,代理聊天在您的 `/?dev` 选项卡在顶部显示此链接,并带有复制按钮。 类的设置( Members, Communications)给出了相同的链接,下面是您的标签的地址,它只在您的计算机上工作. 三事须知:
    
    -   双方必须以同样的方式连接。 无 `--local` 没错 与 `--local` 班级在您的计算机上通过 edrys-dev , 其它计算机无法到达, 因此 edrys-dev 打印没有学生的链接 .
    -   如果您在类设置中选中了 WebSocket 服务器, 链接会携带它(`#comm=…`不要切断这部分.
    -   模块从 `http://localhost:…` (见下文)不装入学生的电脑。 edrys -dev警告你他们.
    
    `--student-url` 将链接指向另一个edrys-Lite站点,例如您自己的副本;它必须使用与edrys-Lite内部edrys-dev相同的连接设置.
    
-   **文件获胜.** 类设置对话框中任何您更改的内容在下次保存时被替换 `lab.yml`。在文件中修改.
    
-   **重新开始是安全的.** 一样 `lab.yml` 重新打开同一类, 因此在继续工作前共享您打开的链接 .
    
-   **误取相报.** 如果该类无法使用您的实验室( 例如 YAML type), 终端打印 `lab error: …`。修复文件并再次保存.
    
-   **离线?** 开始 `--local`。该类随后通过 edrys-dev 本身而不是互联网连接.
    

现有哪些模块以及如何配置这些模块,将在 [edrys- Lite 文档](https://github.com/edrys-labs/edrys-Lite) 编辑 [编辑技能](https://github.com/edrys-labs/skills)。 。 。 .

### 实验室完工后

发布 `lab.yml` 例如,在GitHub 存储器中,您通常会如何部署链接到 [https://edrys-labs.github.io 互联网档案馆的存檔,存档日期2013-12-22](https://edrys-labs.github.io/). Edrys -dev 中没有任何内容最终会出现在文件中.

## 写入自己的模块

如果你还在写一个模块,就把它放进 `modules/` 实验室旁边的文件夹, 每个模块一个子文件夹 :

```
my-lab/
├── lab.yml
└── modules/
    └── my-module/
        └── index.html
```

edrys-dev在下一个端口服务此文件夹(默认情况下为3211). 使用该地址在 `lab.yml`数字 :

```yaml
modules:
  - url: http://localhost:3211/my-module/index.html
```

当您保存一个文件到 `modules/my-module/`,只有那个模块在课堂上重新装入。 收集您模块页面出错后, 一个 AI 代理可以看见( 见下文) .

这些地址只在你的电脑上工作 发布模块(例如在 GitHub Pages 上)并将其真实地址输入 `lab.yml` 在你分享实验室之前.

## 有人工智能探员

edrys-dev可以与Claude Code或GitHub Copilot等AI编码代理合作. 代理编辑 `lab.yml` 对于您,请查看该课是否接受,并可以查看该课:房间,用户,模块及其消息.

### 设置

快速的方式, 对于一个新的实验室:

```bash
npx @edryslabs/edrys-dev init my-lab
```

这使得文件夹 `my-lab` 带有启动器 `lab.yml`,克劳德代码的代理配置(`.mcp.json`VS代码副驾驶(`.vscode/mcp.json`),对代理人的指示(`AGENTS.md`, (中文(简体) ), `CLAUDE.md`),允许代理服务器使用 edrys-dev 并编辑的 Claude 代码设置 `lab.yml` 财务报告和审定财务报表 `modules/` 不每次询问( e)`.claude/settings.json`页:1 `.gitignore`。在一个文件夹中,它保存着其中一些文件。 如果尚未安装 Edries 技能(下面第2步),它会提供为您安装这些技能;如果是,它会在更新版本出炉时更新这些技能. 然后打开您代理的文件夹并写出"启动" .

让你的学生 [辅导员](https://npmcn.com/package/%40edryslabs/edrys-dev/#readme-a-tutor-for-your-students) 还:

```bash
npx @edryslabs/edrys-dev init my-lab --tutor
```

然后,代理开始 edrys-dev 与导师。 家教在你的电脑上需要Claude代码 如果你和副驾驶合作的话 添加 `--tutor-agent codex` 由Codex回答而不是Claude代码。 在已有代理配置的文件夹中, 添加 `"--tutor"` 页:1 `args` 内 `.mcp.json` (和 `.vscode/mcp.json`)你自己,然后重新启动代理.

手执:

1.  创建文件 `.mcp.json` 在您的实验室文件夹中 :
    
    ```json
    {
      "mcpServers": {
        "edrys": { "command": "npx", "args": ["-y", "@edryslabs/edrys-dev", "--mcp", "lab.yml"] }
      }
    }
    ```
    
    如果你在全球安装了干燥剂, `"command": "edrys-dev", "args": ["--mcp", "lab.yml"]` 开始更快.
    
2.  安装 edrys 技能, 因此代理商知道实验室和模块的写法:
    
    ```bash
    npx skills add edrys-labs/skills
    ```
    
3.  开始你的经纪人 在实验室文件夹. **代理商自己开始干燥**不要用手开始 如果文件夹没有 `lab.yml` 然而, Edrys -dev 在那里建立了一个启动实验室。 如果浏览器不打开, 向代理商询问类地址 .
    

### 跟班上的经纪人说话

类标签在其上行有代理聊天按钮(sparkles 图标),在类聊天按钮旁边. 它打开课上右侧的聊天,就像课上聊天一样;拖取其左边缘使其更宽或更窄. 在电话里它充斥着屏幕。 你写的东西直接交给探员 只有你看到这种聊天,不是课堂聊天。 代理可以使用文本回答,也可以使用按钮或复选框来取用.

当班级无法取取你的实验室文件时,比如在打字出错后,聊天中的一通红字便以平话表示,在"Details"下有edrys-Lite的留言. 一旦文件再次装入,它就会消失.

在你的留言下,你看到"等待代理..." 直到代理捡起,然后"想..."。 如果30秒内无事发生,代理人可能不会听. 你的信息一旦得到保存和回答.

有些特工在闲暇时不会自己注意到新消息. 这样的话,开始 `chat` 提示一次 edrys 服务器( 在 VS 代码副驾驶中: 类型) `/edrys.chat`,或 `/mcp.edrys.chat` 在旧版本中),并且代理正在等待您的消息.

聊天被保存在 `.edrys-dev/chats/` 在实验室旁边,所以一个重启的代理可以捡起你离开的地方. 聊天顶端的菜单开始新的聊天或重新打开旧的聊天. 添加 `.edrys-dev/` 给您的 `.gitignore`。 。 。 .

为了安全起见,聊天只接受您自己计算机上类页面的信息. 在您的网络上的其他网站或人不能写给您的代理, 只要你保留 `--host` 默认时.

### 探员能做的

| 工具 |  |
| --- | --- |
| `get_state` | 实验室文件、课堂地址、共享链接(也用于学生)、房间、用户和模块 |
| `goto` | 将您的课程标签移至房间, 或打开学生或站台标签 |
| `chat`, (中文(简体) ), `read_chat` | 在代理聊天中写信给你,读取您的留言 |
| `read_messages` | 模块之间的信件,以及您自己的模块中的错误 |
| `read_module_state` | 模块在一个房间里共享什么 |
| `read_student_chats` | 学生们问辅导员什么,辅导员回答什么 `--tutor`(中文(简体) ) |
| `run_in_module` | 在您自己的模块中运行 JavaScript, 只当您要求时 |
| `wait_for_event` | 等下一场课上发生的事 |

## 你的学生家教

启动 edrys- dev 与 `--tutor`,而您的学生在课堂上方的栏目中得到了一个导师按钮(robot图标). 他们要求的是由你电脑上的AI回答: [克劳德代码](https://claude.com/claude-code) 必须安装和签名于(`claude` 在终端。 与 `--tutor-agent codex`, (中文(简体) ), [代码](https://developers.openai.com/codex) 答案改为( e)`codex login` (第一编) 学生除了班级联系什么都不需要.

-   **它知道实验室.** 老师说 `lab.yml` 每一个问题,所以它总是知道 班级展示的版本。 它提供了提示和解释,而不是整个解决方案.
    
-   **仅为导师注.** 放一个文件 `tutor.md` 旁边 `lab.yml`例如,"任务2是关于Ohm的法律,不要给出数字". 学生不接受这个文件. 努力学习的学生可能仍然让辅导员重复,所以要保守秘密.
    
-   **它看到学生的房间.** 每个问题都有学生房间的模块 比如编辑部的代码 `/?dev` 选项卡。 它不能改变它或运行它。 它没有看到终端输出或屏幕,所以它要求学生贴上这些.
    
-   **它只能回答.** 单独运行 `claude` 没有工具、 MCP 服务器或您的设置。 学生无法到达您的文件、您的外壳或编辑实验室的代理 。 Codex没有"没有工具"的开关,因此edrys-dev关闭了它的每一个工具和你的配置,运行它只读,并放下它仍然使用工具的任何答案. 这是用Codex 0.165检查过的. 如果一个更新的版本不再知道其中的其中一个设置,导师不会给出答案,终端会说原因.
    
-   ** `/?dev` 选项卡传送信件.** 保持开放。 按钮只显示在它存在的时候, 并且只显示在足够新到有它的地方, 在你的电脑和学生的网站上.
    
-   **你在代理聊天时看和切换它.** 您顶上栏的代理聊天按钮( sparkles 图标) `/?dev` 选项卡有一个 Students 视图: 每一个问题和答案, 以及一个开关, 它可以关闭和关闭导师而不再重新启动。 关机的时候,学生们看不到他们的按钮.
    
-   **每个学生都有自己的对话**,接下来是下一个问题。 聊天被保存在 `.edrys-dev/tutor/`,而代理保存着自己每次谈话的副本(Claude Code和Codex在通常会话文件夹中). 你的经纪人可以读出来 `read_student_chats` 告诉你学生被困在哪里.
    
-   **限制.** 最多两个答案一次写出;30秒内找不到自由转会的问题得到"导师很忙". 每个学生每小时可以有一个公开的问题,最多20个问题,每个问题最多有2000个字符. 整个班级每个小时最多有200个问题, 而不计那些被拒之门外的人`--tutor-per-hour` 因此,学生不能用新名字越过限制并使用您的账户。 当班级到达时,终点站和"学生观"都这么说.
    
-   **费用.** 每个问题都使用账户 `claude` 或者说 `codex` 已签入。 用个人计划(Claude Pro/Max,ChatGPT)回答学生,可能会打破其条款,这不会让你的账户提供给其他人. 对于一个班级,使用API密钥:用它开始edrys-dev,只有导师使用,而不是你自己的代理.
    
    ```bash
    ANTHROPIC_API_KEY=sk-ant-... npx edrys-dev lab.yml --tutor
    CODEX_API_KEY=sk-...         npx edrys-dev lab.yml --tutor --tutor-agent codex
    ```
    
    终端说当 edrys-dev 启动时, 支付什么, 例如. `tutor: on (claude, answers paid with API key from ANTHROPIC_API_KEY)`。用密钥, Claude 以最小模式运行(`--bare`)),它只取出密钥,从不登录. 代码读取 `CODEX_API_KEY`没有 `OPENAI_API_KEY`。 。 。 . `--tutor-model` 选择更便宜的模型,例如:. `--tutor-model haiku`。 。 。 .
    
-   **隐私.** 学生们被告知,在你的计算机答案上有一个AI,你可以读取聊天. 问答在学生浏览器和你的分页之间加密,在每个连接上. 其它班级成员无法读取,转发班级的WebSocket服务器也无法读取.
    

## 选项

```
edrys-dev [lab.yml] [options]
```

| 选项 | 默认 |  |
| --- | --- | --- |
| `[lab.yml]`, (中文(简体) ), `-i, --input <file>` | `./lab.yml` | 实验室文件, YAML 或 JSON |
| `-o, --open` | 关 | 打开浏览器中的类 |
| `-p, --port <port>` | `3210` | 如果选中, 则使用下一个自由端口 |
| `--local` | 关 | 通过 edrys-dev 而不是互联网连接班级; 工作离线 |
| `-m, --modules <dir>` | `./modules`,如果它存在 | 带有您自己的模块的文件夹 |
| `--student-url <url>` | `https://edrys-labs.github.io/` | 学生链接中的 edrys-Lite 网站 |
| `--tutor` | 关 | 学生的辅导聊天,由计算机上的AI代理回答 |
| `--tutor-agent <claude|codex>` | `claude` | 回答的代理人: Claude 代码或代码x |
| `--tutor-model <model>` | 代理默认值 | 家教使用的模型 |
| `--tutor-per-hour <n>` | `200` | 整个班的辅导员每小时回答问题 |
| `--host <host>` | `127.0.0.1` | `0.0.0.0` 让您的网络上的其他人打开课程(以及 `--mcp`,写信给你的经纪人) |
| `--mcp` | 关 | 用于 AI 代理; 设置为 `.mcp.json`,见上文 |
| `-h, --help` |  | 显示帮助 |

## 解决问题

-   **`no lab file at …`**: edrys-dev 寻找 `lab.yml` 在当前文件夹中。 在实验室文件夹中启动, 或者给出路径 : `edrys-dev path/to/lab.yml`。 。 。 .
-   **分享链接打开我作为老师.** 在另一个浏览器或私人窗口中打开.
-   **我对设置的更改都不见了.** 改为: `lab.yml` 在每一个拯救。 把它们放进档案里.
-   **班级不连接/没有互联网.** 尝试 `--local`。 。 。 .
-   **学生见一空课.** 留着吧 `/?dev` 选项卡在他们加入时打开。 请检查access-date=中的日期值 (帮助) `#comm=…` 最后,你没有开始 `--local`设置的站点 `--student-url` 必须使用与 edrys-dev 的 edrys-Lite 相同的连接设置.
-   **与3210不同的港口.** 另一个程序使用;edrys-dev取下个免费的. 终端显示地址.
-   **经纪人在聊天时不回答.** 请检查access-date=中的日期值 (帮助) `.mcp.json`,如果它不醒来 自己,启动 `chat` 快捷键(见上文).

## 发展

努力研究Edrys-dev本身:

```bash
npm install
npm run build    # tsc → dist/
npm test         # builds, then runs test/*.test.js
```

零件如何互相交谈:

```mermaid
flowchart LR
  lab[lab.yml] -- watch --> srv
  mods[modules/] -- watch --> msrv["module server :3211<br/>(module pages + error script)"]
  subgraph srv ["edrys-dev :3210"]
    direction TB
    static["edrys-Lite dist + reload.js"]
    api["/edrys-dev/lab · events · reload · bridge · module-error<br/>chat · tutor · link"]
  end
  srv -- "reload-lab, reload-module, tutor answers (SSE events)" --> tab["class tab /?dev"]
  tab -- "GET lab, republish signed, tutor answers" --> room((class))
  tab -- "state, messages, replies, tutor questions (POST bridge)" --> srv
  msrv -- module frames --> tab
  msrv -. "errors (POST module-error)" .-> srv
  srv -- "reload (SSE)" --> peers
  room -- "default transport, or --local on :3210" --> peers[student / station tabs]
  peers -- "tutor questions" --> room
  room -- "tutor questions" --> tab
  agent[AI agent] <-- "MCP over stdio (--mcp)" --> srv
  srv <-- "question in, answer out (--tutor)" --> tutor["tutor: claude or codex<br/>without tools"]
```

-   `index.ts` 读取选项并启动服务器,然后 `--mcp` mCP 服务器 (`mcp.ts`) (中文(简体) ).
-   `server.ts` 服务 Edrys-Lite, 看着实验室(`watch.ts`)和对课表的交谈: 赛事在SSE上展开, 课表的报告会回来 `POST /edrys-dev/bridge`。 。 。 .
-   在课堂上, edrys -Lite自己的 `DevBridge` (单位:千美元)`src/ts/DevBridge.ts` 在 edrys-Lite 中,活动与 `?dev`)加载并重置实验室并报告班级. `GET /edrys-dev/lab` 并告诉它那里代理聊天的哪些观点(`chat: {agent, students}`); Edrys-Lite 然后显示其 `AgentChat.vue` 抽屉,它说话到 `chat.ts` (代理视图, `/edrys-dev/chat`和 `tutor.ts` (学生视野, `/edrys-dev/tutor`)在服务器上,然后 `/edrys-dev/link/events` 为学生的链接.
-   edrys-dev 添加 `views/reload.js` 到页面:当本地模块改变时,学生和站点标签再次加载.
-   `tutor.ts` 回答学生 `--tutor`课表会把他们的问题传到桥上, `tutor.ts` 运行 `claude` 或者说 `codex` 每一个都不用工具,答案作为事件回到分页,通过班级发送给学生.
-   `modules.ts` 为下一个端口的本地模块服务,并将错误报告器添加到其页面上.
-   `sync.ts` yjs 同步为 `--local`在edrys-dev自己的港口上.

edrys- Lite 来源于 npm 为 [`@edryslabs/edrys-lite`](https://www.npmjs.com/package/@edryslabs/edrys-lite),被固定在一个版本上: `dist/` edrys-dev是服务。 尝试修改 edrys-Lite, 构建它(`npm run build` 并链接到退出 `npm install ../edrys-Lite`; 之后再次将已出版的版本收起. 也一样 [`@edryslabs/websocket-server`](https://www.npmjs.com/package/@edryslabs/websocket-server),可选择的依赖性,仅 `--local` 用户.

出版人: [`.github/workflows/publish.yml`](https://npmcn.com/package/%40edryslabs/edrys-dev/.github/workflows/publish.yml)数字 : `npm version <version>` 财务报告和审定财务报表 `git push --follow-tags` 打开 `main`。标记匹配的工作流程检查 `package.json`,运行测试,发布到npm(如: `0.5.0-dev.0` 下划线 `next` 标记, 任何其它 `latest`)并创建了 GitHub 发布.

问题和牵引请求: [https://github.com/edrys-labs/edrys-devserver 互联网档案馆的存檔,存档日期2013-12-22](https://github.com/edrys-labs/edrys-devserver)

## 许可证

[麻省理工学院](https://npmcn.com/package/%40edryslabs/edrys-dev/LICENSE)。MCP服务器和代理聊天跟踪 [Lia 脚本开发服务器](https://github.com/LiaScript/LiaScript-DevServer) (麻省理工学院).

## 常见问题

### @edryslabs/edrys-dev 是什么？

本地开发 edrys- Lite 实验室: 为 edrys- Lite 服务, 在自己的端口上同步, 每当实验室文件更改时, 更改类

### 如何安装 @edryslabs/edrys-dev？

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

### @edryslabs/edrys-dev 支持 TypeScript 吗？

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

### @edryslabs/edrys-dev 支持 ESM 还是 CommonJS？

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

### @edryslabs/edrys-dev 需要什么版本的 Node\.js？

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

### @edryslabs/edrys-dev 可以商用吗？

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

### @edryslabs/edrys-dev 的下载量有多少？

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

### @edryslabs/edrys-dev 还在维护吗？

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

