npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@x1a0f3n9/dsh-web-app

v0.1.7-rc.2

Published

The dsh browser-surface bundle: the web patch layer over dsh-base plus the runtime glue plugin (frontend dist serving, web-surface prompt, bash runtime variables, URL line)

Readme


description: "dsh 的浏览器 GUI:交互式聊天、模型与设置管理、会话历史,供运行 dsh web 表层的用户使用。" kind: "package-bundle"

@x1a0f3n9/dsh-web-app

English | 中文

概述

运行 dsh --profile web,打开提供聊天、模型与设置管理以及会话历史的交互式浏览器 GUI。它使用与其他 dsh 表层相同的模型访问、工具与安全默认值。启动时会打印带认证信息的 URL,通常还会在默认浏览器中打开;SSH 会话和 --no-open 会保留该 URL,供你手动打开。你可以更改端口并允许额外主机,但不能绑定所有网络接口。需要在浏览器中交互式工作时选择本包;一次性的命令行任务应使用 dsh-headless。

目录


使用本包

启动 GUI、打开浏览器,然后开始与 agent(智能体)对话。flag 用于微调本次调用。

启动 Web GUI

dsh --profile web
dsh --profile web --no-open --port 8080

启动后你会看到 dsh web: 行,其根 URL 携带新的进程 token。除非 --no-open 或 SSH 会话抑制,否则默认浏览器会打开该 URL、取得签名 cookie,再重定向到不含认证参数的同一目录。页面加载且你可以与 agent 对话,就说明成功了。两种可预期的失败:前端未构建时,启动会以构建提示停止(checkout 中运行 pnpm run build);浏览器无法打开时,stderr 会打印不含凭据的诊断,但服务器会继续运行——请自行打开已打印的启动 URL。

设置 → 模型显示 DeepSeek,使用 DEEPSEEK_API_KEY。默认模型为 deepseek-official / deepseek-flash(DeepSeek-V41-Flash)。DeepSeek 插件使用 Messages API。

已保存的模型选择覆盖组合默认值。设置卡接受兼容 Messages 的 API 地址与凭据引用。

配置

大多数用户不需要设置这些;命令行 flag 会提供给下面四个设置——--host、--port 与 --trusted-host 来自本次调用,--no-open 仅对本次调用关闭浏览器交接:

| 字段 | 默认值 | 含义 | |---|---|---| | openBrowser | true | 启动后用默认浏览器打开;SSH 启动会抑制它 | | printUrl | true | 启动时打印 dsh web: URL 行 | | surfaceContext | true | 给 agent 提供 GUI 定位上下文,并把 DSH_WEB_URL 暴露给其 shell 命令 | | trustedHosts | [] | 允许从网络访问 GUI 的额外主机 |

生成的配置目录是每个受支持字段及其 JSDoc 的穷尽式真源。 随发行版交付的组合默认禁用 schedule、ui-schedule 和 time-context。

LAN 访问与可信主机

默认情况下 GUI 只接受本机的连接。绑定所有网络接口的部署也会允许 LAN 内的浏览器访问,此时打印的 URL 会附带一个 LAN 地址;--trusted-host 在两种情况下都能添加额外主机。Host 与 Origin 检查控制可达性,token 交换则认证每个 Host API 方法与 WebSocket 流。LAN 地址只在启动时采样一次,因此之后的网络变化不会被感知——重启 GUI 以重新公告。

通过 SSH 运行

通过 SSH 启动 dsh --profile web 时,URL 行仍会打印,但不会为你打开浏览器:本地转发地址由 SSH 客户端或编辑器持有。请在自己的机器上打开转发后的 URL;打印出的 URL 指向远端宿主机 loopback 端点。

按会话的 agent 设置

每个浏览器会话选择一个随发行版交付的 preset(默认 standard)。Agent 预设设置页可更改默认项并编辑预设的子插件;保存结果持久化到 $DSH_HOME/profiles/web/cordis.patch.yml。只有 Host 提供可编辑的 profile 时,Creator 的插件管理工具才会启用。


理解实现

此 bundle 由一层五个文件的补丁和一个运行时胶水插件组成:cordis.patch.yml 承载宿主行和 preset 注册表,每个 presets/<id>.patch.yml 插入一条随发行版交付的 preset 声明,按 dsh.bundle.patch 列出的顺序应用。存储栈与投影缓存来自 dsh-base;Web 叠加层的工作区和消息反馈条目消费共享的 storageDomain 服务。补丁重述 base 有意省略的界面专用值,插入 Web 专用宿主条目和浏览器插件列表,再将 Agent 层移到预设后面。胶水插件负责 dist 服务、信任采样、提示词段落、bash 变量和就绪通知。office-to-pdf 条目为宿主消费者挂载一个延迟创建引擎的 Office 转换提供方,使用此 bundle 的 Desktop 组合也共享该提供方。 转换服务的 Remote 方法负责预览读取授权,Document Preview 负责 Office 查看器和客户端缓存。

patch 语义

