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

多智能体自进化开发平台 Prism-Shadow/penguin-harness

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

统一、稳定的 Agent 自进化框架全自动优化:任意模型 · 任意算法 · 任意 Benchmark

71.1/100
综合分
3,111
GitHub 星标
—
npm 周下载
—/5
用户评分

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

自动兼容检查未通过:缺少 main/exports/bin 入口声明;engines.node 要求 >=24,不满足 Node 22.19.0;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Prism-Shadow/penguin-harness
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

缺少 main/exports/bin 入口声明;engines.node 要求 >=24,不满足 Node 22.19.0;仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

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

✗npm 包penguin-harness(未发布到 npm,仅可源码安装)
✗Node 引擎要求 >=24 · 基线 Node 22.19 不满足
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

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

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

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

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 41 处,展示前 41 条)
  • 发起网络请求
    packages/browser-extension/src/pairing.ts:86
    res = await fetch(new URL(EXTENSION_PAIR_PATH, target.origin), {
  • 发起网络请求
    packages/cli/src/auth-session.ts:98
    const req = (secure ? https : http).request(
  • 执行外部命令来自配置/变量
    packages/cli/src/client.ts:180
    child = spawn(process.execPath, [entry, "server"], {
  • 读取密钥环境变量
    packages/cli/src/client.ts:221
    if (!loopback && !process.env.PENGUIN_API_TOKEN?.trim()) {
  • 读取密钥环境变量
    packages/cli/src/client.ts:280
    const envToken = process.env.PENGUIN_API_TOKEN?.trim();
  • 发起网络请求
    packages/cli/src/client.ts:332
    const res = await fetch(`${this.conn.baseUrl}${apiPath}`, init);
  • 发起网络请求
    packages/cli/src/client.ts:341
    return fetch(`${this.conn.baseUrl}${apiPath}`, { ...init, headers });
  • 发起网络请求
    packages/cli/src/client.ts:364
    const retried = await fetch(`${this.conn.baseUrl}${apiPath}`, { ...init, headers });
  • 写入本地文件
    packages/cli/src/lang-config.ts:83
    await mkdir(dirname(rc.rcPath), { recursive: true });
  • 读取本地文件
    packages/cli/src/lang-config.ts:86
    content = await readFile(rc.rcPath, "utf8");
  • 执行外部命令来自配置/变量
    packages/cli/src/lang-config.ts:99
    const child = spawn(shell, ["-i"], {
  • 发起网络请求
    packages/cli/src/server-session.ts:109
    await client.request("PATCH", `/api/sessions/${enc(sessionId)}`, { thinkingLevel: level });
  • 发起网络请求
    packages/cli/src/server-task.ts:226
    await opts.client.request(
  • 执行外部命令来自配置/变量
    packages/desktop/build/evsign.cjs:26
    const child = childProcess.spawn(client, [file, "-key", key, "-sha256"], {
  • 读取密钥环境变量
    packages/desktop/build/evsign.cjs:46
    const key = process.env.EVSIGN_KEY;
  • 读取本地文件
    packages/desktop/build/evsign.cjs:68
    if (!fs.existsSync(client)) {
  • 执行外部命令来自配置/变量
    packages/desktop/build/verify-windows-signature.cjs:31
    const stdout = childProcess.execFileSync(
  • 写入剪贴板
    packages/desktop/src/builtin-browser.ts:482
    clipboard.writeText(params.linkURL);
  • 写入剪贴板
    packages/desktop/src/builtin-browser.ts:485
    clipboard.writeText(params.srcURL);
  • 执行外部命令来自配置/变量
    packages/desktop/src/login-shell-env.ts:168
    child = spawn(opts.shell, ["-i", "-l", "-c", PROBE_COMMAND], {
  • 发起网络请求
    packages/desktop/src/server-process.ts:86
    const res = await fetch(`${origin}/`, {
  • 发起网络请求
    packages/desktop/src/server-process.ts:182
    await fetch(`${server.origin}/api/desktop/shutdown`, {
  • 发起网络请求
    packages/desktop/src/updater.ts:88
    net.fetch(url, { headers: init.headers, signal: init.signal });
  • 执行外部命令来自配置/变量
    packages/desktop/src/win-aumid.ts:31
    nodeExecFile(file, args, options, (error) => callback(error));
  • 发起网络请求
    packages/landing/src/lib/download-source.ts:226
    const headers = fetch(url, {
  • 发起网络请求
    packages/landing/src/lib/download-source.ts:376
    const res = await fetch(url, { cache: "no-store", signal: controller.signal });
  • 发起网络请求
    packages/server/src/index.ts:315
    fetch: (request: Request, env) => this.app?.fetch(request, env) ?? startingResponse(),
  • 发起网络请求
    packages/server/src/index.ts:464
    fetch: (request: Request, env) => this.app?.fetch(request, env) ?? startingResponse(),
  • 读取本地文件
    packages/ui/src/vite-plugin.ts:32
    return readdirSync(dir)
  • 读取本地文件
    packages/ui/src/vite-plugin.ts:37
    source: readFileSync(new URL(file, dir), "utf8"),
  • 写入剪贴板
    packages/web/src/lib/clipboard.ts:34
    export function writeClipboard(text: string): Promise<boolean> {
  • 写入剪贴板
    packages/web/src/lib/selection-copy.ts:102
    return writeClipboard(text);
  • 读取本地文件
    plugins/sandbox-bwrap/src/index.ts:83
    accessSync(target, constants.X_OK);
  • 读取本地文件
    plugins/sandbox-bwrap/src/index.ts:165
    isDirectory = statSync(resolved).isDirectory();
  • 执行外部命令来自配置/变量
    plugins/sandbox-bwrap/src/index.ts:191
    const probe = spawnSync(runner, BASE_PROFILE_PROBE, { timeout: timeoutMs, stdio: "ignore" });
  • 执行外部命令来自配置/变量
    plugins/sandbox-bwrap/src/index.ts:202
    execFile(runner, BASE_PROFILE_PROBE, { timeout: timeoutMs }, (err, _stdout, stderr) => {
  • 执行外部命令来自配置/变量
    plugins/sandbox-seatbelt/src/index.ts:189
    const probe = spawnSync(
  • 执行外部命令来自配置/变量
    plugins/sandbox-seatbelt/src/index.ts:214
    execFile(
  • 执行外部命令来自配置/变量
    plugins/sandbox-wsl/src/host.ts:60
    const child = spawn(wslExe(), args, {
  • 执行外部命令来自配置/变量
    plugins/sandbox-wsl/src/launch.ts:104
    const child = spawn(job.wsl, wslArgs(job, process.cwd()), {
  • 执行外部命令来自配置/变量
    plugins/sandbox-wsl/src/tasks.ts:244
    const child = spawn(powershell(), ["-NoProfile", "-Command", elevationCommand(script, log)], {
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

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

界面预览

6 张 · 点击查看大图

功能亮点

  • 统一稳定的自进化框架
  • 全自动优化模型

🐧 统一稳定的 RSI 平台

README

由 DeepSeek 最新模型翻译生成
PenguinHarness 统一、稳定的 Agent 自进化框架全自动优化:任意模型 · 任意算法 · 任意 Benchmark = 24" /> 为什么选择 PenguinHarness PenguinHarness 是开源的 Agent 自进化(recursive self-improvement, RSI)框架。模型保持不变,进化的是 Harness:提示词、Skill、工具和钩子。它可以在你的电脑或服务器上运行,提供桌面端、Web App、CLI 和 SDK。 - 一个框架,集齐所有 RSI 算法。 Default、OPRO、APE、ACE、AWM、SkillAdam、SkillOpt、OpenSkill 和 TRACE 都以插件形式提供,跑在同一套内置 Benchmark、记分板和快照上。 - 一句话生成一个 Agent 应用。 描述你的需求,Agent 就会把应用、页面和运行说明都写好。 - 跑起来很便宜。 工具集刻意保持精简,专为开源模型调优:在我们的数据分析测试集上,以 Claude Code 1/70 的成本取得最高准确率。 自进化 选一个算法,选一个 Benchmark,一个 Agent 就能一轮一轮地优化另一个 Agent。每个候选版本都是一个新版本,改动前先存快照;每个分数都会进入评估中心。
展开完整文档(README 剩余 1 节)
PenguinHarness

统一、稳定的 Agent 自进化框架全自动优化:任意模型 · 任意算法 · 任意 Benchmark

= 24" />

为什么选择 PenguinHarness

PenguinHarness 是开源的 Agent 自进化(recursive self-improvement, RSI)框架。模型保持不变,进化的是 Harness:提示词、Skill、工具和钩子。它可以在你的电脑或服务器上运行,提供桌面端、Web App、CLI 和 SDK。

- 一个框架,集齐所有 RSI 算法。 Default、OPRO、APE、ACE、AWM、SkillAdam、SkillOpt、OpenSkill 和 TRACE 都以插件形式提供,跑在同一套内置 Benchmark、记分板和快照上。
- 一句话生成一个 Agent 应用。 描述你的需求,Agent 就会把应用、页面和运行说明都写好。
- 跑起来很便宜。 工具集刻意保持精简,专为开源模型调优:在我们的数据分析测试集上,以 Claude Code 1/70 的成本取得最高准确率。

自进化

选一个算法,选一个 Benchmark,一个 Agent 就能一轮一轮地优化另一个 Agent。每个候选版本都是一个新版本,改动前先存快照;每个分数都会进入评估中心。

| 工具包 | 算法 |
| default-rsi-toolkit | 试跑、反思、提升:每轮一个假设、一处改动 |
| opro-rsi-toolkit | OPRO:从已评分指令的历史中生成新指令 |
| ape-rsi-toolkit | APE:从示例中归纳候选指令 |
| ace-rsi-toolkit | ACE:把 Trace 中的经验提炼成 playbook |
| awm-rsi-toolkit | AWM:从成功的运行中归纳出工作流 |
| skilladam-rsi-toolkit | SkillAdam:持续更新问题记录,按评分变化调整 Skill 编辑预算 |
| skillopt-rsi-toolkit | SkillOpt:限制文本编辑幅度,按评分筛选候选,并在训练轮次之间总结经验 |
| openskill-rsi-toolkit | OpenSkill:先通过外部检索与独立虚拟验证构建技能,再评测冻结的 State |
| trace-rsi-toolkit | TRACE:对比成功与失败轨迹,进化技能库并测量一致性 |

每个新建的 Project 都自带十七个 Benchmark,以 Harbor 任务的形式跑在 Docker 里:PenguinHarness Benchmark Sec A 到 Sec E(来自 rag-bench-essential、DeepSWE、AutomationBench、Terminal-Bench-Science 和 Terminal-Bench),以及 GDPEVO Essential 六个场景各自的 Train/Test 对,共十二个 GDPEVO Essential 条目。更多 Benchmark 见 penguin-harness-benchmark。

演示:以决策智能体为例,经过评测、一次工作方法的改进和同模型复测,分数从 84 提升到 100,每次运行的成本都看得到。

https://github.com/user-attachments/assets/8ab00e36-9da6-4706-aede-5cf63c3080fc

一句话,一个应用

新建一个法务智能体,负责审阅合同、协议等法律文件:找出风险条款、说明理由并给出修改建议。再在法务智能体上做一个 Agent Workbench 标签页,当作它的工作台:我上传文件后,由它在后台分析,完成后生成一份分析报告供我下载。页面上只要上传、文件列表(每个文件的处理状态)和报告下载,不显示任何对话过程;颜色一律取自主题变量,明暗两种主题下都要好看。

结果:一个法务审阅应用。上传合同后,可以查看每个文件的处理状态,并下载列出风险条款、理由和修改建议的审阅报告。5 次样件审阅的模型花费是 $0.0423。

https://github.com/user-attachments/assets/138744cd-9ab8-42f3-bf6d-b0a25f404132

Agent 能做什么

浏览器自动化 Agent 通过 PenguinHarness Browser 扩展操作你自己的 Chrome,也可以用桌面端的内置浏览器。读页面用文本、操作用短脚本,每一步只花很少的 Token。教程

工作台每个 Agent 都能有自己的热定制工作台:开口要一个,Agent 就把页面和服务端代码一起写好,作为标签页显示在对话旁边。教程

远程机器添加一台机器,服务器通过 ssh 连接它。那台机器上 Workspace 里的会话就在那台机器上运行,而且仍在同一个窗口里。教程

Agent API
通过统一 API 把任意 Agent 接入外部应用:经 HTTP 发送输入,再以 AMSP 事件流读回运行过程。教程

回复还可以自带 UI:选项、表单、步骤、Mermaid 图表和实时小组件(A2UI)。

评测结果

每个 Harness 都在自己通常搭配的模型上,跑同一组任务:

内置插件库

Agent 还能编写并优化自己的 Skill(文档)。

| 分类 | 插件 |
| Agent 自进化 | default-rsi-toolkit, opro-rsi-toolkit, ape-rsi-toolkit, ace-rsi-toolkit, awm-rsi-toolkit, skilladam-rsi-toolkit, skillopt-rsi-toolkit, openskill-rsi-toolkit, trace-rsi-toolkit |
| 办公效率 | a2ui, data-analysis, use-firecrawl, browser-automation, use-bento-slides, humanizer, goal, continual-learning, agent-company, penguin-support |
| 软件开发 | software-development, use-claude-code |
| AI 应用开发 | agent-development, agent-evaluation, model-development, skill-porting |

支持的模型

重点支持以下模型系列。各型号的具体版本和供应商见应用的模型库。

闭源模型

| 模型 | 服务商 |
| GPT 6.1 | OpenAI, OpenRouter |
| Claude 5.5 | Anthropic, OpenRouter, OpenCode Go |
| Gemini 4 | Google Gemini, OpenRouter, Penguin Go, OpenCode Go |
| Grok 4.7 | OpenRouter, OpenCode Go |
| Qwen3.8 Max | Qwen Token Plan, Qwen Pay-As-You-Go, OpenRouter, TokenDance, OpenCode Go |

开源模型

| 模型 | 服务商 |
| DeepSeek V4.1 | DeepSeek, OpenRouter, Fireworks AI, Atlas Cloud, TokenDance, Penguin Go, OpenCode Go, Qwen Token Plan, Qwen Pay-As-You-Go, ModelScope |
| Kimi K3 | Moonshot AI, OpenRouter, Fireworks AI, TokenDance, OpenCode Go, Qwen Pay-As-You-Go |
| GLM 5.3 | Z.AI, OpenRouter, TokenDance, OpenCode Go |
| Hunyuan 4 | OpenRouter, TokenDance, OpenCode Go |
| MiMo v2.6 | OpenRouter, TokenDance, OpenCode Go |

Claude 5.5 的 OpenCode Go 预设为 Haiku;Fable 5.1、Opus 5.5 和 Sonnet 5.5 可通过 Anthropic、OpenRouter 使用。Hunyuan 4 使用 hy4-preview。

此外支持自定义 OpenAI 协议端点,可接入 1000+ 个在线和本地模型。

安装

桌面端

从 penguin.ooo/download 下载安装包:macOS 11+(dmg)、Windows 10+(exe)或 Linux x64(AppImage、deb)。应用打开即已登录,无需终端。

CLI 与服务器

| 平台 | 安装命令 |
| Linux / macOS | curl -fsSL https://penguin.ooo/install.sh \| sh |
| Windows(PowerShell) | irm https://penguin.ooo/install.ps1 \| iex |
| npm(Node >= 24) | npm install -g @prismshadow/penguin-cli |

然后运行 penguin web:它在 http://127.0.0.1:7364 上提供 Web App,在设置密码之前会打印首次登录链接;模型在模型库页面配置。桌面端和 CLI 共用 ~/.penguin/data。

Docker

docker run -d --name penguin -p 127.0.0.1:7364:7364 -v penguin-data:/data hiyouga/penguinharness:0.2.18
docker logs penguin # 首次登录链接,在本机可原样打开

镜像在 7364 端口提供服务,数据存放在 /data 卷,适用于 linux/amd64 和 linux/arm64;latest 跟随 main 中影响镜像运行代码或构建输入的改动,每次发布也会打上对应版本号的标签。上面的示例只监听回环地址。如需面向网络的部署、Compose 和升级,参见 Docker 快速上手。

离线安装(物理隔离的机器)

每个 GitHub Release 为每个目标平台恰好附带一个包:Linux 和 macOS 提供 x64 / arm64 版本,Windows 提供 x64 版本,另有一个不含运行时的通用包。在线安装和离线安装用的是同一个文件。每个包都封入程序本体、对应的 SHA256 校验值和所在平台的安装器。在联网机器上下载这一个文件,拷贝到目标机器,解压一次,运行自带的安装器即可,无需网络,也无需单独携带校验文件(封入的 SHA256 始终会被校验)。

Linux(arm64 机器请使用 penguin-linux-arm64.tar.gz):

mkdir penguin-install
tar -xzf penguin-linux-x64.tar.gz -C penguin-install
./penguin-install/install.sh

macOS(以 Apple silicon 为例;Intel 机器请使用 penguin-darwin-x64.tar.gz):

mkdir penguin-install
tar -xzf penguin-darwin-arm64.tar.gz -C penguin-install
./penguin-install/install.sh

Windows(解压后双击 install.cmd,或在 PowerShell 中运行):

Expand-Archive penguin-win32-x64.zip -DestinationPath penguin-install
cd penguin-install
.\install.cmd

Chrome 扩展(可选)

PenguinHarness Browser 让 Agent 在你自己的 Chrome 里操控你交给它们的标签页。

CLI 与 SDK

同一套引擎,支持脚本调用,专为 Agent 驱动而设计:

penguin config model add --provider deepseek --model-id deepseek-flash --api-key sk-... --set-default
penguin run -m "Create hello.txt containing Hello, Penguin" # 单次任务 penguin chat # 交互式 REPL(/compact、/clear、/exit、Ctrl-C 中断) penguin server # 无界面服务(与 Web 应用同一套 API)

import { createAgent, isCompleteModelMessage, userText } from "@prismshadow/penguin-core";

const agent = await createAgent({ agentId: "default_agent" });
const session = await agent.createSession({ workspaceDir: process.cwd() });

for await (const output of session.run([userText("Create hello.txt containing hi")], {
approve: async () => "allow", // 按工具调用逐个审批
})) {
if (isCompleteModelMessage(output) && output.payload.type === "text") {
console.log(output.payload.text);
}
}

路线图

- [x] Benchmark 套件公开发布
- [x] 桌面端
- [x] 支持 Windows
- [x] Agent 公司与模板
- [ ] 公司级自进化
- [ ] 集成 OpenShell(权限管控的 shell)
- 还有更多,敬请期待……

参与开发

pnpm install && pnpm build # 先构建:core 的导出指向 dist/
pnpm dev # 服务端 + Web 一起启动(带前缀日志,依赖只构建一次)

用编码 Agent 开发本仓库:开发用的 Skill 在 .agents/skills/ 下(penguin-harness-dev、penguin-harness-frontend、penguin-harness-manual-test、penguin-harness-writing)。Claude Code 通过 .claude → .agents 软链接直接加载,无需安装;换用其他 Agent 时,把 .agents/skills/* 链接或复制到它读取 Skill 的目录即可。

完整的 Workspace 开发指南见 CONTRIBUTING.md:开发命令、质量门禁、仓库布局和 changelog 规则。

贡献者

感谢所有为 PenguinHarness 贡献过的伙伴。

引用

如果你的研究使用了 PenguinHarness,请引用:

@software{penguinharness2026,
author = {{PrismShadow Team}},
title = {PenguinHarness: Efficient Self-Improving Harness for Everyone},
year = {2026},
url = {https://github.com/Prism-Shadow/penguin-harness},
license = {Apache-2.0}
}

致谢

本仓库得益于以下项目:

- MinGit:Windows 上捆绑的 POSIX shell 和 Git
- GenericAgent:内置浏览器自动化

各项目的许可证见 THIRD-PARTY-NOTICES.md。

协议

Apache-2.0 © 2026 Prism Shadow

维护团队

组织:PrismShadow AI、清和乐章

维护成员:

- Yaowei Zheng(LlamaFactory、PrismShadow)
- Yangxi Xiang
- Junhao Hu
- Leijun Zhou(PrismShadow)
- Zhihao Liu(PrismShadow)
- Xiang Qu(PrismShadow)
- Hengjin Dou(PrismShadow)
- Ning Wang(清和乐章)
- Ming Lu(清和乐章)

Built with ❤️
预览分享卡片长什么样 ↓Prism-Shadow/penguin-harness
分享 · DeepSeek Harness Hub
Prism-Shadow/penguin-harness

统一、稳定的 Agent 自进化框架全自动优化:任意模型 · 任意算法 · 任意 Benchmark

回到顶部