evo.ninja

我首先阅读的是 evo.ninja 这个仓库的代码
在它根目录的 package.json 中,它的 script 是这样写的:

  "scripts": {
    "reset": "yarn clean && yarn && yarn build",
    "clean": "npx rimraf ./node_modules ./*/**/node_modules ./*/**/yarn.lock ./*/**/build",
    "build": "npx turbo build",
    "build:browser": "yarn workspace @evo-ninja/ui run build",
    "start": "yarn workspace evo-ninja run start",
    "start:browser": "yarn workspace @evo-ninja/ui run start",
    "start:api": "yarn workspace evo-ninja run start:api",
    "lint": "npx turbo lint",
    "lint:fix": "npx turbo lint -- --fix"
  },

然后在 run 中,它运行的是 start:api。所以我们直接来看 start:api 的代码。

可以看到 start:api 的代码是在工作区中 package.json 的 name 是 evo-ninja 的这个文件夹中的 package.json 中的 script 中的 start:api

具体位置就是 evo.ninja/app.cli 了

这个代码的 package.json 是这样写的:

"scripts": {
  "start": "ts-node src/cli.ts",
  "start:api": "ts-node src/api.ts",
  "build": "rimraf build && tsc --project tsconfig.build.json",
},

也就是说命令在 cli.ts,服务在 api.ts,而这两个文件都依赖于 app.ts,它才是主体。

evo.ninja api
它用到了一个叫做 agent-protocol 的库来实现
agent-protocol代码阅读