# @collective-intelligence/lint 中文文档

规范地址：https://npmcn.com/package/%40collective-intelligence/lint/

版本：0\.2\.4
npm 元数据更新时间：2026-11-06T17:30:03.740Z
中文译文更新时间：2026-11-10T12:20:54.626Z
软件包许可：未声明

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40collective-intelligence/lint
原文对照：https://npmcn.com/package/%40collective-intelligence/lint/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：63.9 kB，22 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：1 个
- peer 依赖：oxlint \>=1\.82\.0
- 首次发布：2026-10-28T13:18:55.717Z
- 最新版本发布：2026-11-06T17:30:03.490Z
- 近 30 天下载量：3089（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：15（近 12 个月 15 个）

## 中文简介

带有"集体智能林特"规则的Oxlint插件:包边界和解决方案包布局.

## 安装

```sh
npm install @collective-intelligence/lint
```

也可以使用：`pnpm add @collective-intelligence/lint`、`yarn add @collective-intelligence/lint`、`bun add @collective-intelligence/lint`

## README

# @ 集体智能/ lint

集体情报规则,作为一个Oxlint插件。 每一个线人 规则住在这个包裹。 插件已命名 `ci-solution`因此,每个规则是 启用为 `ci-solution/<rule>`。 。 。 .

## 安装

```sh
bun add -d oxlint @collective-intelligence/lint
```

插件需要 `oxlint` 1.82.0 或后来.

## 使用

### 所有规则

扩展 `recommended` 配置为 `oxlint.config.ts`。它装入插件和 允许作为错误的每条规则 :

```ts
import { recommended } from "@collective-intelligence/lint"
import { defineConfig } from "oxlint"

export default defineConfig({
  extends: [recommended]
})
```

要改变一条规则,请在扩展后设置:

```ts
export default defineConfig({
  extends: [recommended],
  rules: { "ci-solution/subpath-index": "warn" }
})
```

### 选定规则

装入插件并只启用您想要的规则 :

```ts
import { defineConfig } from "oxlint"

export default defineConfig({
  jsPlugins: ["@collective-intelligence/lint"],
  rules: {
    "ci-solution/package-entrypoint": "error",
    "ci-solution/subpath-imports": "error"
  }
})
```

JSON 配置同样有效:

```json
{
  "jsPlugins": ["@collective-intelligence/lint"],
  "rules": { "ci-solution/package-entrypoint": "error" }
}
```

这个 `RuleName` 类型列出每个规则名称.

## 代理技能

包裹上装的是代理技能 `ci-solution-structure` 时间 `skills/ci-solution-structure/SKILL.md`在哈尼斯情报库里, 页:1 `collective-intelligence` 包装技能并添加插件 `ci-solution/package-entrypoint` 切入到管理配置中.

## 规则

| 规则 | 强制执行 | 组 |
| --- | --- | --- |
| `ci-solution/package-entrypoint` | 进口另一套件,目标是在其 `package.json` 出口. | 软件包边界 |
| `ci-solution/subpath-imports` | 子路径文件夹之间的导入遵循允许的方向 . | 解决方案布局 |
| `ci-solution/subpath-entrypoint` | 从另一个子路径文件夹导入目标为文件夹或其索引文件 . | 解决方案布局 |
| `ci-solution/subpath-index` | 每个子路径文件夹都有一个 `index.ts` 或者说 `index.tsx`。 。 。 . | 解决方案布局 |
| `ci-solution/effect-subpath` | 一个SDK效应API来自SDK的 `/effect` 子路径; 已删除的 SDK 路径被报告 . | 效果公约 |
| `ci-solution/no-run-in-view` | 查看模块调用否 `fetch` 没有效果. | 效果公约 |
| `ci-solution/effect-actors` | X 国家副作用行为者是: `fromEffect` 演员. | 效果公约 |
| `ci-solution/effect-writes` | 没有模块需要 TanStack 查询 `useMutation`; 写入 `fromEffect` 演员. | 效果公约 |

### 软件包边界

一个工作空间持有互相导入的软件包 。 这些规则都保留 其公布的公开入境点后面的包.

#### `package-entrypoint`

通过其根导入另一个软件包( E)`@scope/pkg`)或列于 联合国 `package.json` `exports` (单位:千美元)`@scope/pkg/views`) (中文(简体) ). `*` 模式和模式 `null` 排除遵循节点解析。 规则是,通过 `node_modules` 从导入文件开始,所以工作空间包必须链接到 包管理器.

```ts
import { invoiceTotal } from "@acme/billing" // valid
import { invoiceTable } from "@acme/billing/views" // valid when "./views" is exported
import { rate } from "@acme/billing/src/domain/rates" // reported
import { rate } from "../../billing/src/domain/rates" // reported: relative path into another package
```

没有包 `exports` 字段接受除 `src/`。 。 。 . 无法找到的软件包不检查 .

### 解决方案布局

解决方案包可以将其来源分割为子路径文件夹:

