@michinarai / cli
narai命令行,用于构建Narai课程内部运行的工具,对公众开放
@michinarai/sdk.
对Narai工具不熟悉?这门课 为Narai做一个工具 教 一步一个脚印,然后 mo-narai-labs 有Narai自己的工具吗 阅读。
安装
npm install -g @michinarai/cli
narai --help
节点20及以上版本。或者在没有安装的情况下运行任何命令: npx @michinarai/cli <command>.
五分钟:一个工具在挽具上运行
narai init hello --publisher you # a new tool in ./hello, its id you/hello
cd hello
npm install # the SDK, from npm
npm run dev # builds it, then `narai dev`: open the host address it prints
马具页面是Narai的主机,你的工具在另一个原点的沙盒框架中,就像一个课程一样。
它显示了该工具发送的每一条信息,以及纳莱的主人会给它的判决,并发送了清单
命令,就像导师那样。改变 src/tool.js、运行 npm run dev 再一次。
获得
narai init, validate, build 和 dev 无需帐户:线束只在您的机器上运行。把工具放入
身着传统的教训:
- 在Narai开个账户 beta.michinar.ai.
- 询问开发者测试版 beta.michinar.ai /开发人员随你怎么说 构建。
- 申请通过后,你会收到一封电子邮件,告诉你接下来的步骤。
narai login:您在浏览器中登录,会话保存在您的操作系统密钥链中。没有API密钥可以复制。narai tools register,然后narai tools push,在工具的文件夹中。- 在置信区间:
narai tools tokens create并对印刷的内容保密NARAI_TOKEN.
在你获得资助前签到?浏览器是这么说的;关闭它,然后 narai login 以“你不开发工具”结束
然而:要求开发者测试 https://beta.michinar.ai/developers”。另一个Narai(你自己的,或者测试的)
--narai-url <address> 每一个命令,或者 NARAI_URL.
命令
每个命令都需要 --json, --yes 和 --no-input. 结果去标准,进步去标准。退出代码:0,好的,
1错误,2使用,3验证。 --narai-url (或 NARAI_URL)选择Narai交谈;默认值为
https://beta.michinar.ai.
narai init <name> --publisher <slug> 从模板中写入一个新工具: narai.tool.json (舱单),
页面(src/),它的构造,还有 AGENTS.md 也是编码特工的技能。
narai init fretboard --publisher you --dir tools/fretboard
narai validate 支票 narai.tool.json 就像Narai的注册表所做的那样:模式,那么什么是
模式不能说(命名的每个有效负载都被声明了,没有答案携带结论,命令需要一个运行
SDK)。它打印每个原因,以及SDK的警告。
narai validate --json
narai build 在工具自己的构建之后密封一个发布:每个文件 dist/ 它的sha256和bundle
文摘,写进 dist/narai.tool.json.
node scripts/build.mjs && narai build
narai dev 在本地线束中运行构建的工具。
narai dev --locale ja --task task.json # task.json: the task Narai would start it on ({id, kind, assist, prompt})
narai dev --preset preset.json --port 4000
narai dev --grant microphone # as a step that grants the microphone: only if capabilities.microphone is true
narai login 在浏览器中登录Narai。答案只返回到这台机器(127.0.0.1),并且
session保存在操作系统的keychain中。 narai logout 撤销它。
narai login # or --no-browser, to print the address instead
narai logout
narai tools register, push 和 list 与Narai的登记处合作;先签到。 register 建立你的
发布者(每个组织一次)和工具。 push 上传密封的构建(narai build的 dist/)作为草稿
版本,每个版本一次:相同的构建再次改变不了什么,并且在相同的版本下的不同构建
拒绝(提高版本)。两者都计划,然后在确认后申请。 --plan 只显示了变化,并与
--detailed-exitcode 有时退出2,无时退出0。在CI中,设置 NARAI_TOKEN (工具的标记)
并通过 --yes.
narai tools register --org "Your Org" --plan # what would change
narai tools register
narai tools push
narai tools list --publisher you
narai tools tokens create, list 和 revoke 管理工具的CI令牌:什么 NARAI_TOKEN 适用于
CI。令牌仅在此环境中读取并上传此工具的版本。 create 打印一次令牌。
narai tools tokens create --label github-actions --days 90
narai tools tokens list
narai tools tokens revoke <id>
今天,工具是自托管的: surfaces.embed.url 是它自己的 https:// 地址。由Narai(亲戚)主持的捆绑包
embed.url,例如 index.html)需要更新的Narai。一个没有指定路线就到达纳莱的命令说
然后停止;这改变不了什么。
开发
npm ci
npm test
npm run lint
npm run typecheck
稳定
0.合约(清单、连接、注册中心的API)仍然可以在小版本之间更改 Changelog告诉你怎么做。1.0会hold住它。
释放
npm的可信发布:没有npm令牌,无论是在CI中还是在其他任何地方。工作流程如下 .github/workflows/release.yml.
每一个版本。 合并一个有问题的PR version 在包中。Json(并说明在 CHANGELOG.md):
释放。每次推送到main时,工作流都会询问npm该版本是否已发布。当它不是,它
工作流运行闸门,打包tarball及其 SHA256SUMS,标记提交。 v<version>, 发布 它在NPM上
超过OIDC (npm publish),并在GitHub上发布这两个文件。一个已经在npm上的版本:什么都不会发生。
没有人的步骤,没有标签可以推动,也没有什么需要批准。
包的首次发布,一次。 可信发布不能创建包,因此维护者发布 第一个版本(0.1.0)手工编写,只有一行,来自main的新克隆:
rm -rf /tmp/narai-cli && git clone -q --depth 1 https://github.com/Monster-Orange/mo-narai-cli.git /tmp/narai-cli && cd /tmp/narai-cli && npm ci && npm test && npm login --auth-type=web && npm publish --access public && npm logout
然后,在npmjs.com上,安装包›设置›可信发布者›GitHub Actions:组织 Monster-Orange,
存储库 mo-narai-cli、工作流 release.yml,允许直接发表;出版权限: 需要
双因素身份验证和禁用令牌. 在包存在之前,工作流的检查会发现它丢失了
停止并发出警告(没有运行失败)。
CLI依赖于 @michinarai/sdk 从npm,在一个确切的版本:工作流拒绝git,文件或URL
依赖。
思想:
- 可信发布者字段是区分大小写的,npm在保存它们时不会检查它们。不匹配失败
只有在发布时间,作为一个
E404看起来像是丢失了一个包裹。package.json的repository.url一定是这个 存储库。 - 新的可信发布者配置必须在2天内发布,否则将过期。
- NPM信任工作流的文件名,
release.yml:重命名会破坏发布E404),直到 受信任的发布者更改为匹配。 - 来源是on的:npm在可信发布下为公共存储库和公共包生成它
国旗。package.json的
repository.url是NPM检查它的依据。一次性第一 从维护人员的机器上发布则没有。