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

分布式执行节点 UllrAI/pamiya

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

把任务派给本机或远端 Agent,进度结果回原对话

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add UllrAI/pamiya
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · dev
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 15 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 82 处,展示前 71 条)
  • 写入本地文件
    packages/dsh-plugin/build.mjs:14
    await mkdir("dist", { recursive: true });
  • 写入本地文件
    packages/dsh-plugin/build.mjs:47
    await writeFile(
  • 读取本地文件
    packages/dsh-plugin/build.mjs:57
    await readFile(join(directory, "package.json"), "utf8"),
  • 读取本地文件
    packages/dsh-plugin/build.mjs:62
    const names = (await readdir(directory)).filter((name) =>
  • 读取本地文件
    packages/dsh-plugin/build.mjs:71
    ? await readFile(
  • 读取本地文件
    packages/dsh-plugin/build.mjs:84
    names.map((name) => readFile(join(directory, name), "utf8")),
  • 读取本地文件
    packages/dsh-plugin/build.mjs:99
    const ownLicense = await readFile("LICENSE", "utf8");
  • 写入本地文件
    packages/dsh-plugin/build.mjs:108
    await writeFile("dist/THIRD_PARTY_NOTICES.md", notices);
  • 写入本地文件
    packages/dsh-plugin/build.mjs:110
    await appendFile(
  • 写入本地文件
    packages/dsh-plugin/build.mjs:114
    await chmod("dist/worker.js", 0o755);
  • 写入本地文件
    packages/dsh-plugin/src/agent-runtime.js:10
    writeFile(path, JSON.stringify(value), { mode: 0o600 });
  • 写入本地文件
    packages/dsh-plugin/src/agent-runtime.js:92
    await mkdir(root, { recursive: true, mode: 0o700 });
  • 读取本地文件
    packages/dsh-plugin/src/agent-runtime.js:97
    await readFile(resolve(root, `${sessionRef}.json`), "utf8"),
  • 写入本地文件
    packages/dsh-plugin/src/agent-runtime.js:125
    await mkdir(ownedHome, { recursive: true, mode: 0o700 });
  • 写入本地文件
    packages/dsh-plugin/src/agent-runtime.js:127
    await mkdir(cwd, { recursive: true, mode: 0o700 });
  • 读取本地文件
    packages/dsh-plugin/src/agent-runtime.js:129
    (await readdir(cwd, { withFileTypes: true }))
  • 读取本地文件
    packages/dsh-plugin/src/agent-runtime.js:134
    before.set(name, (await stat(resolve(cwd, name))).mtimeMs);
  • 写入本地文件
    packages/dsh-plugin/src/agent-runtime.js:252
    await mkdir(env.PI_CODING_AGENT_DIR, { recursive: true, mode: 0o700 });
  • 写入本地文件
    packages/dsh-plugin/src/agent-runtime.js:284
    if (env[key]) await mkdir(env[key], { recursive: true, mode: 0o700 });
  • 读取本地文件
    packages/dsh-plugin/src/agent-runtime.js:344
    for (const entry of await readdir(cwd, { withFileTypes: true }))
  • 读取本地文件
    packages/dsh-plugin/src/agent-runtime.js:347
    info = await stat(file);
  • 读取本地文件
    packages/dsh-plugin/src/capabilities.js:79
    await readFile(resolve(directory, "capabilities.json"), "utf8"),
  • 读取本地文件
    packages/dsh-plugin/src/capabilities.js:108
    for (const entry of (await readdir(root)).reverse())
  • 读取本地文件
    packages/dsh-plugin/src/capabilities.js:118
    await access(file);
  • 写入本地文件
    packages/dsh-plugin/src/capabilities.js:165
    await mkdir(resolve(logFile, ".."), { recursive: true, mode: 0o700 });
  • 写入本地文件
    packages/dsh-plugin/src/capabilities.js:166
    await writeFile(logFile, "", { mode: 0o600 });
  • 执行外部命令来自配置/变量
    packages/dsh-plugin/src/capabilities.js:173
    const child = spawn(command, args, {
  • 执行外部命令固定命令
    packages/dsh-plugin/src/capabilities.js:191
    spawn(
  • 请求外部主机runmqtt.com
    packages/dsh-plugin/src/controller.js:24
    const response = await fetch("https://runmqtt.com/public-broker", {
  • 发起网络请求
    packages/dsh-plugin/src/controller.js:24
    const response = await fetch("https://runmqtt.com/public-broker", {
  • 写入本地文件
    packages/dsh-plugin/src/controller.js:598
    await mkdir(workspace, { recursive: true, mode: 0o700 });
  • 执行外部命令来自配置/变量
    packages/dsh-plugin/src/controller.js:608
    const child = spawn(
  • 读取本地文件
    packages/dsh-plugin/src/controller.js:1079
    content: (await readFile(this.workerFile)).toString("base64"),
  • 读取本地文件
    packages/dsh-plugin/src/file-download.js:31
    return JSON.parse(await readFile(reference.path, "utf8"));
  • 发起网络请求
    packages/dsh-plugin/src/file-store.js:95
    const result = await this.fetch(url, {
  • 发起网络请求
    packages/dsh-plugin/src/host.js:415
    async fetch(request) {
  • 读取本地文件
    packages/dsh-plugin/src/skills.js:173
    const path = await realpath(input),
  • 读取本地文件
    packages/dsh-plugin/src/skills.js:174
    info = await stat(path);
  • 读取本地文件
    packages/dsh-plugin/src/skills.js:180
    for (const entry of await readdir(dir, { withFileTypes: true })) {
  • 读取本地文件
    packages/dsh-plugin/src/skills.js:183
    actual = await realpath(file);
  • 读取本地文件
    packages/dsh-plugin/src/skills.js:186
    const st = await stat(actual);
  • 读取本地文件
    packages/dsh-plugin/src/skills.js:198
    files[name] = (await readFile(file)).toString("base64");
  • 写入本地文件
    packages/dsh-plugin/src/skills.js:207
    await mkdir(dirname(path), { recursive: true, mode: 0o700 });
  • 写入本地文件
    packages/dsh-plugin/src/skills.js:209
    await writeFile(temp, JSON.stringify(value), { mode: 0o600 });
  • 写入本地文件
    packages/dsh-plugin/src/skills.js:210
    await rename(temp, path);
  • 删除本地文件递归
    packages/dsh-plugin/src/skills.js:328
    await rm(target, { recursive: true, force: true });
  • 写入本地文件
    packages/dsh-plugin/src/skills.js:341
    await mkdir(dirname(file), { recursive: true, mode: 0o700 });
  • 写入本地文件
    packages/dsh-plugin/src/skills.js:342
    await writeFile(file, Buffer.from(data, "base64"), {
  • 写入本地文件
    packages/dsh-plugin/src/skills.js:347
    await mkdir(dirname(target), { recursive: true, mode: 0o700 });
  • 删除本地文件递归
    packages/dsh-plugin/src/skills.js:352
    await rm(temporary, { recursive: true, force: true });
  • 删除本地文件递归
    packages/dsh-plugin/src/skills.js:355
    await rm(temporary, { recursive: true, force: true });
  • 写入本地文件
    packages/dsh-plugin/src/worker-cli.js:77
    await mkdir(config.workspace, { recursive: true, mode: 0o700 });
  • 写入本地文件
    packages/dsh-plugin/src/worker-cli.js:89
    await mkdir(directory, { recursive: true, mode: 0o700 });
  • 删除本地文件
    packages/dsh-plugin/src/worker-cli.js:99
    await unlink(lockPath);
  • 删除本地文件
    packages/dsh-plugin/src/worker-cli.js:110
    await unlink(lockPath).catch(() => {});
  • 写入本地文件
    packages/dsh-plugin/src/worker.js:39
    await mkdir(dirname(path), { recursive: true, mode: 0o700 });
  • 写入本地文件
    packages/dsh-plugin/src/worker.js:41
    await writeFile(temporary, JSON.stringify(value), { mode: 0o600 });
  • 写入本地文件
    packages/dsh-plugin/src/worker.js:42
    await rename(temporary, path);
  • 读取本地文件
    packages/dsh-plugin/src/worker.js:46
    return JSON.parse(await readFile(path, "utf8"));
  • 读取本地文件
    packages/dsh-plugin/src/worker.js:53
    const base = await realpath(root);
  • 读取本地文件
    packages/dsh-plugin/src/worker.js:56
    ? await realpath(dirname(target))
  • 读取本地文件
    packages/dsh-plugin/src/worker.js:57
    : await realpath(target);
  • 读取本地文件
    packages/dsh-plugin/src/worker.js:66
    if (!contained(await realpath(target)))
  • 读取本地文件
    packages/dsh-plugin/src/worker.js:98
    const entries = await readdir(await safePath(workspace, input.path), {
  • 写入本地文件
    packages/dsh-plugin/src/worker.js:121
    await writeFile(path, input.text, { encoding: "utf8", signal });
  • 执行外部命令来自配置/变量
    packages/dsh-plugin/src/worker.js:127
    const child = spawn(input.command, {
  • 发起网络请求
    packages/dsh-plugin/src/worker.js:400
    downloadSkill(await skillChannel.request({ hash }, id, signal), {
  • 发起网络请求
    packages/dsh-plugin/src/worker.js:541
    modelCall: (request, signal) => models.request(request, id, signal),
  • 发起网络请求
    prototype/worker/index.js:2
    async fetch(request, env) {
  • 发起网络请求
    prototype/worker/index.js:3
    const response = await env.ASSETS.fetch(request);
  • 发起网络请求
    prototype/worker/index.js:13
    return env.ASSETS.fetch(new Request(indexUrl, request));
扫描于 2026/10/31(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库
涉及外部主机:runmqtt.com

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

为 DSH 提供分布式 worker:把任务派给本地或远程的 DSH、Codex、Claude Code 和 Pi 智能体,进度和结果都在同一个会话里。

README

由 DeepSeek 最新模型翻译生成
Pamiya English · 简体中文 一个对话,多处执行。 Pamiya 是 DeepSeek Harness(DSH)的分布式 Worker 插件。在同一个对话里,把任务交给本机或远端节点上的 DSH、Codex、Claude Code、Pi,也能调用自定义脚本动作。选择在哪里执行,在原对话中查看进度、结果与产物。 在一个对话里调度多个节点 | 能力 | 使用体验 | | 本机即节点 | 安装后自动加入,通过本地 IPC 工作;不必先配置 MQTT | | 对话选择电脑 | 输入框中选择节点,也可直接说要在哪台电脑执行 | | 四种完整 Agent | DSH、Codex、Claude Code、Pi 保留自己的工具和执行循环,支持会话续接 | | 默认复用模型 | 通过 DSH 共享模型通道;也可为节点上的 Agent 选择独立配置 | | 自定义能力 | 声明脚本动作和输入 schema,供 Agent 调用 | | 任务有着落 | 持久化进度、业务结果确认、停止与核对;完成后回到原对话 | | Skills 按需同步 | 携带任务需要的 Skills,检查依赖,准备好后继续执行 | 几分钟开始 在 DSH 的 插件 → 添加插件 中粘贴,安装并启用:
展开完整文档(README 剩余 1 节)
Pamiya

English · 简体中文

一个对话,多处执行。

Pamiya 是 DeepSeek Harness(DSH)的分布式 Worker 插件。在同一个对话里,把任务交给本机或远端节点上的 DSH、Codex、Claude Code、Pi,也能调用自定义脚本动作。选择在哪里执行,在原对话中查看进度、结果与产物。

在一个对话里调度多个节点

| 能力 | 使用体验 |
| 本机即节点 | 安装后自动加入,通过本地 IPC 工作;不必先配置 MQTT |
| 对话选择电脑 | 输入框中选择节点,也可直接说要在哪台电脑执行 |
| 四种完整 Agent | DSH、Codex、Claude Code、Pi 保留自己的工具和执行循环,支持会话续接 |
| 默认复用模型 | 通过 DSH 共享模型通道;也可为节点上的 Agent 选择独立配置 |
| 自定义能力 | 声明脚本动作和输入 schema,供 Agent 调用 |
| 任务有着落 | 持久化进度、业务结果确认、停止与核对;完成后回到原对话 |
| Skills 按需同步 | 携带任务需要的 Skills,检查依赖,准备好后继续执行 |

几分钟开始

在 DSH 的 插件 → 添加插件 中粘贴,安装并启用:

https://github.com/UllrAI/pamiya/releases/download/v0.3.0/pamiya-dsh-plugin-0.3.0.tgz

桌面安装不需要 Git、源码或额外的 Node.js。打开 Pamiya 即可使用本机;添加其他电脑时再配置 MQTT,并复制界面给出的接入命令。

第一次体验 Skills,可打开节点的 Skills → 运行合成示例。示例只使用内置测试资源,能看到依赖检查、准备、脚本执行和真实回传全过程。

自助上手 · 交给 DSH 代装 · 全部安装方式 · Agent 与自定义动作

能力跟着任务走

在本机装好的 Skill,换到另一台电脑时不应只剩一段提示词。Pamiya 按需同步完整 Skill,检查依赖,准备好后继续原任务:

1. 在对话中指定节点和 Skill,或打开 Pamiya → 节点 → Skills。
2. 同步 SKILL.md、脚本与资源;检查声明的命令、环境变量、Node/Python 依赖及平台要求。
3. 有缺项时明确显示“需要准备”。选择 准备并继续,在节点的独立环境安装可准备的依赖,然后继续同一个任务。
4. Agent 使用同步的能力执行工作;进度、结果和回调回到原对话。

远端 Skill 文件走 HTTPS 中转,双方只需出站连接,MQTT 只传小型文件引用。内容按版本缓存,同一版本无需重复传输;已有会话固定使用原版本,新任务才采用更新。本地 Skill、远端 Skill、模型鉴权各自有清晰的归属,无需复制整份用户配置。

Skills 完整使用指南与依赖声明 · S3 首次配置引导 · 实际验收记录

当前边界

当前发布 插件 0.3 预览版。macOS DSH 桌面和 Linux Worker 已实际验收;Windows 实机待验收。Skills 依赖检查依据可选 pamiya.json,不会从任意自然语言说明中推断所有依赖。系统命令和环境变量缺失会给出明确处理项;MCP、插件、个人凭据和项目文件不随 Skill 自动迁移。

公共 RunMQTT 仅用于内置合成验证。个人 Skills 和真实远端任务使用私有连接;本机工作不经过 MQTT。

文档与架构

插件使用与实现 · 架构阅读指南 · 需求与交互 · 独立交互原型

插件使用一个 DSH Host、持久化任务和多个 Worker。下图描述可扩展的平台架构;PostgreSQL、对象存储等不是安装插件的前置条件。独立原型仍为模拟,平台扩展提案与运行能力分别记录。

Pamiya 架构阅读总览

详细架构图 · 可编辑架构图 · 范围与取舍

从源码运行

需要 Node.js 22.19 或更新版本:

npm ci
node scripts/install-dsh-plugin.mjs
npm run plugin:test
npm run docs:check

贡献说明 · 视觉资产 · Apache-2.0
预览分享卡片长什么样 ↓UllrAI/pamiya
分享 · DeepSeek Harness Hub
UllrAI/pamiya

把任务派给本机或远端 Agent,进度结果回原对话

回到顶部