openpencil
ZSeven-W
The world's first open-source AI-native vector design tool and the first to feature concurrent Agent Teams. Design-as-Code. Turn prompts into UI directly on the live canvas. A modern alternative to Pencil.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:AITabby/dockyard-dsh
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
A macOS-only account-pool and native provider plugin for DeepSeek Harness (dsh).
Current status / 当前状态: Developer preview · macOS DMG available · Windows EXE is in active development and is not released or verified yet.
Dockyard DSH 把多个官方 OAuth / 官方客户端会话接入 DeepSeek Harness,提供一个统一的账号池、模型目录、额度状态和 provider-native 请求入口。它是 DSH 的原生 bundle/plugin,不需要另起一个代理网关,也不把 provider 逻辑塞进 DSH 核心。
当前包含的 provider 模块:
/billing?format=credits(转发 GetGrokCreditsConfig);若上游只返回周期,剩余值保持未知。如果对应的官方客户端、CLI 或 OAuth 源没有安装、没有登录,Dockyard 会返回明确的 unavailable/degraded 状态;不会用硬编码的账号、模型、版本、套餐或额度伪造可用结果。
/dockyard 命令管理账号和 provider。当前发布版本支持 macOS;Windows EXE 正在制作中,尚未发布或完成完整验证。
macOS 完整功能依赖以下原生能力:
Windows 版本正在补齐 credential store、原生 OAuth 启动器、EXE 打包和真实 E2E 验证。
如果不想手动安装 Node.js、pnpm 或 DSH,可以直接下载自带完整运行时的 macOS 通用 DMG:
也可以在 Mac 上自行构建:
./apps/macos/build-dmg.sh
DMG 内置 Node.js、DSH CLI、完整 web profile 和 Dockyard 插件;双击 App 即可运行,不需要另外安装 Node.js、pnpm 或 DSH。它会在原生 WebKit 窗口中显示内置的 DSH Web profile;OAuth 授权页会交给系统默认浏览器打开。当前构建包含 Apple Silicon 和 Intel 两个架构。详细说明见 apps/macos/README.md。
仍需注意:这是 macOS 专用、当前为本地 ad-hoc 签名的开发预览;某些 provider 的官方 CLI 扫描/兼容性 fallback 仍可能需要对应 CLI,Antigravity 浏览器授权仍需要配置官方 OAuth client 信息。
Dockyard DSH 作为源码 plugin 安装到已有 DSH Web profile 时,才需要先安装 DSH CLI,并确认 dsh 命令可用。
当前上游 DSH CLI 的 npm 安装方式:
# DSH 当前是 developer preview;请使用上游要求的 Node.js 版本。
# 当前上游 package.json 要求 Node 22.19+ 的 22.x,或 Node 24+。
npm install --global @deepseek-ai/dsh
npm install --global pnpm
dsh --version
pnpm --version
上游安装和兼容性变化以 DeepSeek Harness 官方仓库 为准。当前 bundle 已按 @deepseek-ai/dsh@0.1.0-rc.6 验证。
web 是 DSH 自带的完整 Web profile;不要新建只包含 Dockyard bundle 的空 profile,否则不会启动 Web GUI。
dsh plugin --profile web add github:AITabby/dockyard-dsh
dsh web
默认访问 http://127.0.0.1:3080。首次启动可先检查组合配置:
dsh web --dump-config
如需固定版本,建议 pin 到已验证的 commit:
dsh plugin --profile web add github:AITabby/dockyard-dsh#<commit-sha>
当前发布 commit 已提交可运行的 host/client bundle,安装时不执行 prepare,因此 GitHub 直装不需要额外的 allowBuilds 配置。若你 pin 到旧 commit,或 pnpm 明确报告了其他构建脚本,请只在检查源码后按终端提示配置对应 profile 的 pnpm-workspace.yaml。
git clone https://github.com/AITabby/dockyard-dsh.git
cd dockyard-dsh
npm install
npm test # 可选:验证环境
npm run build # 修改 source 或 bundle 过期时需要
dsh plugin --profile web add .
dsh web
要隔离测试、不影响默认 DSH home:
DSH_HOME=/tmp/dockyard-dsh-home dsh plugin --profile web add .
DSH_HOME=/tmp/dockyard-dsh-home dsh web --dump-config
DSH_HOME=/tmp/dockyard-dsh-home dsh web
仓库已提交 packages/dsh-plugin/dist/index.mjs 和 packages/dsh-plugin/lib/client.js;普通用户不需要先运行测试或构建即可使用已发布 commit。
在运行中的 DSH profile 中:
/dockyard status
/dockyard scan [provider]
/dockyard add [provider] [candidateId]
/dockyard login <provider>
/dockyard refresh [provider]
/dockyard models <provider>
/dockyard policy <provider> <manual|sticky_session|round_robin|failover> [accountId]
/dockyard use <provider> <accountId>
/dockyard remove <provider> <accountId>
新增账号流程是 /dockyard login <provider>(直接打开官方浏览器 OAuth);如果要导入已有本机登录态,则使用 /dockyard scan <provider> 后再 /dockyard add <provider>,最后用 /dockyard status 和 /dockyard models <provider> 检查实时状态。
loginDeepControl + /auth/poll;Claude 使用官方网页回调,手动输入时要求粘贴带 state 的完整回调地址或 code#state。DOCKYARD_ANTIGRAVITY_CLIENT_ID 和 DOCKYARD_ANTIGRAVITY_CLIENT_SECRET 提供,仓库不内置凭据;需要浏览器 OAuth 时,先在启动 DSH 的 shell 中设置这两个环境变量(或写入 ~/.zshrc),不要提交到仓库。unknown/null。SECURITY.md,不要提交 token、OAuth 文件、Keychain 值或包含敏感信息的日志。npm install
npm test
npm run build
npm run build:plugin
npm pack --dry-run
发布包的关键内容是:
packages/dsh-plugin/dist/index.mjs # Node/host bundle
packages/dsh-plugin/lib/client.js # browser client bundle
packages/dsh-plugin/cordis.patch.yml # DSH bundle layer
npm pack --dry-run 应只显示发布入口、client bundle、patch、必要的 package metadata 和安全说明。修改 provider source 后,重新执行 npm run build,再提交更新后的构建产物。
packages/core/ 模块生命周期、契约、事件和 DSH route
packages/account-pool/ 账号发现、选择、健康状态和 credential reference
packages/runtime/ 一个共享的 Dockyard runtime
packages/dsh-plugin/ DSH bundle、LLM adapter、命令和 client UI
packages/vault/ macOS Keychain backend
modules/provider-*/ 各 provider 自己的 OAuth、目录、额度和 native transport
tests/ 安全、生命周期、provider 和 runtime 测试
核心原则是:provider-specific 逻辑留在 provider module,账号选择留在 runtime,host 只消费稳定契约。不要在 host 中新增 provider 特判,也不要把动态 provider 数据写成常量。
Dockyard DSH is a native DeepSeek Harness bundle/plugin that connects official OAuth and official client sessions to one shared account pool, model catalog, quota view, and provider-native request path. It does not require a second proxy gateway and it does not put provider-specific branches into the DSH core.
Current provider modules:
/billing?format=credits surface (forwarding GetGrokCreditsConfig); if the upstream only returns a period, the remaining value stays unknown.When an official client, CLI, or OAuth source is missing or not signed in, Dockyard reports an explicit unavailable/degraded state. It does not invent accounts, models, versions, plans, or quota values.
/dockyard command surface.The current release supports macOS. A Windows EXE is in active development and is not released or fully verified yet.
The macOS integration depends on native behavior:
The Windows version is being completed with a credential store, native OAuth launcher, EXE packaging, and real E2E validation.
If you do not want to install Node.js, pnpm, or DSH manually, download the self-contained universal DMG:
Download the latest Dockyard DSH DMG
Or build it on macOS:
./apps/macos/build-dmg.sh
The DMG embeds Node.js, the DSH CLI, the complete web profile, and the Dockyard plugin. Launching the app is enough; no separate Node.js, pnpm, or DSH installation is required. OAuth authorization pages open in the system default browser. See apps/macos/README.md for details. The current build includes Apple Silicon and Intel slices. This is a macOS-only developer preview with a local ad-hoc signature; some provider CLI scan/compatibility fallbacks still require their provider CLI, and Antigravity browser OAuth still requires the official OAuth client configuration.
Dockyard DSH is a DSH plugin, not a standalone agent. This prerequisite applies when installing the source plugin into an existing DSH profile; install the DSH CLI first and verify that the dsh command is available:
# DSH is currently a developer preview. Use the Node.js version required by DSH.
# The current upstream package declares Node 22.19+ on the 22.x line, or Node 24+.
npm install --global @deepseek-ai/dsh
npm install --global pnpm
dsh --version
pnpm --version
Follow the official DeepSeek Harness repository for upstream installation and compatibility changes. The current bundle is verified against @deepseek-ai/dsh@0.1.0-rc.6.
web is DSH's complete built-in Web profile. Do not create an empty custom profile if you want the GUI.
dsh plugin --profile web add github:AITabby/dockyard-dsh
dsh web
The default URL is http://127.0.0.1:3080. To inspect the composed configuration first:
dsh web --dump-config
For a reproducible install, pin a verified commit:
dsh plugin --profile web add github:AITabby/dockyard-dsh#<commit-sha>
The current release commit includes the runnable host/client bundles and does not run prepare at install time, so a direct GitHub install does not need an extra allowBuilds setting. If you pin an older commit, or pnpm explicitly reports another build hook, inspect the source and follow the exact profile configuration printed by the command.
git clone https://github.com/AITabby/dockyard-dsh.git
cd dockyard-dsh
npm install
npm test # optional environment check
npm run build # needed after source or bundle changes
dsh plugin --profile web add .
dsh web
For an isolated test that does not touch the default DSH home:
DSH_HOME=/tmp/dockyard-dsh-home dsh plugin --profile web add .
DSH_HOME=/tmp/dockyard-dsh-home dsh web --dump-config
DSH_HOME=/tmp/dockyard-dsh-home dsh web
The repository commits packages/dsh-plugin/dist/index.mjs and packages/dsh-plugin/lib/client.js, so normal users do not need to run tests or build before using a released commit.
/dockyard status
/dockyard scan [provider]
/dockyard add [provider] [candidateId]
/dockyard login <provider>
/dockyard refresh [provider]
/dockyard models <provider>
/dockyard policy <provider> <manual|sticky_session|round_robin|failover> [accountId]
/dockyard use <provider> <accountId>
/dockyard remove <provider> <accountId>
For a new account, use /dockyard login <provider> to open official browser OAuth. To import an existing local session, use /dockyard scan <provider> followed by /dockyard add <provider>, then inspect /dockyard status and /dockyard models <provider>.
loginDeepControl + /auth/poll flow; Claude uses the official hosted callback and requires a callback URL containing state (or code#state) for manual entry.DOCKYARD_ANTIGRAVITY_CLIENT_ID and DOCKYARD_ANTIGRAVITY_CLIENT_SECRET; the repository does not embed OAuth credentials. Set them in the shell that launches DSH (or in ~/.zshrc), never commit them. Without them, use an existing local/CLI session through Scan or the CLI fallback.unknown/null.SECURITY.md before filing issues. Never commit tokens, OAuth files, Keychain values, or sensitive logs.npm install
npm test
npm run build
npm run build:plugin
npm pack --dry-run
The distributable entry points are:
packages/dsh-plugin/dist/index.mjs # Node/host bundle
packages/dsh-plugin/lib/client.js # browser client bundle
packages/dsh-plugin/cordis.patch.yml # DSH bundle layer
After changing provider source, run npm run build and commit the refreshed artifacts together with the source change.
packages/core/ lifecycle, contracts, events, and DSH routes
packages/account-pool/ account discovery, selection, health, and references
packages/runtime/ the shared Dockyard runtime
packages/dsh-plugin/ DSH bundle, LLM adapter, commands, and client UI
packages/vault/ macOS Keychain backend
modules/provider-*/ provider OAuth, catalog, quota, and native transport
tests/ security, lifecycle, provider, and runtime tests
The core rule is simple: provider-specific logic stays in provider modules, account selection stays in the runtime, and hosts consume stable contracts. Do not add provider-specific branches to a host or hard-code dynamic provider data.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: oauth。