NewTool开发者工具箱
内核优先的开发者工具箱:底层是一个 Rust 写的算法内核(CLI newtool),上层是 Tauri 2 桌面 App 的 React 外壳。同一个内核同时服务三个消费者——AI(skill 技能包 / MCP)、人类(桌面 App)、浏览器(wasm)。
01$ newtool list --json02{ "count": 3, "algorithms": ["base64", "jwt.decode", "uuid.v7"] }0304$ newtool run jwt.decode --params '{"token":"eyJhbGci..."}'05{ "ok": true, "data": { "header": { "alg": "HS256" } } }算法只写一次,人和 AI 用的是同一份实现。
设计要点
这个工具为什么这么做,以及这样做换来了什么。
算法全部 Rust 实现,UI 只是壳。任何工具逻辑都不在 UI 层重写,全部走 Rust 内核或 React 呈现层,避免多端行为漂移。
以 skills 技能包分发给 WorkBuddy / Codex / Claude Code,AI 直接 list / describe / run,无需人类打开界面。
tool.toml 声明 app / cli / web-wasm / web-server 四种生效形态,清单是可见性的唯一来源。
远程经 MCP 直连 newtool-server,不装本地二进制也能调用全部算法能力。
能力一览
- Rust 算法内核是单一事实源:清单即契约,build.rs 拦截清单与代码漂移
- 三个消费者共用内核:AI skill 包、Tauri 桌面 App、浏览器 wasm 绑定
- 远程场景经 MCP(streamable HTTP)零本地二进制接入
- CLI 契约:stdin → stdout、统一 envelope、可 discover / describe
- 工具声明式定义:tool.toml 描述参数与形态,构建脚本生成页面与注册表
- 自研引擎库独立成 crate:cipher / css / json / diff / yaml / id / text
设计指标
每一条都对应实现里的一个具体决定。
全部在 newtool-core,UI 层不重写任何算法逻辑
AI(技能包 / MCP)、人(桌面 App)、浏览器(wasm)
tool.toml 声明 app / cli / web-wasm / web-server
cipher / css / json / diff / yaml / id / text 独立 crate
清单与代码不一致时构建直接失败,不进入运行时
远程场景经 MCP 直连,不装本地二进制也能用
平台支持
内核与界面分离之后,每个平台的支持程度可以单独推进。
Tauri 2 桌面 App,React 外壳共用一份内核
newtool 命令,stdin → stdout 统一 envelope
内核编译为 wasm,离线可用,无需安装
streamable HTTP,远程零本地二进制接入
skills/newtool-toolbox 分发给 WorkBuddy / Codex / Claude Code
与常见做法的差别
差别通常不在功能表上,而在「边界画在哪里」。
命令速览
完整手册见 CLI 手册页。全部命令默认输出结构化结果。
newtool list列出全部算法与生效形态
--json--status rust|todonewtool describe <algo>查看算法参数定义、形态与示例
--jsonnewtool run <algo>执行算法,参数经 stdin 或 --params 传入
--params--stdin--jsonnewtool mcp serve以 MCP streamable HTTP 方式暴露全部算法
--port--host实际输出
01$ newtool list --json02{ "count": 3, "algorithms": ["base64", "jwt.decode", "uuid.v7"] }0304$ newtool run jwt.decode --params '{"token":"eyJhbGci..."}'05{ "ok": true, "data": { "header": { "alg": "HS256" } } }代码模块
4 组、14 个模块,全部来自仓库真实目录结构。
Rust · Tauri 2 · React · TypeScript · WASM · MCP · TOML算法只写一次的地方。
crates/newtool-core纯函数算法内核,无 IO,可被 CLI / 桌面 / wasm 同时调用
crates/newtool-corecrates/newtool-cliCLI 契约:stdin → stdout、统一 envelope、可 discover / describe
crates/newtool-cli各自独立成 crate,可单独复用。
newtool-cipher加解密与编码类算法
libs/newtool-ciphernewtool-cssCSS 处理与格式化
libs/newtool-cssnewtool-json / newtool-yamlJSON 与 YAML 解析、转换与校验
libs/newtool-{json,yaml}newtool-diff文本差异比对
libs/newtool-diffnewtool-idID 生成(UUID v7 等)
libs/newtool-idnewtool-text文本处理与转换
libs/newtool-text可见性的唯一来源是清单,不是代码注释。
manifests/algorithms.toml算法单一事实源,status = rust 强制与 registry 同步
manifests/algorithms.tomlbuild.rs 守卫构建期拦截清单与代码漂移,漂移即失败
crates/*/build.rstool.toml声明式定义工具参数与四种生效形态:app / cli / web-wasm / web-server
tools/*/tool.toml同一个内核,三个消费者。
Tauri 2 桌面壳React 外壳 + kernel-client 三 adapter(tauri / http / wasm)
apps/desktopskills/newtool-toolbox技能包分发给 WorkBuddy / Codex / Claude Code,AI 直接调用
skills/newtool-toolboxMCP serverstreamable HTTP,远程零本地二进制接入
newtool-server使用场景
4 个典型场景,每个都拆成可照做的步骤。
不打开网页、不装插件,命令行或桌面 App 直接算。
- 1newtool list 找到需要的算法
- 2newtool describe 确认参数形态
- 3newtool run 执行,JSON 结果直接进管道
- 4同一算法也可在桌面 App 里图形化操作
AI 不需要打开界面,list / describe / run 三步完成。
- 1安装技能包或连接 MCP 端点
- 2AI 调用 list 获取可用算法清单
- 3describe 拿到参数 schema
- 4run 执行并读取结构化结果
内核编译为 wasm,断网也能用,数据不出浏览器。
- 1打开 Web 版本,内核以 wasm 加载
- 2输入数据在本机完成处理
- 3无任何服务端请求
- 4适合处理敏感文本与密钥材料
算法只写一次,人和 AI、各端行为天然一致。
- 1算法在 newtool-core 实现,清单登记
- 2build.rs 在构建期拦截清单与代码漂移
- 3CLI / 桌面 / wasm 三端复用同一实现
- 4新增算法只需补清单与实现,端侧自动可见
数据边界与安全
这类工具的价值很大一部分在于「它不做什么」。下面每一条都标注了实现位置。
桌面与 wasm 形态下数据不出本机,敏感文本与密钥材料无需上传。
newtool-core 纯函数无 IO算法内核是纯函数,不做网络与文件访问,攻击面小。
crates/newtool-core清单与实现漂移在构建期失败,避免「文档说有、代码里没有」。
build.rs 守卫CLI 输出统一结构,AI 消费不会因为格式漂移误判。
stdin → stdout桌面壳不申请超出需要的系统权限,算法不触碰用户目录。
Tauri 2 权限配置可 discover / describe 的算法清单本身就是审计入口。
manifests/algorithms.toml版本节奏
已发布的写清交付了什么,开发中的写清正在做什么。
v0.4已发布内核- newtool-core 纯函数算法内核
- newtool-cli 统一 envelope
- 7 个自研引擎 crate
- 清单驱动注册表
v0.7已发布多端- Tauri 2 桌面 App
- kernel-client 三 adapter(tauri / http / wasm)
- 浏览器 wasm 版本
- build.rs 漂移守卫
v0.9开发中AI 分发- skills/newtool-toolbox 技能包
- MCP streamable HTTP 端点
- 算法清单可视化浏览
- 批量与管道模式
v1.0规划中生态- 算法市场与第三方贡献
- 团队共享预设与片段
- IDE 插件
- 算法版本与兼容策略
常见问题
因为同一个内核要同时服务三个消费者:AI 技能包、桌面 App、浏览器 wasm。用 Rust 可以一份实现编译到原生与 wasm 两种目标,避免多端行为漂移——这是「算法只写一次」的前提。
代码模块
4 组、14 个模块。路径直接对应仓库目录,方便工程同学定位。
算法只写一次的地方。
crates/newtool-core纯函数算法内核,无 IO,可被 CLI / 桌面 / wasm 同时调用
crates/newtool-corecrates/newtool-cliCLI 契约:stdin → stdout、统一 envelope、可 discover / describe
crates/newtool-cli各自独立成 crate,可单独复用。
newtool-cipher加解密与编码类算法
libs/newtool-ciphernewtool-cssCSS 处理与格式化
libs/newtool-cssnewtool-json / newtool-yamlJSON 与 YAML 解析、转换与校验
libs/newtool-{json,yaml}newtool-diff文本差异比对
libs/newtool-diffnewtool-idID 生成(UUID v7 等)
libs/newtool-idnewtool-text文本处理与转换
libs/newtool-text可见性的唯一来源是清单,不是代码注释。
manifests/algorithms.toml算法单一事实源,status = rust 强制与 registry 同步
manifests/algorithms.tomlbuild.rs 守卫构建期拦截清单与代码漂移,漂移即失败
crates/*/build.rstool.toml声明式定义工具参数与四种生效形态:app / cli / web-wasm / web-server
tools/*/tool.toml同一个内核,三个消费者。
Tauri 2 桌面壳React 外壳 + kernel-client 三 adapter(tauri / http / wasm)
apps/desktopskills/newtool-toolbox技能包分发给 WorkBuddy / Codex / Claude Code,AI 直接调用
skills/newtool-toolboxMCP serverstreamable HTTP,远程零本地二进制接入
newtool-server技术栈
分层设计
从内核到界面,每一层负责什么、用什么实现。这类工具的核心设计是「内核与界面分离」。
crates/newtool-core 纯函数无 IO + crates/newtool-cli 命令 newtool
libs/newtool-{cipher,css,json,diff,yaml,id,text} 独立 crate
manifests/algorithms.toml 单一事实源,status = rust 强制同步 registry
Tauri 2 + React 外壳,kernel-client 三 adapter(tauri / http / wasm)
skills/newtool-toolbox 技能包 + MCP streamable HTTP
Rust · Tauri 2 · React · TypeScript · WASM
多端支持
同一个内核,不同平台只是换一层壳。支持程度可以按平台单独推进。
Tauri 2 桌面 App,React 外壳共用一份内核
newtool 命令,stdin → stdout 统一 envelope
内核编译为 wasm,离线可用,无需安装
streamable HTTP,远程零本地二进制接入
skills/newtool-toolbox 分发给 WorkBuddy / Codex / Claude Code
技术栈
命令手册
6 条命令。设计前提:输出结构化、退出码语义化,让脚本和 AI Agent 都能可靠消费。
newtool list列出全部算法与生效形态
--json--status rust|todonewtool describe <algo>查看算法参数定义、形态与示例
--jsonnewtool run <algo>执行算法,参数经 stdin 或 --params 传入
--params--stdin--jsonnewtool mcp serve以 MCP streamable HTTP 方式暴露全部算法
--port--hostnewtool web本地起一个浏览器界面,走同一内核
--port--opennewtool skills install安装技能包,把工具箱分发给 AI 客户端
--target workbuddy|codex|claude输出约定
CLI 是给程序用的接口,人只是顺便看得懂。
默认输出 JSON,字段名稳定。人可读的格式化由调用方决定,不由 CLI 猜测。
成功、失败、用法错误分别返回不同退出码,脚本与 Agent 据此分支,不用解析文本。
自动发现本地令牌文件,避免在命令行明文传凭据(会被写入 shell 历史与进程列表)。
一次实际调用
01$ newtool list --json02{ "count": 3, "algorithms": ["base64", "jwt.decode", "uuid.v7"] }0304$ newtool run jwt.decode --params '{"token":"eyJhbGci..."}'05{ "ok": true, "data": { "header": { "alg": "HS256" } } }把身份、Agent 与私域的复杂度,交给一套可治理的内核
无论你是要替换现有的 IAM、搭建 Agent 中台,还是想把企微私域真正运营起来——先从一次 30 分钟的架构沟通开始。我们会先判断问题是不是我们擅长解的那类,不合适会直接说。