首页/新闻资讯/正文详情

一天一个开源项目(第205篇):PenguinHarness - 让 AI 来构建 AI

发布时间:2026/9/24 17:30:47 来源:云帆数科 栏目:资讯中心
一天一个开源项目(第205篇):PenguinHarness - 让 AI 来构建 AI
1. 为什么我想把 PenguinHarness 接上统一 Key第一次看到 PenguinHarness 的介绍时我脑子里冒出来的不是又一个 Agent 框架而是它到底怎么把一句话变成能跑的应用。这个项目由 LlamaFactory 作者 Yaowei Zheng 主导定位是本地优先的多智能体应用开发平台核心主张就一句Let AI Build AI。它把脚手架生成、代码实现、基准评估、版本优化串成一条自动链路你描述目标Agent 负责实现而且每一次工具调用都能在 Trace 视图里看到。它适合谁想快速验证 Agent 应用想法、又不想花一周搭框架的开发者需要定期跑数据分析、对成本敏感的团队以及想用本地模型或开源模型做自动化构建的人。PenguinHarness 内置了>npm install -g prismshadow/penguin-cli penguin web执行 penguin web 后浏览器打开 http://127.0.0.1:7364 就能看到 Web UI。如果你更想用桌面应用也可以去官网下载对应平台版本内置服务器不用终端。两种方式共享同一个数据目录 ~/.penguin/data/所以 Web UI 里跑的会话CLI 里也能看到。安装完成后先别急着生成应用我们先把模型配置理顺。PenguinHarness 的模型配置既可以用命令行 penguin config model add 添加也可以直接写配置文件。命令行方式适合快速试配置文件方式适合团队共享和版本管理。下面两种我都给你。3. 可复制的 config.toml 骨架与 TaoToken 接入PenguinHarness 的模型配置最终会落到数据目录下的 models 配置里。为了让你有一份能直接改的骨架我把关键字段整理成下面这份 config.toml。注意不同版本的 PenguinHarness 配置字段名可能略有差异如果某个字段不生效用 penguin config model add 生成一份默认配置再对照着改是最稳的做法。# ~/.penguin/config.toml # PenguinHarness 模型接入配置骨架 # 用 TaoToken 统一 Key 接入 OpenAI 兼容 endpoint [default] # 默认使用的模型别名对应下面 [models.xxx] 的键名 model taotoken-deepseek [models.taotoken-deepseek] # 供应商标识OpenAI 兼容协议统一填 openai provider openai # 模型 ID按 TaoToken 控制台里可用的模型名填写 model_id deepseek-v4 # TaoToken 统一 API 基址注意结尾不要多加斜杠 base_url https://taotoken.net/api # 统一 Key建议用环境变量注入不要硬编码进仓库 api_key ${TAOTOKEN_API_KEY} # 采样参数按任务类型微调 temperature 0.3 max_tokens 8192 [models.taotoken-qwen] provider openai model_id qwen-3.8-max base_url https://taotoken.net/api api_key ${TAOTOKEN_API_KEY} temperature 0.2 max_tokens 8192 [agent] # Agent 工作目录生成的应用默认落在这里 workspace_dir ./workspace # 是否开启工具调用审批true 时每次工具调用都会询问 require_approval true # 轨迹存储目录Trace 视图读取这里 trace_dir ~/.penguin/data/traces几个关键点解释一下。base_url 填 https://taotoken.net/api 不要写成带 /v1 的路径OpenAI 兼容客户端一般会自动补全如果你用的客户端要求带版本号再按它的要求调整。api_key 用 ${TAOTOKEN_API_KEY} 这种环境变量占位是为了避免把 Key 提交进 Git。设置环境变量export TAOTOKEN_API_KEYsk-你的TaoToken密钥如果你不想用配置文件命令行方式等价于penguin config model add \ --provider openai \ --model-id deepseek-v4 \ --base-url https://taotoken.net/api \ --api-key $TAOTOKEN_API_KEY配好之后用 penguin config model list 确认模型已经注册。如果列表里能看到 taotoken-deepseek说明配置被正确读取了。这一步别跳过很多模型调用失败其实是配置压根没加载。4. 本地启动与 Agent 调用从一句话到可运行应用配置就绪后先启动服务。两种模式# 带 Web UI penguin web # 无 UI 服务器模式适合远程或容器里跑 penguin server启动后最直接的验证方式是交互式对话penguin chat在对话里输入一句简单需求比如帮我列一下当前目录的文件结构看 Agent 是否能正常调用工具并返回结果。这一步通了说明模型接入没问题。接下来是重头戏一句话生成应用。PenguinHarness 的卖点就是从自然语言描述直接生成完整 Agent 应用。我们用一个 RAG 场景来跑penguin run -m 创建一个 RAG 应用读取 ./docs 目录支持自然语言问答执行后Agent 会走一遍脚手架生成 → 代码实现 → 基准评估 → 版本优化的流程。你会在终端看到工具调用日志在 Web UI 的 Trace 视图里看到完整的决策轨迹。生成完成后workspace 目录下会出现一个可运行的应用结构通常包含入口文件、依赖清单和运行说明。如果你想在代码里调用PenguinHarness 的 SDK 采用 async generator 模式把执行流建模成事件流每个工具调用都能审批import { createAgent, 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(分析 ./data/sales.csv输出月度趋势图)], { approve: async (toolCall) { console.log(即将执行: ${toolCall.name}); return allow; // 或 deny }, } )) { console.log(output); }approve 回调是这套设计里我很喜欢的一点文件读写、命令执行、网络请求每一次工具调用都经过这个钩子你可以决定放行还是拦截。配合 Trace 视图整个 Agent 的行为是可审计的不是黑盒。5. 本篇常见错排查配置和调用过程中最容易踩的坑集中在下面几类我按出现频率排一下。第一类是 base_url 写错。最常见的写法是 https://taotoken.net/api/v1 或漏掉 /api导致请求 404。正确基址是 https://taotoken.net/api 让客户端自己补路径。如果报错信息里出现 404 或 Not Found先检查这里。第二类是 Key 没生效。用 ${TAOTOKEN_API_KEY} 占位时如果环境变量没导出或者导出后没重启终端/服务配置读到的就是空字符串表现为 401 Unauthorized。排查方法echo $TAOTOKEN_API_KEY 看有没有值再确认启动 penguin 的终端和设置变量的终端是同一个。第三类是模型 ID 对不上。TaoToken 控制台里可用的模型名和你在 config.toml 里写的 model_id 必须一致写错会报 model not found。建议先在控制台确认模型列表再填进配置。第四类是工具调用被审批卡住。require_approval true 时每次工具调用都要人工确认如果你在非交互环境比如 CI里跑会一直挂起。这种场景把它设为 false或者用 SDK 的 approve 回调统一放行。第五类是数据目录权限问题。~/.penguin/data/ 下的 agents、sessions、traces、models 几个子目录需要可写容器里跑时如果挂载了只读卷会写不进快照。检查一下挂载权限。第六类是端口占用。penguin web 默认 7364如果被占用会启动失败换端口或先释放。遇到报错时优先看 Trace 视图里的原始请求和响应比猜要快得多。接入相关的文档可以在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 找到Key 管理在 https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。6. 把链路跑顺之后跑通一遍之后你会发现 PenguinHarness 真正省时间的地方不在生成那一下而在 RSI 循环Agent 自己跑基准、找失分点、出改进版本每一轮都有快照可以回退。人的角色从写代码变成设目标和审批。而 TaoToken 的统一 Key 在这里的价值是让你在切换模型做对比时不用反复改配置——想换模型改一行 model_id 就行。如果你打算长期用它做编码或 Agent 自动化可以看看 Coding Plan地址是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 适合需要稳定额度和多模型切换的场景。想先验证模型效果直接去模型对话页面试几句https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite 。接入细节和参数说明都在文档里遇到配置问题先翻文档再排查能省不少时间。

