返回首页
24小时热榜
我们正在构建 Crust(<a href="https://crustjs.com" rel="nofollow">https://crustjs.com</a>),这是一个以 TypeScript 为首的、原生于 Bun 的命令行界面(CLI)框架,具有零依赖性。它已经在我们的核心产品中内部使用了一段时间,现在我们决定开源它。
我们遇到的问题是:现有的 JavaScript 生态系统中的 CLI 框架要么是最小的参数解析器,需要你自己连接所有内容,要么是重量级框架,具有庞大的依赖树和 Node 时代的假设。我们希望能有一个介于两者之间的解决方案。
Crust 的不同之处在于:
- 完整的类型推断 — 参数和标志会自动推断,无需手动类型注释,也不需要处理泛型。你只需将标志定义为类型:“string”,它就会传递到你的处理程序中。
- 编译时验证 — 在代码运行之前捕获标志别名冲突和可变参数错误,而不是在运行时。
- 零运行时依赖 — @crustjs/core 的 gzipped 大小约为 3.6kB(安装时为 21kB)。作为对比:yargs 为 509kB,oclif 为 411kB。
- 可组合模块 — 核心、插件、提示、样式、验证和构建工具都是独立的包。只安装你需要的部分。
- 插件系统 — 基于中间件的生命周期钩子(preRun/postRun)。官方插件提供帮助、版本和命令行自动补全功能。
- 为 Bun 而构建 — 没有 Node 兼容层,没有遗留负担。
快速示例:
```javascript
import { Crust } from "@crustjs/core";
import { helpPlugin, versionPlugin } from "@crustjs/plugins";
const main = new Crust("greet")
.args([{ name: "name", type: "string", default: "world" }])
.flags({ shout: { type: "boolean", short: "s" } })
.use(helpPlugin())
.use(versionPlugin("1.0.0"))
.run(({ args, flags }) => {
const msg = `Hello, ${args.name}!`;
console.log(flags.shout ? msg.toUpperCase() : msg);
});
await main.execute();
```
搭建一个新项目:
```bash
bun create crust my-cli
```
网站: <a href="https://crustjs.com" rel="nofollow">https://crustjs.com</a>
GitHub: <a href="https://github.com/chenxin-yan/crustjs" rel="nofollow">https://github.com/chenxin-yan/crustjs</a>
欢迎随时询问有关设计决策或内部实现的问题。
我为人工智能代理而非人类构建了一个“疯狂三月”赛季的预测挑战。人类用户向他们的代理提供网址,代理读取API文档,注册自身,选择所有63场比赛,并自主提交预测表。一个排行榜跟踪哪个人工智能在整个比赛中选择了最佳预测表。
有趣的设计问题是为代理优先的用户构建。我想出了一个解决方案:访问主页的代理会收到纯文本的API说明,而人类用户则看到正常的视觉网站。早期我发现大多数代理试图使用Playwright浏览网站,而不是直接阅读文档。因此,我进行了调整,以检测HeadlessChrome并提供特定的HTML,以便代理可以读取。这迫使我更加考虑代理的用户体验——我认为有一些非常酷的创意可以借鉴。
时间线引入了一个有趣的动态。我必须在周日下午预测表公布后不久启动挑战,以便在周四早上的截止日期之前开始吸引用户。虽然我可以在2025年的预测表上进行测试,但无法获得关于我的最小可行产品(MVP)的反馈。因此,我使用人工智能创建用户角色,并将代理作为测试用户,进行注册和管理流程。这让我获得了宝贵的经验,使我对启动充满信心。
技术栈包括Next.js 16、TypeScript、Supabase、Tailwind v4、Vercel、Resend,最后是Claude Code,构成了大约95%的构建部分。
该系统可以与任何能够调用API的模型兼容——无论是Claude、GPT、Gemini,还是开源模型。预测表需在第一轮比赛开始前的周四早上提交。
Bracketmadness.ai
供您参考:在尝试使用Claude Code时遇到500错误 - 状态页面没有官方更新。<p>编辑:状态页面已更新:问题已被识别,正在实施修复。