patch 会替换目标行的整个 config,因此每个 Web 行都重述自己拥有的每个键:基础行上的 persona 前缀与后缀模板、DSH_TOOLS_MODE PTC mode 开关与 session-query-sqlite 值,随后 insert 添加 Web 宿主行、传输层与浏览器名录。base 以进程级挂载的按 agent 工具行在这里被禁用,由 preset 名录接管;每项宿主层与 preset 层归属决策的理由以行内注释写在 patch 里。

就绪宣告

URL 行与浏览器交接都是就绪信号:监督方一观察到该行就发起 RPC,浏览器一打开就请求页面,因此两者只在 Loader 配置树结算、通过 required 启动检查且 Connection 认证可用后运行——在没有 Loader 的手工构建树中则立即运行。此时 client combo JavaScript 和 source map 仍未物化。可选插件失败不会阻止就绪宣告;required 启动失败或启动中途被释放的树不会宣告任何内容。

LAN 信任采样

resolveLanTrust 在启动时只采样一次网络:loopback 绑定(127.0.0.1)不派生任何 LAN 地址,绑定所有网卡则会加入每个非 internal IPv4 字面量。派生字面量加上显式的 --trusted-host 权威标识组成 /api 浏览器信任栅栏,打印的 LAN URL 始终与该栅栏一致。

源码地图

| 文件 | 职责 | |---|---| | src/index.ts | web-app 粘合插件:dist 解析、LAN 信任采样、提示词段落、bash 变量、URL 行、浏览器交接 | | src/startup.ts | web-startup 提供方:--host、--port、--trusted-host、--no-open、--help | | cordis.patch.yml | Web patch:重述的基础值、Web 宿主行、浏览器名录、preset 注册表 | | presets/ | 每个随发行版交付的 preset(standard、ptc、minimal、cordis)各一条 @x1a0f3n9/dsh-agent-preset 声明,各自一个补丁文件 | | — | 不发布运行时不变式伴生入口;每项贡献(frontend-static 子插件、提示词段落、bashEnv 注册)都会随 fiber 由注册表释放,且每个所属注册表的包负责该关系的不变式;本包不持有需要审计的可变状态。 | | tests/web-app.spec.ts | dist 解析、回退席位、提示词段落、就绪宣告 | | tests/startup.spec.ts | 在真实 Loader 树上的命令行解析 | | tests/trusted-hosts.spec.ts | LAN 信任采样 | | tests/browser-open.spec.ts | 页面可达后的默认浏览器交接 |

不变式归属

不发布不变式伴生入口,因为每项贡献——frontend-static 子插件、提示词段落与 bash 变量注册——都会随 fiber 由注册表释放,且每个所属注册表的包负责该关系的不变式。


进一步探索

当你想深入了解共享核心、浏览器重载流水线或已构建的前端时,阅读以下页面。


模型体验

Harness 源码与 Web 表层上下文

模型看到什么

当 surfaceContext 为 true 时,harness:source 段落标明磁盘上的 Harness 实现,但不会声称它就是工作目录;全局段落 app:web-surface(first-party 顺序 10100,位于可复用指令之后)则向模型说明 GUI:规范的本地 URL、「this page」指代什么、更新约定(重载接收端始终开启;无刷新重载还需要 pnpm run dev:web watcher),以及不要启动替代服务器的指令。DSH_WEB_URL 还会连同描述出现在受管 bash 环境中,每次调用时从运行中的服务器解析。当它为 false 时,这两个段落和该变量都不会注册。

Token 影响

每个会话一行源码说明和一段提示词,外加两行受管环境变量;每个进程内保持恒定。

KV Cache 影响

源码与 Web 段落位于第一方可复用指令之后。工具与配置一致时,不同 checkout 路径或本地端口不会改变前置前缀;不保证提供方复用缓存。

已知限制与延期工作

这些限制告诉你在不常见的环境下会遇到什么——源码 checkout、SSH 会话或严格网络。它们是当前包约束,不是通用的浏览器对比或任务积压。

  • 前端必须已构建——源码 checkout 需要先运行 pnpm run build;dist 缺失时启动会以构建提示停止,且没有从源码直接服务的回退路径。
  • LAN 地址只在启动时采样一次——启动后的网卡变化不会重新公告;打印的 LAN URL 始终与采样结果一致。
  • 只能观察到交接的启动——GUI 只报告浏览器被请求打开,而不是它确实打开了;之后的浏览器退出永远不会上报,打印的 URL 是你的手动回退路径。
  • SSH 会话保留 URL 但跳过浏览器交接——打印的 URL 指向远端宿主机 loopback 端点;SSH 客户端或编辑器必须暴露并打开本地转发地址。
  • BROWSER 覆盖只能来自环境——被发现的 .env 不能设置 BROWSER;只有继承值能为自动交接选择可执行文件。
  • 不支持绑定所有网络接口——出于安全考虑,--host 0.0.0.0 会在启动时被拒绝;请使用默认 loopback 主机。

开发备注

无。

Web 组合包含账号 Remote 控制器和账号设置页面。