相关推荐

Buildroot 下如何查看 RK3588 板子的总内存,并分析 Reserved Memory 与 CMA
Buildroot 下如何查看 RK3588 板子的总内存,并分析 Reserved Memory 与 CMA

在 RK3588 Buildroot 系统中,我们经常会遇到一个问题:板卡明明标称 16 GB RAM,为什么执行 free -h 后却只显示 15 GiB?这些“少掉”的内存去了哪里?本文以一块实际的 16 GB RK3588 板卡为例,通过 /proc/me… · 2026/9/24 17:30:47

无人机已经拿到UWB坐标,为什么还不能直接自主飞行?
无人机已经拿到UWB坐标,为什么还不能直接自主飞行?

无人机已经拿到UWB坐标,为什么还不能直接自主飞行?有客户问了一个很具体的问题:他想用无人机跟随一辆遥控车,UWB模块已经装好了,标签装在地面车上,基站装在无人机上,坐标数据和距离数据都已经读… · 2026/9/24 17:30:47

grep 随笔记
grep 随笔记

grep -r 默认不跟随符号链接(要用 -R) -I 跳过二进制 ,file 看文件类型,ls -al 看软连接指向grep -n -E · 2026/9/24 17:30:41

SpaceX-API v4 Crew 接口详解:数据模型、查询分页与缓存实现
SpaceX-API v4 Crew 接口详解:数据模型、查询分页与缓存实现

