25 个版本
新 0.7.1-dev.24 | 2024 年 8 月 22 日 |
---|---|
0.7.1-dev.23 | 2024 年 8 月 21 日 |
0.7.1-dev.17 | 2024 年 7 月 27 日 |
0.0.0 | 2024 年 8 月 23 日 |
#103 在 配置
663 每月下载
7MB
808 行
Shinkai 工具
Shinkai 工具作为生态系统,用于在安全环境中执行 Shinkai 团队或第三方开发者提供的 Shinkai 工具。它为执行这些工具提供了一个沙箱空间,确保它们安全且高效地运行,同时允许与 Rust 代码的无缝集成。
此存储库是用于促进 JavaScript 和 Rust 代码集成的工具和实用程序的综合性集合。它提供了一个框架,用于在 Rust 环境中执行 JavaScript 脚本,允许两种语言之间的无缝通信和数据交换。
此存储库的主要组件包括
apps/shinkai-tool-*
这些是执行特定任务的微型 JavaScript 工具。每个工具都是一个包含自己配置和构建过程的独立项目,便于维护和更新。libs/shinkai-tools-builder
是一个 TypeScript 库,提供构建新工具所需的类和类型,使创建和集成新工具到 Shinkai 生态系统变得更容易。libs/shinkai-tools-runner
是一个用于在受保护且高效的 JavaScript 环境中执行工具的 Rust 库,为在 Shinkai 生态系统中运行工具提供了安全高效的方法。
文档
更深入的代码库文档(Mutable.ai):https://wiki.mutable.ai/dcSpark/shinkai-tools
入门
初始化 TypeScript 端
# In windows admin privileges is required because rquickjs-sys uses a git patch
npm ci
npx nx run-many -t lint
npx nx run-many -t build
npx nx run-many -t test
如何从 Rust 端使用工具(使用 shinkai_tools_runner)
要从 Rust 端执行工具,您可以按照以下步骤操作
- 首先,请确保工具的JavaScript文件位于《
Cargo.toml
》文件中指定的正确目录。 - 在您的Rust代码中,导入必要的模块并创建一个
Tool
结构体的新实例。 - 使用
load
方法加载工具的JavaScript文件,将文件路径作为参数传递。 - 工具加载完成后,您可以使用
run
方法调用其函数,并将任何所需的参数作为JSON字符串传递。
以下是一个示例
use shinkai_tools_runner::built_in_tools::get_tool;
use shinkai_tools_runner::tools::tool::Tool;
#[tokio::main]
async fn main() {
let tool_definition = get_tool("shinkai-tool-echo").unwrap();
let mut tool = Tool::new();
let _ = tool
.load_from_code(&tool_definition.code.clone().unwrap(), "")
.await;
let run_result = tool.run("{ \"message\": \"new york\" }").await.unwrap();
assert_eq!(run_result.data["message"], "echoing: new york");
}
添加新的Shinkai工具
要将新的Shinkai工具添加到该项目中,请按照以下简单步骤操作
- 运行Hygen命令:运行
npx hygen shinkai-tool new
来创建一个新工具。此命令将引导您完成创建新工具的过程,包括设置目录结构和生成必要的文件。
就这样!通过这个简单的命令,您将有一个新的Shinkai工具设置好,随时可以使用。
依赖项
~9-22MB
~330K SLoC