dsh-gh-pages-artifacts:在 GitHub Pages 上发布可分享的 Agent 产物

前言

在 DeepSeek Harness(dsh)里跑 Agent 时,报告、仪表盘、图表或长文往往先落在工作区文件里。要把这些内容变成别人能打开的链接,常见做法是手动推到静态托管、或依赖各产品自带的「Artifacts / 站点」能力。若你希望链接由 Agent 写好就发、同一链接可原地更新,并把发布记录留在本地可追踪,就需要在 dsh 里接一套明确的发布工具。

下面介绍社区插件 dsh-gh-pages-artifacts(维护者 opdsh):它把 HTML 页面和 Markdown 文档发布到 GitHub Pages,并返回类似 https://you.github.io/dsh-artifacts/q3-report-k3x9ab/ 的可分享 URL。插件定位是在 dsh 内替代 Claude Artifacts 与 Codex 桌面版的 site 功能;当前 GitHub 仓库星标为 0,版本 0.1.1,许可证 MIT。

这是什么

dsh-gh-pages-artifacts 是 DeepSeek Harness 的联网类插件:Agent 通过一组 artifact_* 工具创建、列出、读回、更新和删除产物,内容托管在 GitHub Pages 上。分类上属于「联网工具」;目录页见 skillhub.cn,源码与文档在 GitHub。

DeepSeek Harness 的生态理念是「一切皆插件」;skillhub 等社区目录独立于 DeepSeek / 幻方,并非官方应用商店。安装前请自行查看源码与许可证,并记住插件以当前 dsh 进程权限运行。

核心功能

Agent 工具

工具 作用 需审批
artifact_publish 从工作区 path 或内联 content 创建产物,或用 id 原地更新;Markdown 渲染为带浅/深色主题的页面,HTML 原样提供;资源放在 assets 是
artifact_list 按时间列出产物(id、标题、URL),可用 query 筛选 否
artifact_read 分段读产物源码或其它文本文件 否
artifact_delete 删除产物;id 不复用,旧链接不会指向新内容 是
artifact_status 诊断 token、仓库、Pages 设置及部署是否上线 否
artifact_repository 关联/取消关联仓库,或在 shared 与 per-artifact 策略间切换 否

插件还会注入简短系统提示,并 bundled artifact-pages 技能(可用 /artifact-pages 调用;~/.dsh/skills 或项目内同名技能可覆盖)。

仓库策略

  1. shared(默认):所有产物在同一仓库下各占一目录,URL 形如 https://<owner>.github.io/<repo>/<id>/。仓库来源优先级:运行时 artifact_repository 关联 → 配置项 repository → owner / repo。
  2. per-artifact:每个新产物单独建库 <owner>/<repoPrefix><id>(默认前缀 artifact-),需具备创建仓库权限的 token。

可在插件设置、repoStrategy 或对话中切换策略;已有产物位置不变,更新/删除通过本地注册表定位。

界面与注册表

Web / Desktop 侧边栏 Artifacts 面板列出已发布页面(标题、链接、描述、仓库、更新时间),支持刷新以拉取其它机器上的发布记录,行内确认即可删除(无需再走 Agent 审批)。

本地注册表默认在 $DSH_HOME/gh-pages-artifacts/registry.json(可配置 registryDir),同目录的 index.html 提供可点击索引。可问 Agent「你发布过哪些内容?」或「给我看产物索引」。

环境要求

  • DeepSeek Harness 0.2.0-rc.2 或更新,且仍在 0.2.x(Web、Desktop 或 CLI)。
  • GitHub 账号,以及已启用 GitHub Pages 的仓库(推荐用插件自带的 setup 流程创建)。
  • 细粒度 PAT:Contents: Read and write(必需),Pages: Read-only(推荐)。per-artifact 策略需要能创建仓库并配置 Pages 的更高权限 token。
  • Node:^22.19.0 或 >=24.0.0(从源码安装构建时需要)。

安装与启用

1. 创建仓库并启用 Pages

请在终端自行执行(不要交给 Agent),并确保 GitHub CLI 已登录:

node bin/setup.mjs setup --author "Your Name <you@example.com>"