```text
src/
  ci/        Collective Intelligence entity and capability declarations
  domain/    domain model, free of runtime concerns
  api/       API contracts
  server/    server handlers and runtime wiring
  headless/  UI state without rendering
  views/     rendered UI
```

这些规则将那些文件夹分开.

#### `subpath-imports`

| 文件夹 | 不得导入 |
| --- | --- |
| `domain/` | `server/`, (中文(简体) ), `views/`, (中文(简体) ), `headless/`, (中文(简体) ), `ci/` |
| `ci/` | `views/`, (中文(简体) ), `headless/` |
| `headless/` | `server/` |
| `views/` | `server/` |
| `api/` | 无限制 |
| `server/` | 无限制 |

规则通过包名检查相对进出口 (单位:千美元)`@acme/billing/server` 从 `src/views/`) (中文(简体) ).

#### `subpath-entrypoint`

从另一个子路径文件夹导入目标为文件夹或其索引文件 . 一个子路径文件夹中的导入是免费的 .

```ts
// src/views/table.ts
import { invoiceTotal } from "../domain" // valid
import { invoiceTotal } from "../domain/index.ts" // valid
import { rate } from "../domain/rates" // reported
```

#### `subpath-index`

每个子路径文件夹下方 `src/` 有一个 `index.ts` 或者说 `index.tsx` 进入点. 规则在文件夹中报告每个文件 .

### 效果公约

应用程序在 XState 机器中保留其副作用: 每一个副作用都是一个 `fromEffect` 角色,通过 TanStack 查询查看数据,并刷新 那些通过SDK读取 `QueryCache`这些规则 检查进口和呼叫的公约部分.

#### `effect-subpath`

集体情报系统`@collective-intelligence/*`暴露其影响 API 时间 `<sdk>/effect` 财务报告和审定财务报表 `<sdk>/effect/<adapter>`。规则报告 SDK 路径 名称 `<sdk>-effect` 软件包,或 `effect` 部分 在另一个子路径之下。 它还报告每条SDK路径,0.2.0后发布 删除,并替换:

| 删除路径 | 替换 |
| --- | --- |
| `@collective-intelligence/external-apps-server-sdk/runtime/effect` | `@collective-intelligence/external-apps-server-sdk/effect` |
| `@collective-intelligence/external-apps-server-sdk/persistence/drizzle/effect` | `@collective-intelligence/external-apps-server-sdk/effect`· ; `layerNodePostgres` 财务报告和审定财务报表 `NodePostgresLayerOptions` 从 `@collective-intelligence/external-apps-server-sdk/effect/node-postgres` |
| `@collective-intelligence/external-apps-server-sdk/runtime/next` | `@collective-intelligence/external-apps-server-sdk/next` |
| `@collective-intelligence/extensions-sdk-backend-effect` | `@collective-intelligence/extensions-sdk-backend/effect` |

```ts
import { CiClient } from "@collective-intelligence/external-apps-client-sdk/effect" // valid
import { createClient } from "@collective-intelligence/external-apps-client-sdk" // valid
import { Realtime } from "@collective-intelligence/external-apps-client-sdk/realtime/effect" // reported
import { CiRuntime } from "@collective-intelligence/external-apps-server-sdk/runtime/effect" // reported: removed
```

#### `no-run-in-view`

视图模块是 `.tsx` 或者说 `.jsx` 文件,或文件中的文件 `views/` 子路径 a 解决方案包。 该规则报告了全球 `fetch` (另见: `globalThis.fetch` 财务报告和审定财务报表 `window.fetch`)和每次使用效果运行函数 (单位:千美元)`runPromise`, (中文(简体) ), `runSync`, (中文(简体) ), `runFork` 以及其它问题 `run*` 职能 `Effect` 财务报告和审定财务报表 `ManagedRuntime`:

-   a 从任何物体读取、调用或传递为值: `Effect.runPromise(x)`, (中文(简体) ), `runtime.runSync(x)`, (中文(简体) ), `x.pipe(Effect.runPromise)`· ;
-   解结构模式中的密钥 : `const { runFork } = runtime`· ;
-   从 `effect`, (中文(简体) ), `effect/*` 或者说 `@effect/*`数字 : `import { runPromise } from "effect/Effect"`。 。 。 .