后端API设计 【免费下载链接】SpaceX-API :rocket: Open Source REST API for SpaceX launch, rocket, core, capsule, starlink, launchpad, and landing pad data. 项目地址: https://gitcode.com/gh_mirrors/spa/SpaceX-API 点击查看 免费下载 导读 本文以 Spa… · 2026/9/24 18:43:38

本地餐饮同城外卖系统开发,多门店订单管理技术方案
本地餐饮同城外卖系统开发,多门店订单管理技术方案

本地餐饮同城外卖系统开发,多门店订单管理技术方案连锁餐饮、多商户入驻的同城外卖平台,会面临多门店订单统一归集、分单、库存、出餐管控等问题。很多简易外卖系统采用单店独立模式,门店数据相互隔离,无法实现跨店统筹&#xff1… · 2026/9/24 18:43:38

如何打造高效BT聚合搜索工具:Jackett从React到Blazor的前端架构升级指南
如何打造高效BT聚合搜索工具:Jackett从React到Blazor的前端架构升级指南

如何打造高效BT聚合搜索工具:Jackett从React到Blazor的前端架构升级指南 Jackett是一款强大的BT聚合搜索工具,它为你的所有种子追踪器提供统一的API支持,让你轻松管理和搜索各种公共和私有种子资源。通过将多个BT追踪器整合到单一界面&#… · 2026/9/24 18:43:38

Kubernetes kubectl 实战手册:从排障到日常运维的完整命令指南
Kubernetes kubectl 实战手册:从排障到日常运维的完整命令指南

凌晨两点,手机告警把整个群都炸醒了——生产环境的某个节点直接 NotReady,业务 Pod 像多米诺骨牌一样接二连三进入 Pending。经历过这种场面的人应该都懂,微信群里所有人都在等你一句话:"我先看下集群状态。"这时候你敲… · 2026/9/24 18:43:31

ROS机器人开发中Terraform选型:托管服务与原生方案深度对比
ROS机器人开发中Terraform选型:托管服务与原生方案深度对比

1. 从一个真实的选择困境说起去年底我接手了一个机器人项目,团队里有人用ROS做仿真,有人搞机械臂标定,还有人负责SLAM建图和自主导航。项目推进到部署阶段时,一个绕不开的问题摆在面前:基础设施怎么管?我们… · 2026/9/24 18:43:25

6款AI编程工具实战指南:嵌入开发工作流的关键断点
6款AI编程工具实战指南:嵌入开发工作流的关键断点

1. 这6款工具不是“排行榜”,而是我过去18个月在3个真实项目里反复验证过的效率杠杆你点开这篇,大概率正被三件事压着喘不过气:需求文档还没读完,测试环境又崩了,而产品经理刚发来第7版UI改稿——这时候告诉你“用AI工… · 2026/9/24 18:43:19

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码