统一、稳定的 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
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 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🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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 ❤️预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Prism-Shadow/penguin-harness
统一、稳定的 Agent 自进化框架全自动优化:任意模型 · 任意算法 · 任意 Benchmark
相关插件 · 桌面端
Codex 任务面板chuspeeism/dashi-taskboard
现代化可灵活嵌入的任务面板,支持 Codex、DeepSeek Harness
★ 3,409已汉化DSH
71.7
桌面宠物PC2005-cloud/dsh-pet
DSH 桌面宠物:一行命令装好即用的透明动画小桌宠,支持多开、大小位置随心配置;还内置 DIY 素材链,能用 AI…
★ 5,341已汉化DSH
71
多端 Agent 工作台GCWing/OpenBitFun
OpenBitFun 是一个高度可定制的开源 Agent 工作台,让任务按你的方式持续推进。
★ 3,449已汉化DSH
70.8
DSH Desktopanywhere-labs/dsh-desktop
为 DeepSeek Harness DSH 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。
★ 34,532已汉化DSH
70.7
桌面宠物伴侣OpenPetsHQ/openpets
桌面伴侣平台,带宠物、插件,还能选配本地智能体集成。
★ 1,353已汉化DSH
70.2
万象桌面客户端Ebony-Vinyl/EAC-Desktop
EAC = Embracing All Creation揽尽万象
★ 2,318已汉化DSH
69.8