在插件仓库 checkout 目录中运行上述命令;它会在你的账号下创建公开仓库 dsh-artifacts(会先询问),创建 gh-pages 分支并启用 Pages。包发布到 npm 后,也可用 npx dsh-gh-pages-artifacts setup 完成同样步骤。

勿使用 <user>.github.io 个人站点仓库,以免与现有站点根目录冲突。

2. 配置 GitHub token

默认从环境变量 GH_PAGES_TOKEN 读取(配置项 tokenEnv 可改名)。不要把 token 粘贴进对话。 可选来源(优先级从高到低):

  1. 启动 dsh 前的环境变量:export GH_PAGES_TOKEN=github_pat_...
  2. $DSH_HOME/.credentials.yaml(默认 ~/.dsh/.credentials.yaml,权限 600,支持热重载):
version: 1
refs:
  GH_PAGES_TOKEN: github_pat_...
  1. 启动目录或 $DSH_HOME 的 .env(需重启 dsh;来自项目 .env 时插件要求配置 owner)

3. 安装插件

从最新 release 安装(推荐):

dsh plugin --profile web add https://github.com/opdsh/dsh-gh-pages-artifacts/releases/latest/download/dsh-gh-pages-artifacts.tgz

Desktop / Web 可在 插件 → 添加插件 填入同一 URL。安装后重启正在运行的 CLI profile。

从 GitHub 源码安装(安装时会本地构建,需在 profile 的 pnpm-workspace.yaml 的 allowBuilds 中按 dsh 提示放行):

dsh plugin --profile web add github:opdsh/dsh-gh-pages-artifacts

4. 可选配置

打开 插件 → GitHub Pages Artifacts,或在 profile 的 cordis.patch.yml 中配置,例如非默认仓库时:

- id: gh-pages-artifacts
  config:
    owner: your-login-or-org
    repo: dsh-artifacts

可用 dsh --profile web --dump-config 查看合并后的配置。常见选项包括 repoStrategy、siteDir('' 或 docs,后者可避免根目录公开清单)、approval、noindex、blockSecrets 等,完整表见仓库 README。

典型用法

经过上面的步骤后,可以直接用自然语言驱动 Agent,例如:

  • 「把这份 Q3 销售数据做成仪表盘页面并发布。」
  • 「为这个仓库的架构写一页摘要并发布。」
  • 「你发布过哪些内容?」「更新 id 为 q3-report-k3x9ab 的那一页。」
  • 若链接未生效或配置异常:「运行 artifact_status 检查一下。」

发布成功后 Agent 会回复 Pages URL;同一 id 可多次 artifact_publish 更新,链接不变。Markdown 会转成静态页并保留 source.md;需要复杂交互时可让 Agent 发布 HTML。

适用场景与注意

适合谁: 需要在 dsh 里快速产出可分享报告、文档或小型可视化页,且已有或愿意使用 GitHub Pages 的开发者与团队。

公开性: 已发布产物对持有链接的人可见;GitHub Free 下托管仓库也需公开,删除后 git 历史仍可能保留旧版本。插件默认加 noindex、发布/删除前会审批(unless-full-access 下完全权限会话除外),并拦截隐藏文件与疑似凭据内容,但分享范围仍由你决定。

技术约束: 每次变更通过 Git Data API 做原子 commit,不 force-push;拒绝写入已有 Jekyll 站点(有 _config.yml 且无 .nojekyll)或受保护分支。Pages 通常约一分钟内更新,浏览器缓存可能最长约 10 分钟。

安全与权限: Agent 以你的 OS 用户身份运行;path / assets 限定在工作区内,但无法阻止 Agent 主动复制敏感数据到工作区或内联提交——审批提示与人工判断仍是最后一道关。同一 GitHub Pages 源下的 cookie / localStorage 在子路径间共享,敏感场景可考虑独立 org 或自定义域名(可设 baseUrl)。

结尾

dsh-gh-pages-artifacts 把「写页面 → 发布 → 固定链接 → 列表/更新/删除」收进 dsh 插件与侧边栏,适合把 Agent 产出直接变成 GitHub Pages 上的可分享 artifact。进一步了解请访问 SkillHub 目录页 与 GitHub 仓库 README(含中文 README.zh.md)。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye