让你的 AI 智能体把当前项目部署上线,并验证页面和 API。
39.1/100
综合分
12
GitHub 星标
1,274
npm 周下载
—/5
用户评分
数据截至 2026/10/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add rainskillsnpm 源 · rainskills 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · tool
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 5 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包rainskills @ 0.1.47
✓Node 引擎要求 >=18 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/28 02:49:59
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 166 处,展示前 103 条)
- 执行外部命令来自配置/变量bin/rainskills.js:832
const child = spawn(invocation.executable, invocation.args, { - 读取本地文件rainbond-platform-installer/scripts/windows-onboarding.js:167
info = fs.lstatSync(skillFile); - 读取本地文件rainbond-platform-installer/scripts/windows-onboarding.js:175
const lines = fs.readFileSync(skillFile, "utf8").split(/ ? /); - 读取本地文件rainbond-platform-installer/scripts/windows-onboarding.js:189
const skills = fs.readdirSync(packageRoot, { withFileTypes: true }) - 读取本地文件rainbond-platform-installer/scripts/windows-onboarding.js:200
if (fs.existsSync(rootSkill)) { - 读取本地文件rainbond-platform-installer/scripts/windows-onboarding.js:206
officialPackage = JSON.parse(fs.readFileSync(packageFile, "utf8")).name === "rainskills"; - 读取本地文件rainbond-platform-installer/scripts/windows-onboarding.js:225
if (!fs.existsSync(current)) continue; - 写入本地文件rainbond-platform-installer/scripts/windows-onboarding.js:269
fs.renameSync(destination, backup); - 写入本地文件rainbond-platform-installer/scripts/windows-onboarding.js:272
fs.renameSync(temporary, destination); - 删除本地文件rainbond-platform-installer/scripts/windows-onboarding.js:273
if (backedUp) fs.rmSync(backup, { recursive: true }); - 写入本地文件rainbond-platform-installer/scripts/windows-onboarding.js:277
fs.renameSync(backup, destination); - 写入本地文件rainbond-platform-installer/scripts/windows-onboarding.js:287
fs.mkdirSync(destinationRoot, { recursive: true }); - 读取本地文件rainbond-platform-installer/scripts/single-runtime.js:77
if (!fs.existsSync(runtimePath)) return null; - 读取本地文件rainbond-platform-installer/scripts/single-runtime.js:79
if (fs.lstatSync(runtimePath).size > MAX_BYTES) { - 读取本地文件rainbond-platform-installer/scripts/single-runtime.js:91
if (fs.existsSync(runtimePath)) stateStore.assertProtectedRegularFile(runtimePath); - 读取本地文件rainbond-platform-installer/scripts/single-runtime.js:109
if (!fs.existsSync(runtimePath)) return false; - 删除本地文件rainbond-platform-installer/scripts/single-runtime.js:111
fs.unlinkSync(runtimePath); - 读取本地文件rainbond-platform-installer/scripts/runtime-state.js:186
if (!fs.existsSync(statePath)) return { state: "not_started" }; - 删除本地文件rainbond-platform-installer/scripts/runtime-state.js:311
fs.unlinkSync(statePath); - 读取本地文件bin/runtime-integrity.js:21
const info = fs.lstatSync(target); - 写入本地文件rainbond-platform-installer/scripts/result-telemetry.js:24
fs.mkdirSync(directory, { recursive: true, mode: 0o700 }); - 写入本地文件rainbond-platform-installer/scripts/result-telemetry.js:25
try { fs.chmodSync(directory, 0o700); } catch { } - 读取本地文件rainbond-platform-installer/scripts/result-telemetry.js:30
const info = fs.lstatSync(file); - 读取本地文件rainbond-platform-installer/scripts/result-telemetry.js:32
return fs.readFileSync(file, "utf8"); - 写入本地文件rainbond-platform-installer/scripts/result-telemetry.js:46
fs.writeFileSync(temporary, content, { encoding: "utf8", flag: "wx", mode: 0o600 }); - 写入本地文件rainbond-platform-installer/scripts/result-telemetry.js:47
fs.renameSync(temporary, file); - 写入本地文件rainbond-platform-installer/scripts/result-telemetry.js:48
fs.chmodSync(file, 0o600); - 删除本地文件rainbond-platform-installer/scripts/result-telemetry.js:50
try { fs.rmSync(temporary, { force: true }); } catch { } - 读取本地文件rainbond-platform-installer/scripts/result-telemetry.js:121
entries = fs.readdirSync(pending) - 读取本地文件rainbond-platform-installer/scripts/result-telemetry.js:125
return { file, mtimeMs: fs.lstatSync(file).mtimeMs }; - 删除本地文件rainbond-platform-installer/scripts/result-telemetry.js:136
try { fs.rmSync(entry.file, { force: true }); } catch { } - 删除本地文件rainbond-platform-installer/scripts/result-telemetry.js:198
try { fs.rmSync(file, { force: true }); } catch { } - 读取本地文件rainbond-platform-installer/scripts/result-telemetry.js:272
files = fs.readdirSync(pendingDirectory(directory)) - 删除本地文件rainbond-platform-installer/scripts/result-telemetry.js:286
try { fs.rmSync(file, { force: true }); } catch { } - 读取本地文件rainbond-platform-installer/scripts/auto-update.js:370
if (fs.existsSync(finalPath)) { - 读取本地文件rainbond-platform-installer/scripts/auto-update.js:377
const pathIdentity = fs.lstatSync(finalPath); - 读取本地文件rainbond-platform-installer/scripts/auto-update.js:398
const current = fs.lstatSync(finalPath); - 删除本地文件rainbond-platform-installer/scripts/auto-update.js:404
) fs.unlinkSync(finalPath); - 读取本地文件rainbond-platform-installer/scripts/auto-update.js:429
const candidateIdentity = fs.lstatSync(candidatePath); - 读取本地文件rainbond-platform-installer/scripts/auto-update.js:441
const finalIdentity = fs.lstatSync(finalPath); - 删除本地文件rainbond-platform-installer/scripts/auto-update.js:450
fs.unlinkSync(candidatePath); - 读取本地文件rainbond-platform-installer/scripts/auto-update.js:464
const current = fs.lstatSync(finalPath); - 删除本地文件rainbond-platform-installer/scripts/auto-update.js:470
) fs.unlinkSync(finalPath); - 删除本地文件rainbond-platform-installer/scripts/auto-update.js:479
try { fs.unlinkSync(target); } catch (cleanupError) { - 写入本地文件rainbond-platform-installer/scripts/auto-update.js:838
fs.mkdirSync(transactionRoot, { mode: 0o700 }); - 写入本地文件rainbond-platform-installer/scripts/auto-update.js:841
fs.mkdirSync(stagedRoot, { mode: 0o700 }); - 写入本地文件rainbond-platform-installer/scripts/auto-update.js:842
fs.mkdirSync(backupRoot, { mode: 0o700 }); - 写入本地文件rainbond-platform-installer/scripts/auto-update.js:859
if (existed) fs.renameSync(destination, backup); - 写入本地文件rainbond-platform-installer/scripts/auto-update.js:861
fs.renameSync(staged, destination); - 写入本地文件rainbond-platform-installer/scripts/auto-update.js:865
fs.renameSync(backup, destination); - 删除本地文件rainbond-platform-installer/scripts/auto-update.js:880
fs.rmSync(transaction.transactionRoot, { recursive: true, force: true }); - 读取本地文件rainbond-platform-installer/scripts/secure-state.js:46
const info = fs.lstatSync(targetPath); - 读取本地文件rainbond-platform-installer/scripts/secure-state.js:65
const info = fs.lstatSync(targetPath); - 写入本地文件rainbond-platform-installer/scripts/secure-state.js:114
fs.chmodSync(targetPath, expectedKind === "file" ? 0o600 : 0o700); - 读取本地文件rainbond-platform-installer/scripts/secure-state.js:125
if (!fs.existsSync(current)) fs.mkdirSync(current, { mode: 0o700 }); - 读取本地文件rainbond-platform-installer/scripts/secure-state.js:149
const info = fs.lstatSync(target); - 读取本地文件rainbond-platform-installer/scripts/secure-state.js:161
if (fs.existsSync(target) && fs.lstatSync(target).isSymbolicLink()) { - 写入本地文件rainbond-platform-installer/scripts/secure-state.js:170
fs.writeFileSync(fd, `${JSON.stringify(value, null, 2)}\n`, "utf8"); - 写入本地文件rainbond-platform-installer/scripts/secure-state.js:177
fs.renameSync(temporary, target); - 删除本地文件rainbond-platform-installer/scripts/secure-state.js:189
fs.unlinkSync(temporary); - 读取本地文件rainbond-platform-installer/scripts/secure-state.js:199
return JSON.parse(fs.readFileSync(target, "utf8")); - 写入本地文件rainbond-platform-installer/scripts/secure-state.js:224
fs.writeFileSync(fd, `${JSON.stringify(owner)}\n`, "utf8"); - 删除本地文件rainbond-platform-installer/scripts/secure-state.js:233
fs.unlinkSync(candidatePath); - 删除本地文件rainbond-platform-installer/scripts/secure-state.js:243
fs.unlinkSync(candidatePath); - 删除本地文件rainbond-platform-installer/scripts/secure-state.js:249
fs.unlinkSync(lockPath); - 写入本地文件rainbond-platform-installer/scripts/secure-state.js:266
fs.renameSync(lockPath, stalePath); - 删除本地文件rainbond-platform-installer/scripts/secure-state.js:267
fs.unlinkSync(stalePath); - 删除本地文件rainbond-platform-installer/scripts/secure-state.js:292
fs.unlinkSync(lockPath); - 执行外部命令来自配置/变量rainbond-platform-installer/scripts/windows-platform.js:76
return spawnSync(command, args, { - 读取本地文件rainbond-platform-installer/scripts/windows-platform.js:226
return crypto.createHash("sha256").update(fs.readFileSync(filePath)).digest("hex"); - 读取本地文件rainbond-platform-installer/scripts/windows-platform.js:249
const info = fs.statSync(filePath); - 读取本地文件rainbond-platform-installer/scripts/windows-platform.js:279
const info = fs.lstatSync(absoluteDirectory); - 读取本地文件rainbond-platform-installer/scripts/windows-platform.js:283
for (const entry of fs.readdirSync(absoluteDirectory, { withFileTypes: true })) { - 读取本地文件rainbond-platform-installer/scripts/windows-platform.js:286
const childInfo = fs.lstatSync(absolute); - 读取本地文件rainbond-platform-installer/scripts/windows-platform.js:314
if (fs.existsSync(destinationRoot) && fs.readdirSync(destinationRoot).length > 0) { - 写入本地文件rainbond-platform-installer/scripts/windows-platform.js:317
fs.mkdirSync(destinationRoot, { recursive: true, mode: 0o700 }); - 写入本地文件rainbond-platform-installer/scripts/windows-platform.js:318
fs.chmodSync(destinationRoot, 0o700); - 写入本地文件rainbond-platform-installer/scripts/windows-platform.js:326
fs.mkdirSync(path.dirname(destination), { recursive: true, mode: 0o700 }); - 写入本地文件rainbond-platform-installer/scripts/windows-platform.js:327
fs.copyFileSync(source, destination, fs.constants.COPYFILE_EXCL); - 写入本地文件rainbond-platform-installer/scripts/windows-platform.js:328
fs.chmodSync(destination, 0o600); - 写入本地文件rainbond-platform-installer/scripts/windows-platform.js:337
fs.writeFileSync(path.join(destinationRoot, "manifest.json"), `${JSON.stringify(manifest, null, 2)}\n`, { mode: 0o600, flag: "wx" }); - 发起网络请求rainbond-platform-installer/scripts/windows-platform.js:474
const request = https.get(currentUrl, { - 写入本地文件rainbond-platform-installer/scripts/telemetry.js:75
fs.mkdirSync(directory, { recursive: true, mode: 0o700 }); - 写入本地文件rainbond-platform-installer/scripts/telemetry.js:76
try { fs.chmodSync(directory, 0o700); } catch { } - 写入本地文件rainbond-platform-installer/scripts/telemetry.js:87
fs.appendFileSync(filePath, `${JSON.stringify(event)}\n`, { encoding: "utf8", mode: 0o600 }); - 写入本地文件rainbond-platform-installer/scripts/telemetry.js:88
try { fs.chmodSync(filePath, 0o600); } catch { } - 发起网络请求bin/delivery-probe.js:125
const request = client.request(url, { - 读取本地文件bin/rainskills-tools.js:79
const info = fs.lstatSync(candidate); - 读取本地文件bin/rainskills-tools.js:96
const info = fs.lstatSync(candidate); - 读取本地文件bin/rainskills-tools.js:470
const stat = fs.lstatSync(directory); - 写入本地文件bin/rainskills-tools.js:472
if ((stat.mode & 0o077) !== 0) fs.chmodSync(directory, 0o700); - 写入本地文件bin/rainskills-tools.js:478
fs.mkdirSync(directory, { recursive: true, mode: 0o700 }); - 写入本地文件bin/rainskills-tools.js:479
fs.chmodSync(directory, 0o700); - 读取本地文件bin/rainskills-tools.js:500
const manifest = JSON.parse(fs.readFileSync(skillManifestPath(config), "utf8")); - 读取本地文件bin/rainskills-tools.js:560
const info = fs.lstatSync(target); - 读取本地文件bin/rainskills-tools.js:567
manifest = JSON.parse(fs.readFileSync(target, "utf8")); - 写入本地文件bin/rainskills-tools.js:641
fs.writeFileSync(temporary, `${JSON.stringify(record)}\n`, { mode: 0o600 }); - 写入本地文件bin/rainskills-tools.js:642
fs.chmodSync(temporary, 0o600); - 写入本地文件bin/rainskills-tools.js:643
fs.renameSync(temporary, target); - 发起网络请求bin/rainskills-tools.js:912
const request = client.request(endpoint, { - 执行外部命令来自配置/变量bin/runtime-smoke.js:32
const child = spawn(process.execPath, [bridge, ...args, "--input", "-", "--skill-id", "rainbond-app-assistant"], { - 删除本地文件bin/runtime-smoke.js:55
fs.rmSync(probeHome, { recursive: true, force: true }); - 读取本地文件dsh/index.mjs:47
return parseSkillSource(readFileSync(skillPath, "utf8"), skillPath);
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
2 张 · 点击查看大图展开完整介绍(131 字)↓
Rainskills 是一组开源 Agent Skills,让 Codex、Claude Code、Pi Agent、 DeepSeek Harness、WorkBuddy 和 Hermes Agent 能够完成应用识别、部署、 排错、交付验证、版本管理和回滚。
README
由 DeepSeek 最新模型翻译生成RainSkills
让你的 AI 智能体把当前项目部署上线,并验证页面和 API。
RainSkills 是一组开源 Agent Skills,让 Codex、Claude Code、Pi Agent、 DeepSeek Harness、WorkBuddy 和 Hermes Agent 能够继续完成应用部署、故障排查、交付验证、版本管理和回滚。
它从智能体已经理解的当前项目出发,把前端、后端、数据库、缓存、端口和存储组织成 Rainbond 应用。应用可以运行在 Rainbond Cloud、你自己的服务器或 Kubernetes 中。
AI 负责生成,RainSkills 负责交付,Rainbond 负责持续运行。
产品介绍 ·安装与使用 ·视频教程 · Rainbond Cloud ·微信交流
为什么使用 RainSkills
AI 智能体已经理解了代码、依赖和项目结构。进入部署阶段后,如果改用临时脚本或直接 SSH,这些上下文通常需要重新整理,部署结果也很难沉淀为可以持续维护的应用。
展开完整文档(README 剩余 1 节)
RainSkills 让你的 AI 智能体把当前项目部署上线,并验证页面和 API。 RainSkills 是一组开源 Agent Skills,让 Codex、Claude Code、Pi Agent、 DeepSeek Harness、WorkBuddy 和 Hermes Agent 能够继续完成应用部署、故障排查、交付验证、版本管理和回滚。 它从智能体已经理解的当前项目出发,把前端、后端、数据库、缓存、端口和存储组织成 Rainbond 应用。应用可以运行在 Rainbond Cloud、你自己的服务器或 Kubernetes 中。 AI 负责生成,RainSkills 负责交付,Rainbond 负责持续运行。 产品介绍 ·安装与使用 ·视频教程 · Rainbond Cloud ·微信交流 为什么使用 RainSkills AI 智能体已经理解了代码、依赖和项目结构。进入部署阶段后,如果改用临时脚本或直接 SSH,这些上下文通常需要重新整理,部署结果也很难沉淀为可以持续维护的应用。 | 对比维度 | Agent 直接 SSH / 临时脚本 | RainSkills + Rainbond | | 工作起点 | 重新整理服务器、端口、依赖和命令 | 直接复用当前项目上下文 | | 应用结构 | 人工拼装进程、数据库、网络和存储 | 用应用拓扑管理组件与依赖 | | 失败排查 | 手工寻找构建、容器和网关日志 | 智能体读取构建日志、运行日志、Pod 和平台事件 | | 完成标准 | 命令成功或进程已经启动 | 页面和 API 完成实际访问验证 | | 权限边界 | 智能体通常直接持有 SSH 或生产凭据 | 浏览器授权、受控工具调用和高风险操作确认 | | 后续维护 | 继续维护脚本和服务器差异 | 在同一应用上升级、快照、发布和回滚 | RainSkills 更适合多组件应用、自托管环境、私有化交付,以及需要持续排障和版本管理的项目。 RainSkills 如何工作 当前项目或部署目标 → Codex、Claude Code 等 AI Agent → RainSkills 选择对应的部署、排障或验证 Skill → 首次需要时选择并连接一个 Rainbond 运行环境 → Rainbond 构建并运行应用 → RainSkills 验证页面、API 和最终访问地址 RainSkills 安装与运行环境连接是两个阶段。安装完成后可以直接提出部署任务;第一次需要 Rainbond 时,智能体再引导你选择 Cloud、已有私有环境、本机或服务器。 RainSkills 在 AI Agent 中完成应用部署并返回访问地址 快速开始 使用 Skill 市场安装: npx skills add goodrain/rainskills 或者直接运行官方安装器: npx --yes rainskills DeepSeek Harness 用户也可以把 RainSkills bootstrap 作为 profile bundle 安装: dsh plugin --profile web add rainskills 安装后调用 /rainskills,或直接告诉智能体「安装 RainSkills」。该 bundle 只注册 bootstrap Skill;完整的 rainbond-* Skills 仍由官方安装器统一安装和更新。 npx 安装方式需要 Node.js 18 或更高版本。建议使用仍在维护的 Node.js 22 或 24。 安装完成后,在项目目录告诉智能体: 帮我部署当前项目,并验证页面和 API。 如果还没有可用的 Rainbond,智能体会在第一次需要运行环境时让你选择 Cloud、已有私有环境、本机或服务器,不会在安装 Skill 时替你决定目标环境。 可以直接告诉智能体什么 - 帮我部署当前项目 - 帮我部署这个 Git 仓库 - 帮我通过镜像或安装包部署应用 - 帮我安装一个应用模板 - 帮我部署 Dify、n8n 或 Harbor - 帮我检查 backend 为什么构建失败 - 确认当前应用是否已经交付成功,并给我访问地址 - 给当前应用创建快照 - 把当前应用回滚到上一个快照 支持范围 AI Agent - Codex - Claude Code - Pi Agent - DeepSeek Harness - WorkBuddy - Hermes Agent 项目来源 - 当前本地项目 - 普通 Git 仓库 - 本地软件包 - 私有容器镜像或单镜像组件 - Compose、Helm 或多镜像描述 - Dify、n8n、Harbor 等第三方开源应用 - Rainbond 应用模板 Compose、Helm 和第三方应用中的特权容器、Operator、CRD、Job、主机网络或主机目录等语义,需要根据当前 Rainbond 能力单独判断,不承诺原样转换所有 Kubernetes 配置。 运行环境 - Rainbond Cloud - 已经运行的私有 Rainbond - 本机 Rainbond - 独立服务器上的 Rainbond - 已有 Kubernetes 集群中的 Rainbond 安全和权限边界 - 通过浏览器完成 Rainbond 授权,不要求在聊天中粘贴 JWT、密码或私钥。 - 创建、更新和删除资源前核对目标企业、团队、应用和组件。 - 删除资源、平台安装、数据变更和其他高风险操作需要明确确认。 - Rainbond 授权凭据保存在受保护的本地状态中,不写入项目文件。 - 部署完成后继续验证组件、页面和 API,不把命令成功当作交付完成。 用户明确选择在独立服务器安装 Rainbond 时,受控安装流程可能使用 SSH。 应用部署和后续管理仍通过 Rainbond 应用模型完成,而不是依赖散落的服务器命令。 适合哪些场景 - AI 智能体已经写完或改完项目,需要继续部署。 - 项目包含前端、后端、数据库、缓存或异步任务。 - 应用需要运行在自己的服务器、私有云或 Kubernetes 中。 - 部署完成后仍需日志、升级、快照、发布和回滚。 - 团队需要复用私有化或客户现场的交付流程。 哪些场景可能不需要 RainSkills - 只发布纯静态页面,且接受完全托管。 - 团队已经有成熟的内部开发平台和 GitOps 流程。 - 只是一次性的本地实验,不需要持续运行、排障或回滚。 文档与支持 - RainSkills 产品介绍 - 安装与使用文档 - 安装与连接视频教程 - 市场上架 Runbook - Rainbond 安装文档 - 提交问题 微信交流 扫码添加微信,备注「RainSkills」,交流安装、部署和使用问题。 License Apache-2.0
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
goodrain/rainskills
让你的 AI 智能体把当前项目部署上线,并验证页面和 API。
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,173已汉化DeepSeek 客户端
74.4
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,636已汉化DSH
72.2
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,308已汉化DSH
71.3
智能体运行框架路由HarnessRouter/harnessrouter
智能体运行框架的统一接口。
★ 3,897已汉化DSH
71.2
这是你的仓库?认领条目