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-arkmenpm 源 · @senguoyun/dsh-arkme 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · market
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 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🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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账号集成
- 记录与聊天集成
最近更新
在 GitHub 查看全部 →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 入口。
文档
- 工具注册与能力目录
- 外部插件消费合同
- 请求协调与限流
- 市集控制
- 扩展评论与评分
- 消息已读乐观更新
- 智能体代理发送链路预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
arkme-senx/arkme-dsh-plugin
Arkme 账号、记录、聊天与 interwoven-moments 集成,接入 DeepSeek Harness
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,025未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,358已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13938 个插件含 PR 收录与…
★ 350已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7