🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

AI 工作杂志 N9-Developer-Empowerment/DSH-Vibeify

DeepSeek Harness
N9-Developer-Empowerment33 天前有提交已提供中文文档扫描:含敏感能力

把 AI 工作变成一本会呼吸的杂志。

30.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装;安装清单取自 plugins/dsh-vibeify/package.json。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add N9-Developer-Empowerment/DSH-Vibeify
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
数据截至 2026/11/02·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/05·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 33 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(unknown · 2026/11/2) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装;安装清单取自 plugins/dsh-vibeify/package.json

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-vibeify(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=22 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/11 22:20:42

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 56 处,展示前 53 条)
  • 发起网络请求
    plugins/dsh-social-desk/official-connectors.js:27
    const response = await fetch(url, { ...options, signal: options.signal === undefined ? timeout : AbortSignal.any([options.signal, timeout]) });
  • 读取本地文件
    plugins/dsh-social-desk/social-queue-store.js:28
    return queueDocument(JSON.parse(await readFile(path, "utf8")));
  • 写入本地文件
    plugins/dsh-social-desk/social-queue-store.js:37
    await mkdir(directory, { recursive: true, mode: 0o700 });
  • 写入本地文件
    plugins/dsh-social-desk/social-queue-store.js:38
    await writeFile(temporary, `${JSON.stringify(queueDocument(next), null, 2)}\n`, { mode: 0o600 });
  • 写入本地文件
    plugins/dsh-social-desk/social-queue-store.js:39
    await rename(temporary, path);
  • 读取本地文件
    plugins/dsh-vibeify/client-artifact.test.js:6
    const client = await readFile(new URL("./client.js", import.meta.url), "utf8");
  • 写入本地文件
    plugins/dsh-vibeify/codex-model-control.test.js:54
    await writeFile(join(directory, "profile.json"), JSON.stringify(next));
  • 读取本地文件
    plugins/dsh-vibeify/codex-model-control.test.js:67
    const persisted = JSON.parse(await readFile(join(directory, "profile.json"), "utf8"));
  • 删除本地文件递归
    plugins/dsh-vibeify/codex-model-control.test.js:73
    } finally { await rm(directory, { recursive: true, force: true }); }
  • 发起网络请求
    plugins/dsh-vibeify/codex-model-discovery.js:21
    const request = (method, params) => Promise.race([transport.request(method, params, bounded), failed.promise]);
  • 读取本地文件
    plugins/dsh-vibeify/index.js:48
    const BRIDGE_VERSION = JSON.parse(readFileSync(new URL("./package.json", import.meta.url), "utf8")).version;
  • 读取本地文件
    plugins/dsh-vibeify/index.js:115
    const codexPackageManifest = JSON.parse(readFileSync(codexPackageJsonPath, "utf8"));
  • 发起网络请求
    plugins/dsh-vibeify/index.js:325
    asObject(await this.guarded(this.transport.request("initialize", {
  • 发起网络请求
    plugins/dsh-vibeify/index.js:342
    await this.guarded(this.transport.request("account/read", { refreshToken: false }, signal), signal),
  • 发起网络请求
    plugins/dsh-vibeify/index.js:374
    await this.guarded(this.transport.request("thread/start", {
  • 发起网络请求
    plugins/dsh-vibeify/index.js:402
    this.transport.request("model/list", params, signal),
  • 发起网络请求
    plugins/dsh-vibeify/index.js:469
    await this.guarded(this.transport.request("turn/start", {
  • 发起网络请求
    plugins/dsh-vibeify/index.js:510
    this.transport.request("turn/interrupt", {
  • 执行外部命令来自配置/变量
    plugins/dsh-vibeify/index.js:1269
    const child = spawn(process.execPath, [
  • 写入本地文件
    plugins/dsh-vibeify/index.js:1377
    await writeFile(path, loaded.data, { mode: 0o600 });
  • 删除本地文件递归
    plugins/dsh-vibeify/index.js:1386
    if (directory !== undefined) await rm(directory, { recursive: true, force: true });
  • 删除本地文件递归
    plugins/dsh-vibeify/index.js:1390
    if (directory !== undefined) await rm(directory, { recursive: true, force: true }).catch(() => {});
  • 读取本地文件
    plugins/dsh-vibeify/photo-assets.test.js:19
    const credits = JSON.parse(await readFile(creditsUrl, "utf8"));
  • 读取本地文件
    plugins/dsh-vibeify/photo-assets.test.js:29
    const bytes = await readFile(new URL(`./assets/experience/${credit.file}`, import.meta.url));
  • 读取本地文件
    plugins/dsh-vibeify/photo-assets.test.js:37
    const source = await readFile(new URL(`./assets/experience/${file}`, import.meta.url), "utf8");
  • 读取本地文件
    plugins/dsh-vibeify/routing-policy.js:205
    return validatePolicy(JSON.parse(readFileSync(url, "utf8")));
  • 读取本地文件
    plugins/dsh-vibeify/share-client.test.js:25
    const shellSource = readFileSync(new URL("./client-src/experience/shell.jsx", import.meta.url), "utf8");
  • 发起网络请求
    plugins/dsh-vibeify/update-check.js:110
    const response = await fetch(url, {
  • 读取本地文件
    plugins/dsh-vibeify/update-check.js:128
    directory = dirname(await realpath(entrypoint));
  • 读取本地文件
    plugins/dsh-vibeify/update-check.js:135
    manifest = JSON.parse(await readFile(join(directory, "package.json"), "utf8"));
  • 删除本地文件递归
    plugins/dsh-vibeify/update-check.test.js:45
    t.after(() => rm(root, { recursive: true, force: true }));
  • 写入本地文件
    plugins/dsh-vibeify/update-check.test.js:49
    await mkdir(dirname(entrypoint), { recursive: true });
  • 写入本地文件
    plugins/dsh-vibeify/update-check.test.js:50
    await writeFile(join(runtime, "package.json"), JSON.stringify({ name, version, type: "module" }));
  • 写入本地文件
    plugins/dsh-vibeify/update-check.test.js:51
    await writeFile(entrypoint, "// runtime fixture\n");
  • 写入本地文件
    plugins/dsh-vibeify/update-check.test.js:58
    await writeFile(entrypoint, `import { installedDshVersion } from ${JSON.stringify(moduleUrl)};
  • 写入本地文件
    plugins/dsh-vibeify/update-check.test.js:70
    await writeFile(join(root, "package.json"), JSON.stringify({
  • 写入本地文件
    plugins/dsh-vibeify/update-check.test.js:75
    await mkdir(profileAgent, { recursive: true });
  • 执行外部命令固定命令
    plugins/dsh-vibeify-deepseek/index.test.js:12
    try { anchor = `${execFileSync("npm", ["root", "-g"], { encoding: "utf8" }).trim()}/@deepseek-ai/dsh/package.json`; }
  • 读取本地文件
    plugins/dsh-vibeify-deepseek/index.test.js:25
    const original = await readFile(fixture, "utf8");
  • 读取本地文件
    plugins/dsh-vibeify-deepseek/index.test.js:28
    const upstream = await readFile(join(dirname(upstreamPath), "presets", "standard.patch.yml"), "utf8");
  • 读取本地文件
    plugins/dsh-vibeify-deepseek/index.test.js:31
    const patch = await readFile(new URL("./cordis.patch.yml", import.meta.url), "utf8");
  • 读取本地文件
    plugins/dsh-vibeify-deepseek/index.test.js:82
    const manifest = JSON.parse(await readFile(new URL("./package.json", import.meta.url), "utf8"));
  • 执行外部命令固定命令
    plugins/dsh-vibeify-deepseek/index.test.js:84
    const [info] = JSON.parse(execFileSync("npm", ["pack", "--dry-run", "--json", "--ignore-scripts"], { cwd: new URL(".", import.meta.url), encoding: "ut
  • 读取本地文件
    plugins/dsh-vibeify-experience/index.js:11
    const packageManifest = JSON.parse(readFileSync(require.resolve("./package.json"), "utf8"));
  • 发起网络请求
    plugins/dsh-vibeify-experience/update-check.js:110
    const response = await fetch(url, {
  • 读取本地文件
    plugins/dsh-vibeify-experience/update-check.js:128
    directory = dirname(await realpath(entrypoint));
  • 读取本地文件
    plugins/dsh-vibeify-experience/update-check.js:135
    manifest = JSON.parse(await readFile(join(directory, "package.json"), "utf8"));
  • 执行外部命令固定命令
    plugins/dsh-visuals/image-generation.js:44
    const child = spawn("codex", [
  • 发起网络请求
    plugins/dsh-visuals/visual-service.js:212
    const response = await fetch(url, {
  • 请求外部主机challenges.cloudflare.com
    services/vibe-share/src/worker.mjs:53
    const response = await fetch("https://challenges.cloudflare.com/turnstile/v0/siteverify", { method: "POST", body: form });
  • 发起网络请求
    services/vibe-share/src/worker.mjs:53
    const response = await fetch("https://challenges.cloudflare.com/turnstile/v0/siteverify", { method: "POST", body: form });
  • 读取本地文件
    shared/editorial-illustrations.test.js:30
    const provenance = readFileSync(new URL("./editorial-illustrations/PROVENANCE.md", import.meta.url), "utf8");
  • 读取本地文件
    shared/editorial-illustrations.test.js:33
    const bytes = readFileSync(new URL(`./editorial-illustrations/${name}.svg`, import.meta.url));
扫描于 2026/11/5(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
涉及外部主机:challenges.cloudflare.com

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 生成本地活杂志

把 AI 工作变成 DeepSeek Harness 的本地活杂志。DeepSeek、ChatGPT,或两者皆可。

README

由 DeepSeek 最新模型翻译生成
DSH Vibeify 把 AI 工作变成一本会呼吸的杂志。 DSH Vibeify 是开源的本机杂志,为 DeepSeek Harness 而生。它给 AI 工作一个可视化、内容优先的家:用 DeepSeek、ChatGPT,或者两个都用;用 Chat 掌控全局;只分享你挑中的成品文章。 观看真实的 DSH Vibeify 欢迎刊与成品演示 下载 Vibeify 0.16.3 · 观看成品演示 · 了解它怎么运作 · 获取安装帮助 · 给 Vibeify 发邮件 这段 2 分 24 秒的真实演示:带着内容打开 Vibe,把一条 Chat 请求变成可视化卡片,用一次明确的 Update,然后私下预览一篇文章,再决定是否发布。在 YouTube 上观看。 DSH Vibeify 的杂志不是公开网站。它把 DeepSeek Harness——一个本机运行时,负责智能体、模型、工具、权限和会话——变成创作者优先的流式体验,用起来像网站。Vibe 是可视化、内容优先的家;Chat 留在下层,处理详细请求、进度、审批、Queue、Steer 和技术证据。另有一个可选的、刻意独立的分享服务,一次发布一篇已审核的文章,既不暴露本机杂志,也不要求收件人装有 DSH、ChatGPT 或 DeepSeek。 理念:生成式 AI 不止于一轮一轮的对话 大多数 AI 产品从一个空盒子开始。
展开完整文档(README 剩余 1 节)
DSH Vibeify

把 AI 工作变成一本会呼吸的杂志。

DSH Vibeify 是开源的本机杂志,为 DeepSeek Harness 而生。它给 AI 工作一个可视化、内容优先的家:用 DeepSeek、ChatGPT,或者两个都用;用 Chat 掌控全局;只分享你挑中的成品文章。

观看真实的 DSH Vibeify 欢迎刊与成品演示

下载 Vibeify 0.16.3 · 观看成品演示 · 了解它怎么运作 · 获取安装帮助 · 给 Vibeify 发邮件

这段 2 分 24 秒的真实演示:带着内容打开 Vibe,把一条 Chat 请求变成可视化卡片,用一次明确的 Update,然后私下预览一篇文章,再决定是否发布。在 YouTube 上观看。

DSH Vibeify 的杂志不是公开网站。它把 DeepSeek Harness——一个本机运行时,负责智能体、模型、工具、权限和会话——变成创作者优先的流式体验,用起来像网站。Vibe 是可视化、内容优先的家;Chat 留在下层,处理详细请求、进度、审批、Queue、Steer 和技术证据。另有一个可选的、刻意独立的分享服务,一次发布一篇已审核的文章,既不暴露本机杂志,也不要求收件人装有 DSH、ChatGPT 或 DeepSeek。

理念:生成式 AI 不止于一轮一轮的对话

大多数 AI 产品从一个空盒子开始。人写下提示词,等一个回答,然后重复。DSH Vibeify 一开始就给你值得探索的内容,把任意线程里的 Chat 工作汇成一本连续的刊物。回访的读者打开自己保存的那一刊,最新故事排在最前。配置好的编辑方向优先于本机欢迎刊。第一次来的读者没有编辑方向,也能浏览本机导览页,无需调用模型;Update my magazine 或 Update VIBE now 会请求一期全新的人本内容。Look & feel 单独控制杂志的配色、字号和间距,与 Chat 互不影响。当你明确请求公开内容时,每张完整且已验证的卡片可以在其余回答还在生成时就送达;普通的最终回答则在完成后加入。只有读者要求更新时,它才会生成额外的杂志素材。
记住这一句话: 想要一篇精心编辑的 Vibe 文章或系列时,打开 Chat,说 “Make a Vibe about…”。这句明确的措辞会告诉当前 DSH lead 使用 Vibeify 的发布契约:可视化、带链接、完整分块。普通 Chat 回答结束后也可能进入 Vibe,但不保证获得更丰富的文章结构,也不保证在回合运行期间逐张流式推送卡片。

flowchart LR
OPEN["Open local DSH"] --> WELCOME["Evergreen welcome issue\nwhy · how · try it in Chat"]
WELCOME --> VIBE["Vibe already contains a visual edition"]
VIBE --> EXPLORE["Read · watch · save · respond"]
RADAR["Shared public radar\ntrends · culture · technology"] --> CACHE["Local hidden reserve\nsignals · candidates · ready pages"]
CACHE --> VIBE
EXPLORE --> SIGNAL["A Chat request, pull-to-update, or Update click"]
SIGNAL --> HARNESS["DSH harness\nsessions · tools · models · permissions"]
HARNESS --> LEAD["Active lead agent\nplans and defines acceptance"]
LEAD --> INSTANT["Local reserve\nready pages + visual short + questionnaire"]
LEAD --> WORK["Independent specialist lanes\nquick · culture · media · deep"]
WORK --> CHECK["Lead verifies each finished lane independently"]
CHECK --> STREAM["Each closed editorial chunk streams immediately"]
INSTANT --> VIBE
STREAM --> VIBE
STREAM --> STOP["One bounded update completes, then stops"]
VIBE --> PREVIEW["Share one article\nprivate preview first"]
PREVIEW -->|"reader presses Publish"| PUBLIC["Public article link\nno DSH account required"]
EXPLORE -. "open when you want control or detail" .-> CHAT["Chat\nask · queue · steer · approve · inspect"]
CHAT --> HARNESS

表面看起来像网站,底下的机器却是一套智能体 harness:

| 层 | 做什么 |
| DSH | 在用户机器上运行会话、智能体、模型路由、工具、权限与审批。 |
| Vibeify | 加上连续的编辑流、可视化呈现、本地内容缓冲,以及生成内容与流之间的安全通路。 |
| Vibe | 把每个线程已完成的回答——以及活跃的公开内容请求中完整且已验证的卡片——呈现为一份最新在前的刊物。Vibe 近期使用期间,可能预先准备一份隐藏的本地储备;只有 Pull to update、Update、关闭的公开内容卡片,或已完成的 Chat 回答,才会改变可见的杂志。它不是独立的公开站点。 |
| Chat | 让用户直接提问、排队或引导工作、批准受保护的操作,并查看进度或技术证据。 |
| Lead agent | 规划、设定验收标准、验证工作,并对最终结果负责。在受治理的 ChatGPT/combined 模式下是 Codex,在 DeepSeek-only 模式下是原生 DSH 智能体。 |
| Workers | 可选地执行有界的研究、编码、分析或媒体工作;它们说自己完成了,输出并不会因此就发布。 |
| 可选分享服务 | 只有点击 Share 之后,才会收到一篇通过白名单、经过阅读者审核的文章,先展示私密预览,再等你第二次点击 Publish public link,才执行公开写入。它永远收不到 Chat 提示词、推理过程、会话身份、设置、本地历史或凭据。 |

这里的「流式」指的是完整、已排版的内容条目连续不断地送达,而不只是文字一个 token 一个 token 地冒出来。当期内容可以立刻从本地打包、已保存和预备库存中取用。你主动下拉或点击 Update,预备页面会立即释放,包括视觉版式和问卷版式;只有当库存不足时,才会启用一次前台批量。在明确请求公开内容的 Chat 过程中,第一张简短的已核验卡片会先到,此时整个系列还在调研中,之后每张收尾卡片各自独立跟进;普通的、未加封套的最终答案则在持久化完成之后加入。两条路径都不会额外发起 AI 调用。打开、滚动、改设置或跑完一批,本身都不会改变可见的当期内容。

这就是不同的范式:Chat 是随手可用的控制面板,不是产品的全部。 每个 Chat 线程仍然由请求驱动,答完就进入空闲。Vibe 是贯穿这些线程的共享呈现层,读者想要更多时,用一个明确的更新手势即可。

想用大白话了解这两个界面、即时本地库存、并行智能体通道、整页流式、停止条件、服务商模式和隐私边界,请读 How DSH Vibeify works。

按你的情况挑一种服务商配置:

- 只用 DeepSeek: 原生 DSH/DeepSeek 运行智能体,服务商中立的 Vibe 包提供体验。
- 只用 ChatGPT: 由 ChatGPT 认证的 Codex 智能体主导,无需 OpenAI API key 即可工作。
- 两者都用(推荐的治理模式): Codex 负责规划、管理、核验、整合和作答,DeepSeek 执行符合条件的受限任务。

两个账号都不是必须单独具备,安装可以在两者都未连接时完成。但要让智能体执行 AI 工作,至少需要一个可用的服务商。DeepSeek 的计费与 ChatGPT 的套餐额度各自独立。

首屏就是 Vibe 本身:全屏编辑式信息流打开时显示当前欢迎刊,后面跟着打包内容池,再往后是读者更早保存的杂志。无需先选指南、磁贴、配方或提示词。欢迎刊反复指向一个有用的下一步:打开 Chat,说 “Make a Vibe about…”,看着已完成的视觉页面进入 Vibe,然后挑一个好的预览并分享。本次访问期间生成的新答案会出现在欢迎刊上方。更早保存的页面留在更下方,不会被删除,也不会被误当成今天的头版。Chat 仍是细节来源视图,保留常规的 DSH 对话和技术控制项。
DSH 是快速迭代的开发者预览版。Vibeify 会锁定它测试过的版本,并附带健康检查,但上游变动仍在意料之中。

在文章里玩起来

让 Chat 「做一个 Vibe,内嵌游戏、计算器、表单或交互式图表。」 自包含的交互面板会出现在文章里。打开面板,就能边读边用;内置的 Mochi Meadow 游戏立刻可见,只有你按下开始按钮才会启动。

当匹配的分享服务版本部署后,文章会把交互带进它的私密分享预览和已发布页面。Mochi Meadow 在三处用的是同一套实现。分数和表单答案留在打开的面板里,不会被保存,也不会进入分享的文章。关闭面板或重新加载会重置状态。面板无法访问你的杂志、账号、外部服务或本地文件。

分享的文章让正文保持可读的栏宽,游戏和交互面板则用满文章可用宽度。头图在有边界的居中框内保持宽高比,支持的媒体播放器在预览和发布中都会出现。两种分享视图共用一套样式表,以及共享的尺寸与媒体策略。

参见交互式文章创作和分享。更新本地 Vibeify 不会部署独立的公开分享服务。

联系

有关 Vibeify 的问题、安装帮助,或不宜在公开 issue 里开头的负责任报告,请发邮件至 info@codingforjustice.org.uk。不要发送密码、API key、cookie、OAuth token、私密提示词、会话导出或未经审阅的日志。

从这里开始

我很好奇,但不是开发者

把 DSH 想成 AI 智能体的控制室。DSH Vibeify 从三个重要方面改变了这个控制室:

1. 产品从内容开始,而不是任务表单。 阅读、滚动、收藏、观看、收听,或回答一个可选问题;只有想创作或解决问题时,才打开 Chat。
2. 每个磁贴都是视觉化的。 稳定的本地打包照片无需模型或网络等待即可使用。生成的杂志页面需要与主题相关的公开摄影,长篇特写可以承载多个摄影节拍,偶尔出现的 AI 辅助图形会明确标注。
3. 服务商选择是真实的。 DeepSeek、ChatGPT,以及 Codex 主导的组合治理,是各自独立的安装模式,而不是把某个账号藏起来当作必需项。

它不会不告诉你就切换服务商模式,不会把你的图片发到别处,不会替你批准邮件或其他外部操作,也不会在没有 Codex 验证步骤的地方承诺同等质量。

我想试试

想走已验证的 Apple 芯片 macOS 路线,就下载安装器,解压后打开 Install DSH Vibeify.command。它会安装或更新 DSH 和 Vibeify,让你选择 DeepSeek、ChatGPT、两者都要,还是稍后再定,然后跑检查,最后打开 DSH。全程不会问你要 API key。

仓库里还有友好的 Windows 和 Linux 预览版安装器。它们遵循同一套约定:公开源码、不可变包、可选服务商、不查计费、不打断进行中的工作。在真实 Windows 机器和有代表性的 Linux 机器上跑通完整流程之前,它们会一直带着醒目的预览标签;只测 Mac 不算跨平台证据。当前下载地址见安装,仅检查模式和私有免费聊天的排障见安装与帮助 FAQ。

走开发者路线,你需要 22.x 系列里的 Node.js 22.19+,或者 Node.js 24+,以及 Git:

git clone https://github.com/N9-Developer-Empowerment/DSH-Vibeify.git
cd DSH-Vibeify
./scripts/install-dsh.sh --replace
./scripts/install-vibeify.sh --provider deepseek # or chatgpt / auto
./scripts/doctor.sh
dsh web

安装器不会重启已经在跑的 DSH 进程。先把手头的活干完。如果 DSH 已经在 3080 端口开着,直接复用那个页面,别再开一份。

截图、其他配置档、DeepSeek 凭据、更新、迁移和卸载,请看完整安装指南。安装前后的产品生命周期,见工作原理。

你能得到什么

- 一本连续的、像网站一样的本地杂志。 Vibe 完整覆盖 DSH 工作界面,打开就是一期长长的响应式内容。没有从目录到播放器再到结果的跳转。
- 一期把选择再卖一遍的欢迎刊。 二十一个面向读者的可视化面板,讲清 Vibe、Chat、刻意更新、编辑方向、本地学习、图像、保存、分享、Queue/Steer、Think/Trajectory、已连接应用、DSH、插件、开源、服务商与能力选择、权限和安全更新的好处和日常用法。每个面板都给出一条具体提示词,以及进入 Chat 的直达路径。这期刊物从当前插件重新构建,不走缓存,所以升级后不会还打开上一版的引导。
- 一口深且找得到的本地井。 二十四个确定性编辑内容块——文字、署名摄影、AI 辅助图形和问卷卡片——冷启动访问时同步可用。每块瓷砖从十二种内置视觉里分到一个,裁剪和处理各不相同,后面的图片懒加载解码,最多 160 条完成的杂志条目保留 30 天。Find Vibes 在本地搜索它们的标题和正文;同一总量里有 96 个位置留给完成的 Chat 生成的 Vibes,这样编辑内容补货时不会把它们全挤掉。
- 即时、有界更新。 从 Vibe 顶部下拉——在 Mac 触控板上还可以双指下拉——或选择 Update。就绪页面会从隐藏储备中同步释放;本地视觉短片和问卷确保即使储备为空也能立即响应。如果就绪页面少于四个,一个有界前台批次会补上缺口,并独立流式输出完整页面。Stop update 只取消那个专门的前台轮次,20 分钟上限会终止卡住的更新。
- 共享雷达,私有编辑。 一个透明的 GitHub Action 每 30 分钟发布一次公开的纯内容趋势目录。它包含标题、链接、地区和宽泛的部落提示——绝不包含读者历史。每个安装都在该浏览器中保留其选定的部落、自由文本编辑备注、交互、问卷答案、候选、就绪页面和支出账本。
- 刻意超配的储备。 当浏览器打开、Vibe 在 24 小时内被使用过、后台编辑已启用,且本地就绪储备低于目标时,一个独立的隐藏编辑器可以准备 6–8 个页面。组合模式让有界的 DeepSeek Flash 工作进程完成大部分发现和起草,同时由 Codex 验证;原生模式保持其独特的无 Codex 验证边界。保守的预留账本在选定的每日上限处硬停止,绝不超过 US $2。
- 最新优先,仅追加深度。 新块加入同一版本顶部,而存储保持仅追加。它们绝不替换更早的材料;更深入的研究会成为更早页面之上可见的编辑后续。
- 问卷即内容。 一键卡片创造有用的参与时间,并温和地影响后续选择。保存、打开、播放和有意跳过也会教导本地编辑器;学习记录留在设备上,并可一键重置。
- 每个真实 Chat 线程中的一本杂志。 Vibe 被动跟随普通读者会话以获取完整验证的 chat- 卡片,然后读取持久的 DSH 历史作为回退,并用于未封装最终答案。它绝不重新打开或恢复线程。内部子代理、专门的前台更新和隐藏的后台编辑器绝不会被误认为读者对话。传输封装在缓存迁移期间被移除;卡片标题不在其正文中重复,Markdown 表格保持结构化。原始提示词、半写封装、工作进程报告、候选列表、附件、推理、工具活动、批准、会话标识符、中止的工作和不完整的进度绝不会被复制。
- 没有空等待或隐藏工作。 捆绑和保存的内容在第一个本地帧中渲染。无内容账本测量第一帧、恢复、显式更新、块到达和参与。仅仅阅读杂志不消耗模型配额。
- 真实摄影、标注为生成的视觉素材,以及独一无二的公开封面。 本地打包了六张照片和六份标注为本地 AI 辅助的 SVG 作品,作为零等待的私有兜底;它们不是实时编辑图库。生成的非问卷页面默认使用经过核实、与主题相关的公开摄影,长篇特写则可能展示两到三张分别署名的照片。每批至少考虑 18 张候选图片,来自三个或更多可信来源家族,按主题/实体相关度、信息量、署名清晰度、构图、新鲜度和近期使用多样性排序,只发布最优选择。如果找不到精确摄影,优先使用经授权的、针对该故事的生成图片,而不是重复使用的图库素材;独一无二的图形或排版处理是标注清楚的兜底方案。浏览器只接受经过审核的图库主机,或第一方直接图片搭配同一 HTTPS 主机上单独的官方页面;任意第三方图片一律拦截。它会记住最近用过的 80 个远程图片 URL,抑制 referrer 数据,从文章正文中移除被拒的图片语法,远程图片加载失败时回退到本地。公开分享会在预览、发布和社交预览中保留选定的主图和署名。排版兜底封面在本地和公开 JPEG 中使用同一套设计。保存的本地卡片——包括其视觉来源——随 30 天/160 项的有界杂志缓存一起过期。
- 可选的图片来源插件。 独立的 dsh-visuals 包会被自动发现,缺失时 Vibeify 仍可正常使用。Wikimedia Commons 和 Openverse 无需密钥即可使用。指向 Commons File 页面的独立图片署名也会解析到其经过核实的图片,包括作者在链接之外的署名;可选的 Pexels 和 Pixabay 密钥在 Settings → Images 下输入,保存在 DSH 的只写凭据存储中。只搜索简短明确的杂志标题——绝不搜索普通 Chat 文案、提示词、附件、历史记录或设置——每个被接受的结果都保留其创作者、许可和原始来源。
- 每个面板都有有用的出口。 视觉署名始终附在对应图片上。每个生成的非问卷面板都在文章正文中带有独立且相关的内容去向——例如故事、原作、创作者官方页面、论文、视频、音乐或实用服务——Vibe 会以紧凑的 Read source 操作重复该去向。图片文件和视觉署名页面绝不会被当作文章链接呈现。
- 分享前先审阅。 每张完成的非问卷卡片都有 Preview and share。它会打开固定的第一方分享源,等待精确同源握手,只传输该卡片的标题、渲染后的 Markdown、选中的公开图片、署名、来源链接、类型、发布时间,以及(如果有)一个允许列表内的 YouTube、Vimeo、Spotify 或 SoundCloud 目标。预览显示一个懒加载播放器,不自动播放,也不含任意嵌入代码,公开文章保留同样的体验。预览无法自动发布:读者必须检查后选择 Publish public link。每篇新的公开文章都需要一张图片;第一张会成为响应式封面和社交预览。发布后公开 URL 会自动复制,Copy link 作为备用保留。接收者无需 AI 账号。见 Sharing one Vibe article。
- 简单的手动链接分享。 复制已有的公开链接,或使用设备的分享操作,然后自己完成最终发布。私有 Vibe 文章保留独立的预览和明确的 Publish public link 步骤。无需设置社交账号、排期或自动发布。见 Sharing。
- 服务商中立的 Vibe。 dsh-vibeify-experience 提供 Vibe,无需安装 Codex 服务商,因此原生 DSH/DeepSeek 仍保持控制权。
- 可选的受治理模式。 dsh-vibeify 使用经 ChatGPT 认证的 Codex,并刻意从子进程中移除 OpenAI API-key 回退。此模式下 Codex 仍是主导。
- DeepSeek 优先执行。 Flash 默认处理常规的有界工作,Pro 则保留给那些更难推理能减少返工的任务包。实验性 Vision 对当前图片仍为显式选择加入。
- 质量闸门,而非盲目信任。 每个 worker 都会收到 Codex 定义的验收契约和证据请求。worker 的文字说明绝不单独采信:Codex 会先验证产物、测试或引用的证据,再整合。
- 选择你的 Codex 主导。 打开 Settings → Codex,分别选择主模型及其思考强度。列表来自你已登录的 ChatGPT 账号,只提供受支持的强度。两者一起保存;下一轮,包括在已有聊天中,都会使用你的选择。页面会显示已保存的选择和当前正在运行的 Codex 选择。Luna Max 仍是初始默认;DeepSeek Flash 仍处理符合条件的有界工作。
- 安全的更新中心。 打开 Settings → Updates,分别检查已安装的 DSH、Vibeify 和捆绑的 Codex 智能体。较新的 Codex 版本在 Vibeify 完成资格认证前不会标记为可安装。更新程序路径会感知平台:macOS 打开经过验证的友好更新程序,而 Windows 和 Linux 在真机资格认证完成前打开明确标记的预览/帮助路径。
- 更清晰的实时工作。 Chat 会收到有用的进度,智能体忙碌时 Queue 或 Steer 控件仍然可用,显式的 magazine 更新或公开内容请求可以把封闭、经过来源核查的内容块发布到 Vibe,同时不暴露推理过程或 worker 的原始文字。Vibeify 在工作进行中打开当前的 Think 展开区,然后在最终答案确定后关闭同一个展开区一次;读者可以重新打开它,界面不会跟你较劲。
- 更少不必要的提示。 完整的本地访问权限避免了反复的 shell 审批,而受保护的外部写入仍然需要确认。
- 已连接的 Codex 应用。 已安装的工具可以通过它们正常的 Codex 审批边界暴露出来;仅限桌面的能力仍然需要相应的宿主连接。
- 图片支持。 图片可以上传到 Codex;把它们发送给其他服务商始终需要明确意图。
- 颜色与编辑设置。 在 Chat 中,VIBE settings 把颜色主题与 15 种宽泛受众视角的任意组合结合起来——从 Global & curious、Gen Z 和 Builders & nerds,到 Culture & arts、parents、sport 和 local life。它还控制有用的惊喜、自由文本编辑备注、背景储备填充、温和的内容提示,以及一个明确以 USD/day 计价的 DeepSeek 上限。颜色仅用于呈现;编辑设置永远不会改变权限或受保护操作的审批。

组合模式下「成本更低,质量不降」是什么意思

Codex 看不到你的 ChatGPT 套餐还剩多少确切配额。因此 Vibeify 不会等待配额告警。它从结构上降低主智能体的消耗:Codex 把能力花在规划、路由、判断、验证和最终结果上,而 DeepSeek 承担大部分符合条件的执行工作。

当满足以下条件时,Codex 会把一个或多个定义明确的执行包发给更便宜的 worker:

- 任务自成一体;
- 结果可以独立核查;
- 所选模型具备相应能力;以及
- 同样的验收标准可以维持。

Codex 不会只问 worker 是否自称成功。它会检查实际的 diff、文件、测试结果、来源或其他任务证据。通过的工作会被复用;Codex 只修复失败或无法验证的部分,而不是无意义地整体重做。

没有系统能保证在每个未见过的任务上都质量一致。Vibeify 保住的是质量流程:默认的 Codex 主智能体仍是前沿预设,验收标准不变,无法验证的工作留在 Codex 或退回 Codex。选择更低的 Codex 能力等级是用户明确的取舍,应当用有代表性的工作来评估。

DeepSeek API 调用由 DeepSeek 单独计费。定价和模型可用性会变化,所以在给出成本说法之前会先查询实时的 DSH 目录。

Experience Shell 和 VIBEs

Vibe 主页承载一本轻阅读杂志、常青欢迎刊、已保存的片段、问卷卡片、来自每个本地线程的已完成 Chat 投影、来自显式公开内容请求的实时完整卡片、更新控件,以及阅读位置。每次访问都从这里落地;上次访问的 Chat 不会恢复为主页。Chat 展示常规 DSH 对话,Trajectory 保留技术工作,Vibe 返回顶部。启动时,先显示撰写的欢迎刊,再显示较早的已保存内容;本次访问期间新生成的页面正常追加,并排在欢迎刊之上。已完成的回答和显式发布的片段保存在浏览器本地缓存中,上限 30 天;确定性的欢迎页和示例页则从已安装插件重建,从不持久化。提示词、会话 id 和工作活动不缓存。大写的 VIBE settings 控件保持独立:颜色影响 Chat 呈现,编辑方向只影响下一次请求的杂志更新。两者都不改变模型、权限、路由、受保护操作确认或计费策略。在 DeepSeek-only 模式下,Codex 专属的能力与进度控件会被省略。生命周期、实时语义卡片路由、本地历史回退、缓存、时序、分块和 worker 方法见 Vibe generated-content streaming。

选择 Chat,然后选择常规 DSH UI 右下角的 VIBE settings,挑选配色方案、大致的编辑方向,以及可选的自由文本编辑备注。这些设置只保存在该浏览器中;只有你下次下拉更新或选择 Update 时,方向才会传给 lead。选择视觉上高亮的 Vibe · Magazine 会话标签,可直接返回最新内容。

Daniela Elliott 负责项目的体验设计、外观与感觉,以及视觉 VIBE。当前配色方案只是起点,目标是打造更具表现力、由用户塑造的智能体工作区。添加或改进配色方案见 VIBEs。

面向开发者

DSH Vibeify 既是真正的 DSH bundle,也是 Codex 辅助插件:

DSH-Vibeify/
├── .agents/plugins/marketplace.json # repository Codex marketplace
├── docs/ # installation, design and security
├── plugins/dsh-vibeify/
│ ├── .codex-plugin/plugin.json # Codex plugin manifest
│ ├── cordis.patch.yml # DSH bundle configuration
│ ├── index.js # Codex adapter and worker routing
│ ├── codex-capability.js # lead capability presets
│ ├── codex-settings.js # live DSH settings integration
│ ├── delegation-contract.js # worker/acceptance boundary
│ ├── progressive-output.js # live final-answer delta bridge
│ ├── update-check.js # fixed-source version and compatibility checks
│ ├── client-src/experience/ # stream shell, playout, cache, timing and catalogue modules
│ ├── preview/ # isolated visual iteration harness
│ ├── client.js # generated DSH browser artifact
│ └── skills/dsh-vibeify/SKILL.md # Codex operational guidance
├── plugins/dsh-vibeify-experience/ # provider-neutral DSH client package
├── plugins/dsh-visuals/ # optional public-image search and secure key references
├── plugins/dsh-social-desk/ # optional reviewed local social queue and official API adapters
├── services/vibe-share/ # optional account-free public article host
├── shared/vibe-share-contract.js # allow-list boundary shared by DSH and host
└── scripts/ # macOS, Windows and Linux installers, migration, doctor and safe support report

桥接目前锁定:

- @deepseek-ai/dsh 0.1.7-rc.2
- 受管控桥接内的 @openai/codex 0.160.0
- DSH Vibeify 0.16.3

改动认证、审批、路由、图片传输、外部操作或服务商行为之前,先读 Architecture、Security and billing、Contributing 和 AGENTS.md。

运行源码检查:

./scripts/doctor.sh --source

想在不重启 DSH 的情况下做视觉迭代:

cd plugins/dsh-vibeify
npm install
npm run build:preview
python3 -m http.server 4173 --directory ../../tmp/vibeify-preview

The release workflow also runs the Codex plugin validator, skill validator, package dry-run, isolated DSH composition, and server-start smoke test.

Install the Codex helper plugin

This optional step teaches Codex how to install and diagnose DSH Vibeify. It does not itself install the DSH runtime bundle.

codex plugin marketplace add /absolute/path/to/DSH-Vibeify
codex plugin add dsh-vibeify@dsh-vibeify

Start a new Codex task after installation so the helper skill is discovered cleanly.

People

- Errol Elliott — agent architecture, integration, and product direction
- Daniela Elliott — experience design, look and feel, and visual VIBEs

Contributions are welcome. DSH Vibeify is an independent community project and is not an official DeepSeek or OpenAI product.

Upstream references

- DeepSeek Harness
- DSH plugin packaging
- OpenAI Codex plugin documentation

Image selection and Commons recovery are documented in Article images, including the single resolver, cache invalidation and retry rules.

If new sessions fail with a duplicate subagent tool after upgrading DSH, see
the runtime scope repair notes.
The installer and doctor now check that session and tool services share one runtime scope.
预览分享卡片长什么样 ↓N9-Developer-Empowerment/DSH-Vibeify
分享 · DeepSeek Harness Hub
N9-Developer-Empowerment/DSH-Vibeify

把 AI 工作变成一本会呼吸的杂志。

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部