“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。
md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。
要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。
在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。
要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。
工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。
写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。
适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。
你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。
全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。
这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。
不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。
产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。
如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。
雪踏乌云 AI Agent Skills 集合:让大模型真正“动手干活”的技能库
Pluviobyte/rnskill —— 一个为 AI Agent 提供可复用、可组合技能模块的开源工具箱,让大模型从“聊天”进化到“执行任务”。
一、项目背景:AI Agent 的“技能荒”痛点
当前大语言模型(LLM)的能力边界已经被大幅拓展,但真正落地到实际场景时,一个核心瓶颈是:模型会“说”,但不会“做”。
无论是 GPT-4、Claude 还是开源模型,它们本质上是一个“文本生成器”。当我们需要它执行一个具体操作——比如查询数据库、调用 API、操作文件系统、发送邮件、抓取网页——模型自身无法直接完成。传统做法是通过 Function Calling(函数调用)或 Plugin(插件)机制,由开发者手动为每个场景编写工具函数。
这就带来了几个痛点:
- 重复造轮子:每个 Agent 项目都要重新实现“读取文件”、“发送 HTTP 请求”等基础能力。
- 组合困难:多个技能之间缺乏统一接口,难以编排成复杂工作流。
- 维护成本高:技能代码散落在不同项目中,缺乏版本管理和社区协作。
- 跨模型兼容差:针对 OpenAI 写的工具函数,换到 Anthropic 或本地模型时往往需要重写。
rnskill 项目正是为了解决这些问题而生。 它提供了一套标准化的“技能”定义和实现,让 AI Agent 能够像安装 App 一样安装和使用各种能力模块。
二、核心概念:什么是“技能”(Skill)
在 rnskill 中,一个“技能”是一个封装好的、可被 AI Agent 调用的功能单元。每个技能包含:
- 元数据:技能名称、描述、输入输出参数说明(用于 LLM 理解何时调用)
- 实现逻辑:实际执行的代码(Python/TypeScript 等)
- 测试用例:确保技能按预期工作
- 依赖声明:所需的外部库或服务
这种设计借鉴了“微服务”和“函数即服务”的思想,但专门为 AI Agent 的工作模式做了优化——技能的描述文本会被直接注入到 LLM 的 prompt 中,因此描述必须清晰、无歧义。
三、快速上手:安装与第一个技能
安装
bash
通过 pip 安装
pip install rnskill
或者从源码安装
git clone https://github.com/Pluviobyte/rnskill.git
cd rnskill
pip install -e .
使用一个技能
以下示例展示如何在你的 Agent 中使用 rnskill 提供的“网页抓取”技能:
python
from rnskill import SkillManager
from rnskill.skills.web_scrape import WebScrapeSkill
初始化技能管理器
manager = SkillManager()
注册技能
manager.register(WebScrapeSkill())
获取技能的调用描述(用于注入 LLM prompt)
skill_prompt = manager.get_prompt_for_llm()
print(skill_prompt)
输出类似:
技能: web_scrape
描述: 抓取指定 URL 的网页内容,返回纯文本
参数:
- url (string, required): 要抓取的网页地址
- timeout (integer, optional): 超时时间,默认 30 秒
当 LLM 决定调用时,执行技能
result = manager.execute("web_scrape", {"url": "https://example.com"})
print(result)
编写一个自定义技能
python
from rnskill import BaseSkill
from typing import Dict, Any
class CurrentTimeSkill(BaseSkill):
"""获取当前时间的技能"""
@property
def name(self) -> str:
return "current_time"
@property
def description(self) -> str:
return "获取当前的日期和时间,格式为 YYYY-MM-DD HH:MM:SS"
@property
def parameters(self) -> Dict[str, Any]:
return {
"timezone": {
"type": "string",
"description": "时区,如 Asia/Shanghai,默认 UTC",
"required": False
}
}
async def execute(self, params: Dict[str, Any]) -> str:
import datetime
import pytz
tz = pytz.timezone(params.get("timezone", "UTC"))
now = datetime.datetime.now(tz)
return now.strftime("%Y-%m-%d %H:%M:%S")
注册并使用:
python
manager.register(CurrentTimeSkill())
result = await manager.execute("current_time", {"timezone": "Asia/Shanghai"})
四、核心亮点深度解析
1. 统一的技能接口(Skill Interface)
所有技能继承自 BaseSkill,强制要求实现 name、description、parameters 和 execute 方法。这种设计确保了:
- LLM 可以自动理解何时调用:描述文本经过精心设计,符合 LLM 的语义理解习惯。
- 类型安全:参数定义使用 JSON Schema,可以在运行时做校验。
- 异步支持:所有技能默认支持 async/await,适合 I/O 密集型任务。
2. 技能发现与动态加载
rnskill 支持通过文件系统或配置自动发现技能:
python
从目录加载所有技能
manager.load_from_directory("./my_skills")
从 pip 包加载
manager.load_from_package("rnskill_community_skills")
这意味着社区可以发布独立的技能包,用户只需 pip install 即可扩展 Agent 能力。
3. 上下文感知(Context Awareness)
技能可以访问 Agent 的当前对话上下文,实现更智能的行为:
python
class ContextAwareSkill(BaseSkill):
async def execute(self, params, context=None):
# context 包含对话历史、用户信息、环境变量等
user_id = context.get("user_id")
return f"Hello, user {user_id}!"
4. 错误处理与重试机制
内置的容错逻辑:
python
@retry(max_attempts=3, delay=1.0)
async def execute(self, params):
# 自动重试 3 次
5. 技能编排(Skill Orchestration)
支持将多个技能组合成一个新的复合技能:
python
from rnskill import CompositeSkill
class ResearchSkill(CompositeSkill):
def init(self):
super().init()
self.add_step("search_web", "search", query="$input")
self.add_step("scrape_results", "web_scrape", url="$results[0].url")
self.add_step("summarize", "text_summarize", text="$scraped_content")
五、适用场景
| 场景 | 说明 | 示例技能组合 |
|---|---|---|
| 智能客服 | 查询订单、退换货、知识库检索 | search_knowledge_base + query_order_system + send_email |
| 自动化办公 | 文档生成、数据整理、邮件发送 | read_file + format_data + create_document + send_email |
| 代码辅助 | 代码审查、自动修复、文档生成 | read_code + analyze_syntax + generate_docstring |
| 数据管道 | 数据抓取、清洗、入库 | web_scrape + parse_html + transform_data + write_to_db |
| 个人助理 | 日程管理、信息查询、提醒 | calendar_query + weather_forecast + set_reminder |
| DevOps | 服务器监控、日志分析、自动部署 | ssh_execute + parse_log + trigger_deploy |
六、同类项目对比
| 特性 | rnskill | OpenAI Plugins | LangChain Tools | AutoGPT Plugins |
|---|---|---|---|---|
| 开源 | ✅ 完全开源 | ❌ 闭源 | ✅ 开源 | ✅ 开源 |
| 跨模型兼容 | ✅ 设计上支持 | ❌ 仅 OpenAI | ✅ 支持多种模型 | ⚠️ 部分支持 |
| 技能编排 | ✅ 内置 CompositeSkill | ❌ 无 | ✅ 通过 Chain | ❌ 无 |
| 社区包管理 | ✅ 计划中 | ❌ 官方商店 | ❌ 手动安装 | ⚠️ 分散 |
| 异步原生 | ✅ 全异步 | ✅ 异步 | ✅ 异步 | ⚠️ 部分 |
| 上下文感知 | ✅ 内置 | ⚠️ 有限 | ✅ 通过 Callbacks | ❌ 无 |
| 学习曲线 | 低 | 中 | 高 | 中 |
rnskill 的核心优势在于“轻量且专注”:
- 相比 LangChain,它不试图做 Agent 框架的一切,只做“技能”这一层,因此更简单、更专注。
- 相比 OpenAI Plugins,它完全开源且模型无关,你可以在任何 LLM 上使用。
- 相比 AutoGPT Plugins,它提供了更规范的接口定义和更好的组合能力。
七、项目现状与未来展望
目前 rnskill 处于早期开发阶段(GitHub Stars 204),但已具备以下基础能力:
- 约 20 个内置技能(文件操作、网络请求、数据解析、时间处理等)
- 完整的技能开发文档
- 示例 Agent 集成代码(支持 OpenAI、Anthropic、Ollama)
Roadmap 中计划的功能:
- 技能市场:类似 npm/pypi 的社区技能仓库,支持一键安装
- 技能可视化编辑器:通过拖拽编排技能流程
- 多模态技能:支持图像、音频处理
- 技能性能监控:记录调用次数、耗时、成功率
八、总结:值得一试的 Agent 基础设施
如果你正在构建 AI Agent 应用,rnskill 提供了一个“开箱即用”的技能层解决方案。它解决了当前 Agent 开发中最琐碎也最核心的问题——如何让 LLM 可靠地调用外部工具。
适合人群:
- 想快速搭建 Agent 原型,不想重复写工具函数的开发者
- 需要统一管理多个 Agent 技能的团队
- 对 Agent 架构设计感兴趣的学习者
- 希望贡献社区技能包的贡献者
不适合:
- 需要完整 Agent 框架(LangChain、Semantic Kernel 更合适)
- 只需要单一模型(OpenAI Plugins 可能更直接)
一句话总结:rnskill 是 AI Agent 世界的“瑞士军刀”,它不定义你怎么用,只给你最好用的工具。