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

方舟社区套件 arkme-senx/arkme-dsh-plugin

DeepSeek Harnessv3.0.40
arkme-senx13 天前有提交已提供中文文档扫描:含敏感能力

Arkme 账号、记录、聊天与 interwoven-moments 集成,接入 DeepSeek Harness

41.6/100
综合分
4
GitHub 星标
4,872
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @senguoyun/dsh-arkme
npm 源 · @senguoyun/dsh-arkme 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · market
装得上吗
静态安装检查通过
未做真实安装
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 13 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

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

✓npm 包@senguoyun/dsh-arkme @ 3.0.40
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

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

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

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 93 处,展示前 77 条)
  • 写入本地文件
    lib/local-session-store.js:54
    await mkdir(root, {
  • 读取本地文件
    lib/local-session-store.js:63
    for (const session of await readdir(source, { withFileTypes: true })) {
  • 读取本地文件
    lib/local-session-store.js:76
    state = JSON.parse(await readFile(statePath, "utf8"));
  • 写入本地文件
    lib/local-session-store.js:101
    await mkdir(resolve(item.target, ".."), {
  • 读取本地文件
    lib/local-session-store.js:106
    await lstat(item.target);
  • 写入本地文件
    lib/local-session-store.js:111
    await rename(item.source, item.target);
  • 读取本地文件
    lib/local-session-store.js:116
    if ((await lstat(path)).isSymbolicLink()) throw new Error("会话迁移不接受符号链接");
  • 读取本地文件
    lib/local-session-store.js:117
    return await readdir(path, { withFileTypes: true });
  • 写入本地文件
    lib/local-session-store.js:126
    await mkdir(target, {
  • 读取本地文件
    lib/local-session-store.js:136
    if ((await lstat(to)).isSymbolicLink() || await digest(from) !== await digest(to)) throw new Error("共享附件内容冲突");
  • 读取本地文件
    lib/plugin-updater-helper-D_IL_E0l.js:173
    return existsSync(path) ? path : void 0;
  • 读取本地文件
    lib/plugin-updater-helper-D_IL_E0l.js:221
    if (existsSync(cachedPath)) {
  • 读取本地文件
    lib/plugin-updater-helper-D_IL_E0l.js:223
    if (inspectPluginPackageTgz(readFileSync(cachedPath)).version === manifest.version) return cachedPath;
  • 删除本地文件
    lib/plugin-updater-helper-D_IL_E0l.js:225
    await unlink(cachedPath).catch(() => void 0);
  • 写入本地文件
    lib/plugin-updater-helper-D_IL_E0l.js:235
    await mkdir(targetDirectory, {
  • 写入本地文件
    lib/plugin-updater-helper-D_IL_E0l.js:240
    await mkdir(temporaryDirectory, {
  • 写入本地文件
    lib/plugin-updater-helper-D_IL_E0l.js:246
    await writeFile(temporaryPath, bytes, { mode: 384 });
  • 写入本地文件
    lib/plugin-updater-helper-D_IL_E0l.js:249
    await rename(temporaryPath, cachedPath);
  • 删除本地文件
    lib/plugin-updater-helper-D_IL_E0l.js:251
    await unlink(temporaryPath).catch(() => void 0);
  • 读取本地文件
    lib/plugin-updater-helper-D_IL_E0l.js:310
    return parsePluginUpdateInstallSnapshot(JSON.parse(await readFile(this.path, "utf8")));
  • 写入本地文件
    lib/plugin-updater-helper-D_IL_E0l.js:318
    await mkdir(directory, {
  • 写入本地文件
    lib/plugin-updater-helper-D_IL_E0l.js:324
    await writeFile(temporary, `${JSON.stringify(snapshot, void 0, 2)}\n`, { mode: 384 });
  • 删除本地文件
    lib/plugin-updater-helper-D_IL_E0l.js:330
    await unlink(this.path).catch((error) => {
  • 读取本地文件
    lib/plugin-updater-helper-D_IL_E0l.js:381
    const stat = await lstat(pluginPath);
  • 删除本地文件
    lib/plugin-updater-helper-D_IL_E0l.js:383
    await unlink(pluginPath);
  • 删除本地文件
    lib/plugin-updater-helper-D_IL_E0l.js:422
    await unlink(temporaryPath).catch(() => void 0);
  • 读取本地文件
    lib/plugin-updater-helper-D_IL_E0l.js:465
    if (!isAbsolute(targetArtifactPath) || !existsSync(targetArtifactPath) || previousArtifactPath !== void 0 && (!isAbsolute(previousArtifactPath) || !ex
  • 执行外部命令来自配置/变量
    lib/plugin-updater-helper-D_IL_E0l.js:567
    return spawnSync(plan.execPath, buildTargetInstallArgs(plan), {
  • 执行外部命令来自配置/变量
    lib/plugin-updater-helper-D_IL_E0l.js:581
    return spawnSync(plan.execPath, buildTargetRemoveArgs(plan), {
  • 执行外部命令来自配置/变量
    lib/plugin-updater-helper-D_IL_E0l.js:600
    spawnSync(plan.execPath, buildTargetRemoveArgs(plan), {
  • 执行外部命令来自配置/变量
    lib/plugin-updater-helper-D_IL_E0l.js:617
    if (spawnSync(plan.execPath, args, {
  • 执行外部命令来自配置/变量
    lib/plugin-updater-helper-D_IL_E0l.js:649
    const child = spawn(plan.execPath, plan.restartArgv, {
  • 发起网络请求
    lib/plugin-updater-helper-D_IL_E0l.js:663
    const response = await fetch(new URL("/", plan.healthUrl), { signal: AbortSignal.timeout(2e3) });
  • 发起网络请求
    lib/plugin-updater-helper-D_IL_E0l.js:675
    const response = await fetch(plan.healthUrl, {
  • 删除本地文件
    lib/plugin-updater-helper-D_IL_E0l.js:769
    await unlink(planPath).catch(() => void 0);
  • 发起网络请求
    lib/account-session-directory-QtJHM752.js:269
    const response = await connection.createSharedFetchHandler("/api").fetch(new Request("http://localhost/api/$events/result", {
  • 发起网络请求
    lib/account-session-directory-QtJHM752.js:683
    return nativeRecord(await (await this.connection.createSharedFetchHandler("/api").fetch(new Request(`http://localhost/api/${endpoint}`, {
  • 执行外部命令来自配置/变量
    lib/private-filesystem-CGh4FtyA.js:17
    const sid = execFileSync(windowsExecutable("whoami.exe"), [
  • 执行外部命令来自配置/变量
    lib/private-filesystem-CGh4FtyA.js:44
    execFileSync(windowsExecutable("icacls.exe"), windowsAclArguments(path, directory), {
  • 写入本地文件
    lib/private-filesystem-CGh4FtyA.js:64
    chmodSync(path, 448);
  • 写入本地文件
    lib/private-filesystem-CGh4FtyA.js:71
    chmodSync(path, 384);
  • 写入本地文件
    lib/private-filesystem-CGh4FtyA.js:79
    chmod(path, 448, (error) => error === null ? resolve() : reject(error));
  • 写入本地文件
    lib/private-filesystem-CGh4FtyA.js:88
    chmod(path, 384, (error) => error === null ? resolve() : reject(error));
  • 读取本地文件
    lib/profile-bundle-policy-8_y3QfHe.js:28
    value = JSON.parse(readFileSync(path, "utf8"));
  • 读取本地文件
    lib/profile-bundle-policy-8_y3QfHe.js:38
    content = readFileSync(path, "utf8");
  • 读取本地文件
    lib/profile-bundle-policy-8_y3QfHe.js:52
    const stat = lstatSync(path);
  • 写入本地文件
    lib/profile-bundle-policy-8_y3QfHe.js:56
    writeFileSync(temporary, `${JSON.stringify(manifest, void 0, 2)}\n`, {
  • 写入本地文件
    lib/profile-bundle-policy-8_y3QfHe.js:61
    renameSync(temporary, path);
  • 删除本地文件
    lib/profile-bundle-policy-8_y3QfHe.js:63
    rmSync(temporary, { force: true });
  • 执行外部命令固定命令
    lib/profile-bundle-policy-8_y3QfHe.js:67
    const result = spawnSync("pnpm", ["--version"], {
  • 读取本地文件
    lib/profile-bundle-policy-8_y3QfHe.js:128
    const manifest = JSON.parse(readFileSync(manifestPath, "utf8"));
  • 写入本地文件
    lib/profile-bundle-policy-8_y3QfHe.js:162
    writeFileSync(temporary, `${JSON.stringify(manifest, void 0, 2)}\n`, {
  • 写入本地文件
    lib/profile-bundle-policy-8_y3QfHe.js:167
    renameSync(temporary, manifestPath);
  • 删除本地文件
    lib/profile-bundle-policy-8_y3QfHe.js:169
    rmSync(temporary, { force: true });
  • 读取本地文件
    lib/bundle-runtime-DYuPQ75e.js:10
    const value = JSON.parse(readFileSync(url, "utf8"));
  • 写入本地文件
    lib/install-store-D8GVqUOm.js:12
    mkdirSync(directory, {
  • 发起网络请求
    lib/local-session-runtime-bB2RJW1P.js:743
    const response = await fetch(`http://127.0.0.1:${peer.port}/native`, {
  • 发起网络请求
    lib/local-session-runtime-bB2RJW1P.js:873
    const response = await fetch(`http://127.0.0.1:${peer.port}/release`, {
  • 发起网络请求
    lib/local-session-runtime-bB2RJW1P.js:1032
    return this.transport.request(body, {
  • 发起网络请求
    lib/local-session-runtime-bB2RJW1P.js:1637
    if (!forwarded) result = await this.native.request(body, {
  • 发起网络请求
    lib/local-session-runtime-bB2RJW1P.js:1724
    return this.controls.request(nativeRecord(body.native), scoped);
  • 发起网络请求
    lib/local-session-runtime-bB2RJW1P.js:1730
    return this.incoming.run(body.sessionId === void 0 ? {} : { sessionId: String(body.sessionId) }, () => this.native.request(nativeRecord(body.native),
  • 写入本地文件
    lib/local-session-ownership-BBe4_saM.js:12
    mkdirSync(root, {
  • 执行外部命令来自配置/变量
    lib/extension-profile-restart-helper.js:72
    const child = spawn(plan.execPath, plan.restartArgv, {
  • 发起网络请求
    lib/extension-profile-restart-helper.js:89
    const response = await fetch(plan.healthUrl, {
  • 发起网络请求
    lib/extension-profile-restart-helper.js:113
    const root = await fetch(new URL("/", plan.healthUrl), { signal: AbortSignal.timeout(2e3) });
  • 执行外部命令来自配置/变量
    lib/extension-profile-restart-helper.js:122
    return spawnSync(plan.execPath, [
  • 删除本地文件
    lib/extension-profile-restart-helper.js:143
    removePath: async (path) => await rm(path, {
  • 读取本地文件
    lib/extension-profile-restart-helper.js:185
    const plan = parseExtensionProfileRestartPlan(JSON.parse(await readFile(planPath, "utf8")));
  • 删除本地文件
    lib/extension-profile-restart-helper.js:186
    await unlink(planPath).catch(() => void 0);
  • 读取本地文件
    lib/extension-profile-restart-helper.js:198
    const stored = JSON.parse(await readFile(planPath, "utf8"));
  • 删除本地文件
    lib/extension-profile-restart-helper.js:214
    await unlink(planPath);
  • 读取本地文件
    lib/extension-profile-restart-helper.js:217
    await rollback(parseExtensionProfileRestartPlan(JSON.parse(await readFile(planPath, "utf8"))), false, operations(overrides));
  • 删除本地文件
    lib/extension-profile-restart-helper.js:218
    await unlink(planPath);
  • 读取本地文件
    lib/extension-profile-restart-helper.js:225
    const rawPlan = JSON.parse(await readFile(planPath, "utf8"));
  • 发起网络请求
    lib/harness-session-client.js:449
    await fetch(apiPath, {
  • 写入本地文件
    lib/timeline-cache-worker.js:342
    mkdirSync(directory, {
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-anonymous-user-id@deepseek-ai/dsh-attachment@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-layout@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-sidebar@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-client-ui-theme@deepseek-ai/dsh-home-paths@deepseek-ai/dsh-host-webserver
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • Arkme账号集成
  • 记录与聊天集成
v3.0.382026-10-29
· What's Changed · 1029-1830 · chore(release): prepare v3.0.38 by @github-actions[bot] in Full Changelog:
原文(未汉化)
v3.0.372026-10-29
· What's Changed · 1029-1810 · chore(release): prepare v3.0.37 by @github-actions[bot] in Full Changelog:
原文(未汉化)
v3.0.362026-10-29
· What's Changed · 1029-1716 · chore(release): prepare v3.0.36 by @github-actions[bot] in Full Changelog:
原文(未汉化)
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
Arkme DSH 插件 Arkme 的 DeepSeek Harness 集成插件,为 DSH 提供账号、记录、聊天、Bot、社区、通话和市集能力。 - npm:@senguoyun/dsh-arkme - 源码:arkme-senx/arkme-dsh-plugin 版本与发布 - 项目首页顶部的 npm 版本 徽章显示当前可通过 npm 安装的正式版本。 - 功能分支只提交功能代码;版本号、更新说明和 GitHub Release 由合并后的发版流程统一处理。 - 发版负责人通过 GitHub Actions 的“准备插件发版”创建发版 PR;合并后自动发布 npm、创建同版本 Git Tag 和 GitHub Release。详见插件自动发版。 功能 - 内置搜索页支持快记搜索、搜索历史、纯图片库和已生成 AI 视频快速入口;图片库采用桌面端多列视图并排除普通视频。
展开完整文档(README 剩余 1 节)
Arkme DSH 插件

Arkme 的 DeepSeek Harness 集成插件,为 DSH 提供账号、记录、聊天、Bot、社区、通话和市集能力。

- npm:@senguoyun/dsh-arkme
- 源码:arkme-senx/arkme-dsh-plugin

版本与发布

- 项目首页顶部的 npm 版本 徽章显示当前可通过 npm 安装的正式版本。
- 功能分支只提交功能代码;版本号、更新说明和 GitHub Release 由合并后的发版流程统一处理。
- 发版负责人通过 GitHub Actions 的“准备插件发版”创建发版 PR;合并后自动发布 npm、创建同版本 Git Tag 和 GitHub Release。详见插件自动发版。

功能

- 内置搜索页支持快记搜索、搜索历史、纯图片库和已生成 AI 视频快速入口;图片库采用桌面端多列视图并排除普通视频。

安装

将插件安装到 DSH Web Profile:

DSH_HOME=<dsh-home> dsh plugin --profile web add @senguoyun/dsh-arkme
DSH_HOME=<dsh-home> dsh web

安装本地构建产物:

pnpm pack --pack-destination <artifact-directory>
DSH_HOME=<dsh-home> dsh plugin --profile web add <artifact-directory>/senguoyun-dsh-arkme-<version>.tgz
DSH_HOME=<dsh-home> dsh web

Release Set 运行时制品

使用当前 package.json.version 构建 Electron Release Set 动态加载的 Arkme 插件制品:

pnpm pack:runtime

默认输出到 dist/runtime-artifacts/:

dsh-arkme-<version>.tar.zst
artifact-metadata.json
SHA256SUMS

如需指定输出目录:

pnpm pack:runtime -- --output-dir /path/to/output

脚本会运行插件现有构建流程,并校验包名、版本、Release Set 必需入口、归档路径和文件类型;tar 条目顺序、mtime、owner/group 与权限均固定,在同一 Node.js/zstd 构建工具链下,同一源码重复构建会生成相同摘要。校验失败时不会留下不完整制品。

架构

插件通过一个 Host 业务层同时服务三个消费面,权限、数据、幂等和错误语义只实现一次:

| 目录 | 职责 |
| src/services/ | 按业务域拆分的 Host Service 与共享请求运行时 |
| src/tools/ | DSH 会话中的模型 Tools、Schema、grant 与注册适配 |
| src/sdk/ | 面向外部 DSH 插件的公开 Browser SDK |
| src/client/ | Arkme 内置 UI、状态与交互 |
| src/extensions/ | 扩展安装、发布、验签与持久运行时 |
| src/arkme-service.ts | 保持兼容的顶层组合门面 |

涉及 DSH 生命周期、Profile、Cordis、Tools 或 Web Host 的实现只依赖 DSH 公开扩展点,不导入 DSH 私有源码路径。

外部插件接入

浏览器侧 Consumer 使用公开 SDK,并先读取能力合同:

import { createArkmeSdk } from '@senguoyun/dsh-arkme/sdk'

const arkme = createArkmeSdk()
const capabilities = await arkme.capabilities()

可信 Host 插件可以声明 inject: ['arkmeData'],通过 ctx.arkmeData 复用相同业务 owner。完整的类型、账号作用域、生命周期和安全要求见 Consumer Plugin Contract。

本地开发

要求 Node.js ^22.19.0 || >=24.0.0,包管理器版本以 package.json 中的 packageManager 为准。

corepack enable
pnpm install
pnpm run typecheck
pnpm test
pnpm run build
pnpm run verify:call-assets

交付前应生成不可变 .tgz,在未修改的官方 DSH 和全新临时 Profile 中完成安装与运行验证;开发期 link: 安装不能作为最终兼容性证据。

安全与兼容边界

- Arkme 凭据、上游 Token、签名 URL 和内部定位信息只保留在 Host。
- Tools、SDK 和 UI 只接收最小结果或账号绑定的不透明引用。
- 写操作要求明确用户意图,并复用 Host 的权限、幂等与错误语义。
- 路径、端口、Profile 和可执行文件均来自运行时配置,不依赖开发电脑的固定目录。
- 新增 UI Host 能力时,必须同步评估并提供安全等价的 Tools 与 SDK 入口。

文档

- 工具注册与能力目录
- 外部插件消费合同
- 请求协调与限流
- 市集控制
- 扩展评论与评分
- 消息已读乐观更新
- 智能体代理发送链路
预览分享卡片长什么样 ↓arkme-senx/arkme-dsh-plugin
分享 · DeepSeek Harness Hub
arkme-senx/arkme-dsh-plugin

Arkme 账号、记录、聊天与 interwoven-moments 集成,接入 DeepSeek Harness

回到顶部