括号或引文中的常数也算: `window["fetch"](url)`, (中文(简体) ), ``Effect[`runSync`](x)`` 财务报告和审定财务报表 `const { "runFork": fork } = runtime` 报告. 本地绑定名称 `fetch`, (中文(简体) ), `globalThis` 或者说 `window`,如 `cache.fetch`,括号中的名称,该名称只能运行时间给出(`Effect[key]`和一个 对象字元键, 如 `{ runPromise: run }` 未报告。 允许 在视图测试中调用, 关闭测试文件的规则 `overrides` 输入.

#### `effect-actors`

规则逐一报告 `fromPromise`, (中文(简体) ), `fromCallback`, (中文(简体) ), `fromObservable` 财务报告和审定财务报表 `fromEventObservable` 输入、再出口或命名空间导入 (单位:千美元)`XState.fromPromise`, (中文(简体) ), `XState["fromPromise"]`, (中文(简体) ), `const { fromPromise } = XState`从 `xstate` 或者说 `xstate/*`。使副作用行为者 `fromEffect` 从 `@collective-intelligence/external-apps-client-sdk-react/effect` 在离散中 应用程序,或来自 `@collective-intelligence/extensions-sdk-frontend-react/effect` 内 一个主机工作室部件。 机器和 `fromTransition` 行为者没有副作用,也没有报告。 本地名称 阴影化命名空间导入,例如一个命名的参数 `XState`,没有 报告.

#### `effect-writes`

规则逐一报告 `useMutation` 导入、再导出或命名空间 导入( e)`ReactQuery.useMutation`, (中文(简体) ), `ReactQuery["useMutation"]`, (中文(简体) ), `const { useMutation } = ReactQuery`从 `@tanstack/react-query`。通过一个 `fromEffect` 演员来自 `@collective-intelligence/external-apps-client-sdk-react/effect` 在离散中 应用程序,或来自 `@collective-intelligence/extensions-sdk-frontend-react/effect` 内 a 主机 Studio 部件; 写入后, 演员刷新读取 `QueryCache` 同一入境点的`invalidate`, (中文(简体) ), `setData`) (中文(简体) ).

规则检查每个模块. `useMutation` 只在反应渲染时运行, 因此,一个模块 取它是一个视图, 钩或帮助其中之一.

`useQuery` 而其他的则不报告 `useMutationState` 财务报告和审定财务报表 `useIsMutating`: 他们只读到一个状态 `useMutation`A级 `useMutation` 从另一个图书馆,例如 `@apollo/client`,未报告。 实体钩 `@collective-intelligence/external-apps-client-sdk-react/resources` (单位:千美元)`useEntityCreate`, (中文(简体) ), `useEntityUpdate`, (中文(简体) ), `useEntityDelete`未报告 : sDK 书写并刷新它自己的实体读取.

规则检查没有查询密钥 。 SDK的应用程序 `"ci-entities"` 键,例如 `invalidateQueries`未报告: SDK 拥有用于实体读取的密钥,但没有导出用于 因此,报告将没有任何支持性的解决办法.

## 添加规则

每条规则都是Oxlint在自己的文件夹里的规则, `src/rules/<rule>/`数字 :

1.  写入 `src/rules/<rule>/<rule>.ts`导出 a `LintRule` (单位:千美元)`src/rule.ts`(中文(简体) ) 改为:
    
    -   `group`: 上表中的规则组(添加一组为 `RuleGroup` 当没有一组人适合的时候;
    -   `rule`: 规则从 `defineRule` 联 合 国 `@oxlint/plugins`,带有 `messages` 输入 `meta` 每一个发现. `src/rule.ts` 拿着 共享帮助 : `moduleSpecifiers` 建立一个访问者 检查每一个 模块指定符, `staticPropertyName` 读取一个恒定属性名称,并且 `declaredVariable` 查找一个名称所指的变量.
    
    一个规则读取工作空间通过 `src/workspace/`数字 : `packageOf` 财务报告和审定财务报表 `installedPackage` 找到包裹清单, `declaresEntrypoint` 检查 `exports`,以及 `layoutFile` 找到文件的子路径 .
    
2.  在登记册上添加一行, `src/rules/index.ts`插件、 插件 `recommended` 配置和配置 `RuleName` 类型从它.
    
3.  写入 `src/rules/<rule>/<rule>.test.ts` 相对于固定的工作空间 `test/fixtures/workspace/`,并添加新案件的固定文件。 添加 满足人们期望的新诊断 `src/index.test.ts`。 。 。 .
    
4.  将规则添加到上表 `CHANGELOG.md`。 。 。 .
    

Oxlint同步调用规则访问者,所以规则读取文件与 同步 `node:fs` API:它不能等待承诺或计时器. 这个 工作区搜索缓存每个文件夹,所以每个软件包 每个插件装入一次.

## 常见问题

### @collective-intelligence/lint 是什么？

带有"集体智能林特"规则的Oxlint插件:包边界和解决方案包布局\.

### 如何安装 @collective-intelligence/lint？

在项目目录运行 npm install @collective-intelligence/lint，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：oxlint（\>=1\.82\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @collective-intelligence/lint 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @collective-intelligence/lint 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @collective-intelligence/lint 可以商用吗？

@collective-intelligence/lint 使用 未声明 许可。package\.json 没有声明许可证。没有许可证的代码默认保留全部权利，商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括，不构成法律意见，请以许可原文为准。

### @collective-intelligence/lint 的下载量有多少？

根据 npm 官方下载统计，@collective-intelligence/lint 在 2026/10/11 – 2026/11/09 这 30 天内被下载 3,089 次，日均约 103 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @collective-intelligence/lint 还在维护吗？

最新版本 0\.2\.4 发布于 2026/11/07（3 天前）；至今共发布 15 个版本，其中过去 12 个月发布了 15 个；首次发布于 2026/10/28。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

