# https://github.com/Peiiii/nextclaw 项目说明书

生成时间：2026-07-27 18:07:18 UTC

## 目录

- [项目概览](#page-overview)
- [Lib 模块](#page-packages-nextclaw-core-src-shared-lib)
- [Lib 模块](#page-apps-landing-src-shared-lib)
- [Lib 模块](#page-packages-nextclaw-agent-chat-ui-src-lib)
- [Lib 模块](#page-apps-competitive-leaderboard-src-lib)
- [Lib 模块](#page-apps-maintainability-console-src-lib)
- [Lib 模块](#page-apps-platform-admin-src-lib)

<a id='page-overview'></a>

## 项目概览

### 相关页面

相关主题：[Lib 模块](#page-packages-nextclaw-core-src-shared-lib)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [README.md](https://github.com/Peiiii/nextclaw/blob/main/README.md)
- [package.json](https://github.com/Peiiii/nextclaw/blob/main/package.json)
- [apps/companion/package.json](https://github.com/Peiiii/nextclaw/blob/main/apps/companion/package.json)
- [apps/competitive-leaderboard/package.json](https://github.com/Peiiii/nextclaw/blob/main/apps/competitive-leaderboard/package.json)
- [apps/desktop/README.md](https://github.com/Peiiii/nextclaw/blob/main/apps/desktop/README.md)
- [apps/desktop/package.json](https://github.com/Peiiii/nextclaw/blob/main/apps/desktop/package.json)
- [apps/desktop/src/launcher/README.md](https://github.com/Peiiii/nextclaw/blob/main/apps/desktop/src/launcher/README.md)

</details>

# 项目概览

## 一、项目定位与目标用户

NextClaw（仓库 `Peiiii/nextclaw`）是一个面向"类 OpenClaw"使用场景的多端 Agent 运行时项目。顶层 `README.md` 将其定位为可在 CLI、桌面端与 Web 端统一部署的对话与代理入口，强调"开箱即用、可视化、人性化界面"。

- **双分发形态**：同时维护 NPM CLI 发行版（`nextclaw@x.y.z`）与桌面安装包（`NextClaw Desktop`）两条分发渠道，前者面向开发者与服务器部署，后者面向普通用户。
- **核心抽象**：围绕 **Channels（消息渠道）**、**Providers（模型/搜索提供方）**、**Skills（技能）** 三大模块展开，方便扩展第三方消息平台与模型服务。

资料来源：[README.md:1-40]()、[apps/desktop/README.md:1-30]()

## 二、仓库与子项目结构

NextClaw 是一个 monorepo，顶层聚合了 CLI、桌面端、配套 Web 应用与共享子包：

```mermaid
graph TD
  Root[nextclaw monorepo<br/>package.json] --> Desktop[apps/desktop<br/>Electron 桌面端]
  Root --> Companion[apps/companion<br/>伴侣应用]
  Root --> LB[apps/competitive-leaderboard<br/>排行榜前端]
  Desktop --> Launcher[apps/desktop/src/launcher<br/>启动器/更新器]
  Desktop --> Main[apps/desktop/src/main<br/>主窗口与运行时]
```

- `apps/desktop/package.json` 定义了桌面壳版本号、嵌入的运行时捆绑版本，以及最低启动器版本约束，保证跨发行版的兼容性。
- `apps/desktop/src/launcher/README.md` 记录了桌面端特有的启动、更新、签名与安装路径逻辑。
- `apps/companion` 与 `apps/competitive-leaderboard` 是与主产品配套的轻量前端项目，提供同步/社区类能力。

资料来源：[package.json:1-30]()、[apps/desktop/package.json:1-40]()、[apps/desktop/src/launcher/README.md:1-30]()

## 三、核心能力与已知的扩展点

NextClaw 的能力由配置驱动的多模块组成：

- **Channels**：当前支持 Telegram 等消息平台。社区反馈指出 Telegram forum 主题（`message_thread_id`）尚未被区分处理（issue #11），属于待扩展点。
- **Providers**：模型提供方如 Groq 等；若 `providers.groq` 整段缺失，早期版本会在 `nextclaw start` 阶段触发空引用崩溃（issue #4），属于历史已修复缺陷。
- **Skills**：技能系统支持动态安装与调用，Windows 10/11 早期版本曾出现安装失败（issue #3，已修复）；社区另请求在 UI 中集成技能市场与调用统计（issue #14）。
- **搜索渠道**：当前内置 bocha 与 brave，社区希望原生支持 Tavily 与 EXA（issue #10）。
- **UI 主题**：当前仅有亮色模式，社区高优请求暗色模式（issue #18）。
- **启动健康度**：曾出现 `Marked as degraded after start` 的误报（issue #6），后续版本已修复。

资料来源：[apps/companion/package.json:1-20]()、[apps/competitive-leaderboard/package.json:1-20]()、[README.md:1-40]()

## 四、发布节奏与版本线

项目通过 GitHub Releases 同时维护 NPM 运行时与桌面壳两条版本线：

- **NPM 运行时**：最新稳定版 `nextclaw@0.27.5`，近期连续发布 `0.25.3 → 0.26.0/0.26.1 → 0.27.0–0.27.5`，呈高频小版本迭代。
- **桌面壳**：`NextClaw Desktop 0.0.227` 捆绑 `0.26.0` 运行时；`0.0.223` 捆绑 `0.25.0`。桌面端的版本号（`0.0.x`）与内部捆绑的运行时版本号（`0.x.y`）是独立递增的。
- **本次发布要点**（`v0.27.5`）：新对话自动恢复最近为每个 Agent Runtime 选择的模型，提供更清晰的上下文压缩反馈并增强消息连续性。

资料来源：[README.md:1-40]()、[apps/desktop/README.md:1-30]()

---

**建议的后续阅读**：若需要深入了解某一能力，可按本文档导航进入《Telegram 渠道》《技能系统》《桌面启动器》等专题页面。

---

<a id='page-packages-nextclaw-core-src-shared-lib'></a>

## Lib 模块

### 相关页面

相关主题：[项目概览](#page-overview), [Lib 模块](#page-apps-landing-src-shared-lib)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [packages/nextclaw-core/src/shared/lib/core-utils/features/openai/index.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw-core/src/shared/lib/core-utils/features/openai/index.ts)
- [packages/nextclaw-core/src/shared/lib/core-utils/features/openai/utils/response.utils.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw-core/src/shared/lib/core-utils/features/openai/utils/response.utils.ts)
- [packages/nextclaw-core/src/shared/lib/core-utils/features/openai/utils/responses-payload.utils.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw-core/src/shared/lib/core-utils/features/openai/utils/responses-payload.utils.ts)
- [packages/nextclaw-core/src/shared/lib/core-utils/features/openai/utils/responses-stream-state.utils.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw-core/src/shared/lib/core-utils/features/openai/utils/responses-stream-state.utils.ts)
- [packages/nextclaw-core/src/shared/lib/core-utils/features/openai/utils/responses-stream.utils.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw-core/src/shared/lib/core-utils/features/openai/utils/responses-stream.utils.ts)
- [packages/nextclaw-core/src/shared/lib/core-utils/features/openai/utils/sse-stream.utils.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw-core/src/shared/lib/core-utils/features/openai/utils/sse-stream.utils.ts)
</details>

# Lib 模块

## 模块定位与职责

`Lib` 模块位于 `packages/nextclaw-core/src/shared/lib/`，是 NextClaw 核心包中**共享的纯函数与领域工具库**，被 CLI、Desktop 端以及上层特性（channels、providers、skills、agents 等）共同依赖。它承担三类职责：

1. **通用基础工具**：与具体业务无关的字符串、对象、IO、流处理等纯函数。
2. **领域工具（feature-scoped utilities）**：按特性维度（如 openai）组织的高阶工具集，封装与外部服务或协议交互的细节。
3. **稳定 API 出口**：通过每个特性目录下的 `index.ts` 统一对外暴露，避免上层直接耦合内部文件。

资料来源：[packages/nextclaw-core/src/shared/lib/core-utils/features/openai/index.ts:1-40]()

## 目录结构

`Lib` 模块以 `core-utils` 为根目录，按"特性 → 子工具"两层组织：

```
src/shared/lib/
└── core-utils/
    └── features/
        ├── openai/
        │   ├── index.ts            # 统一出口
        │   └── utils/              # 细分工具
        │       ├── response.utils.ts
        │       ├── responses-payload.utils.ts
        │       ├── responses-stream-state.utils.ts
        │       ├── responses-stream.utils.ts
        │       └── sse-stream.utils.ts
        └── <其他特性>/
```

每个特性目录都遵循同样的模式：`index.ts` 汇总导出，`utils/` 下放实现细节。这种"特性桶（feature barrel）"的结构使得新增能力时只需新增一个 `features/<name>/` 子树，不影响既有调用方。

资料来源：[packages/nextclaw-core/src/shared/lib/core-utils/features/openai/index.ts:1-40]()、[packages/nextclaw-core/src/shared/lib/core-utils/features/openai/utils/response.utils.ts:1-20]()

## core-utils 与特性桶模式

`core-utils` 是 Lib 模块的核心容器，它的设计原则是"**以特性为单位聚合工具**"：

- **统一入口**：上层代码只通过 `core-utils/features/<feature>/index.ts` 引用能力，例如 `import { ... } from '@nextclaw/core/shared/lib/core-utils/features/openai'`。
- **实现隐藏**：`utils/` 子目录里的实现细节（响应解析、流状态机、SSE 解码等）不直接被外部依赖，未来重构不会破坏 API 表面。
- **就近组织**：与某特性强相关的代码集中放置，避免散落在 `shared/lib/` 顶层造成"工具坟场"。

资料来源：[packages/nextclaw-core/src/shared/lib/core-utils/features/openai/index.ts:1-40]()

## OpenAI 特性工具集：以 Responses API 为例

`features/openai/` 是当前最完整的特性桶，覆盖与 OpenAI Responses API（含流式）交互所需的所有底层工具：

| 工具文件 | 主要职责 |
| --- | --- |
| `response.utils.ts` | 处理非流式 `response` 对象的归一化、字段提取、错误归类 |
| `responses-payload.utils.ts` | 构造与校验请求 payload（消息、工具、上下文压缩参数） |
| `responses-stream-state.utils.ts` | 维护流式响应的事件状态机（已接收 token、当前 delta、是否结束） |
| `responses-stream.utils.ts` | 把上游分片聚合成可消费的事件序列，供上层订阅 |
| `sse-stream.utils.ts` | Server-Sent Events 字节流解码，处理 `data:` 行、换行与多事件边界 |

各工具之间存在单向依赖：`sse-stream.utils.ts` 是最底层的字节解析层，向 `responses-stream.utils.ts` 提供事件；后者把事件喂给 `responses-stream-state.utils.ts` 维护状态；最终由 `response.utils.ts` 在请求结束时汇总成最终响应对象。`responses-payload.utils.ts` 与上述四者无运行时依赖，仅在请求构造阶段被调用。

```mermaid
flowchart LR
    Byte[SSE 字节流] --> SSE[sse-stream.utils.ts]
    SSE --> Stream[responses-stream.utils.ts]
    Stream --> State[responses-stream-state.utils.ts]
    State --> Resp[response.utils.ts<br/>最终响应]
    Payload[responses-payload.utils.ts<br/>请求构造] -.独立.-> Stream
```

这一分层在社区反馈的 **上下文压缩（context compaction）** 场景中尤为重要：v0.27.5 引入的"更清晰的上下文压缩反馈"正是通过 `responses-stream-state.utils.ts` 在流式过程中插入压缩事件，由 `response.utils.ts` 汇总到最终结果，使 Agent 在长对话中保持消息连续性。

资料来源：[packages/nextclaw-core/src/shared/lib/core-utils/features/openai/utils/sse-stream.utils.ts:1-40]()、[packages/nextclaw-core/src/shared/lib/core-utils/features/openai/utils/responses-stream.utils.ts:1-40]()、[packages/nextclaw-core/src/shared/lib/core-utils/features/openai/utils/responses-stream-state.utils.ts:1-40]()、[packages/nextclaw-core/src/shared/lib/core-utils/features/openai/utils/response.utils.ts:1-40]()、[packages/nextclaw-core/src/shared/lib/core-utils/features/openai/utils/responses-payload.utils.ts:1-40]()

## 扩展与演进建议

向 `Lib` 模块新增能力时，应遵循以下约定：

- 在 `core-utils/features/<feature>/` 下创建目录，并提供 `index.ts` 作为统一出口。
- 内部实现放在 `<feature>/utils/*.utils.ts`，文件名以 `.utils.ts` 结尾以保持一致性。
- 保持**纯函数**风格：避免直接依赖全局状态或外部 IO，便于在 CLI、Desktop、单元测试中复用。
- 与上游协议（如 OpenAI Responses、Telegram `message_thread_id`）强相关的解析逻辑应优先进入 `Lib`，由 channels/providers 调用，而不是写在业务层。

这种结构与社区中"**技能市场（#14）**""**暗色模式（#18）**"等请求并不直接冲突——它们属于 UI 层；但当涉及底层协议适配（例如未来原生支持 Tavily / EXA 搜索渠道，#10）时，新增的 `features/search/tavily/`、`features/search/exa/` 桶即可按同一模式落地，无需修改 Lib 模块的骨架。

资料来源：[packages/nextclaw-core/src/shared/lib/core-utils/features/openai/index.ts:1-40]()、[packages/nextclaw-core/src/shared/lib/core-utils/features/openai/utils/response.utils.ts:1-40]()

---

<a id='page-apps-landing-src-shared-lib'></a>

## Lib 模块

### 相关页面

相关主题：[Lib 模块](#page-packages-nextclaw-core-src-shared-lib), [Lib 模块](#page-packages-nextclaw-agent-chat-ui-src-lib)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [apps/landing/src/shared/lib/desktop-release/desktop-release.utils.ts](https://github.com/Peiiii/nextclaw/blob/main/apps/landing/src/shared/lib/desktop-release/desktop-release.utils.ts)
- [apps/landing/src/shared/lib/desktop-release/index.ts](https://github.com/Peiiii/nextclaw/blob/main/apps/landing/src/shared/lib/desktop-release/index.ts)
- [apps/landing/src/shared/lib/landing-content/index.ts](https://github.com/Peiiii/nextclaw/blob/main/apps/landing/src/shared/lib/landing-content/index.ts)
- [apps/landing/src/shared/lib/landing-content/landing-comparison-content.config.ts](https://github.com/Peiiii/nextclaw/blob/main/apps/landing/src/shared/lib/landing-content/landing-comparison-content.config.ts)
- [apps/landing/src/shared/lib/landing-content/landing-content.types.ts](https://github.com/Peiiii/nextclaw/blob/main/apps/landing/src/shared/lib/landing-content/landing-content.types.ts)
- [apps/landing/src/shared/lib/landing-content/landing-home-sections.utils.ts](https://github.com/Peiiii/nextclaw/blob/main/apps/landing/src/shared/lib/landing-content/landing-home-sections.utils.ts)
</details>

# Lib 模块

`apps/landing/src/shared/lib` 是 NextClaw 项目中 landing 应用的"**共享工具与配置层**"，承担跨页面复用、内容模型定义与发布信息聚合三类职责。该目录采用「按子域分目录 + barrel 导出」的扁平化组织方式，所有子模块都通过 `index.ts` 重新暴露公共 API，便于页面或组件按需导入。资料来源：[apps/landing/src/shared/lib/desktop-release/index.ts:1-]()、[apps/landing/src/shared/lib/landing-content/index.ts:1-]()

## 1. 子模块划分与定位

目录下目前包含两个并列的子域模块，均属于"无副作用、可在服务端与客户端同时复用"的纯逻辑层：

| 子模块 | 路径 | 主要职责 |
|--------|------|----------|
| `desktop-release` | `apps/landing/src/shared/lib/desktop-release/` | 聚合桌面端版本发布信息（版本号、shell 版本、runtime 版本、launcher 版本等），为首页及文档站提供一致的桌面版元数据 |
| `landing-content` | `apps/landing/src/shared/lib/landing-content/` | 定义落地页内容的类型、对比区块（comparison）配置与首页分区（home sections）工具函数 |

资料来源：[apps/landing/src/shared/lib/desktop-release/desktop-release.utils.ts:1-]()、[apps/landing/src/shared/lib/landing-content/landing-comparison-content.config.ts:1-]()

## 2. desktop-release：桌面版发布信息聚合

该子模块通过 `desktop-release.utils.ts` 把分散的桌面发布字段（如 `Desktop shell version`、`Runtime bundle version`、`Minimum launcher version`）封装为统一的工具函数，供调用方在不改文件的情况下读取最新发布快照。`index.ts` 作为 barrel，仅做符号再导出，避免外部直接依赖内部实现细节。

在实际使用场景中，该工具与 NextClaw Desktop 的 release notes（如 0.0.227、0.0.223 等）相对应，使 landing 页能够直接渲染"桌面 shell 版本 / runtime 版本 / launcher 最低版本"三类角标信息。资料来源：[apps/landing/src/shared/lib/desktop-release/desktop-release.utils.ts:1-]()、[apps/landing/src/shared/lib/desktop-release/index.ts:1-]()

```mermaid
flowchart LR
  A[Release Notes 源数据] --> B[desktop-release.utils.ts]
  B --> C[index.ts barrel]
  C --> D[Landing 页面组件]
  C --> E[文档站元数据卡片]
```

## 3. landing-content：落地页内容模型

`landing-content` 子模块是页面内容的"单一事实来源（SSOT）"，由三类文件协作：

1. **类型层** — `landing-content.types.ts` 定义落地页区块的 TypeScript 类型（对比项、首页分区条目等），保证多页面渲染同一份数据时的类型一致性。
2. **配置层** — `landing-comparison-content.config.ts` 以声明式对象存储 NextClaw 与同类项目（如 openclaw 衍生工具）的对比条目，输入即信息。
3. **派生工具层** — `landing-home-sections.utils.ts` 基于类型与配置派生出首页分区所需的结构化数据，例如按权重排序、合并版本信息或注入最新 release 标签。

`landing-content/index.ts` 汇总三者的公开符号，使消费者（例如 `apps/landing/src/app/page.tsx` 与 `docs` 文档站）能够 `import { ... } from '@/shared/lib/landing-content'` 一次性获得类型、配置与工具函数。资料来源：[apps/landing/src/shared/lib/landing-content/landing-content.types.ts:1-]()、[apps/landing/src/shared/lib/landing-content/landing-comparison-content.config.ts:1-]()、[apps/landing/src/shared/lib/landing-content/landing-home-sections.utils.ts:1-]()、[apps/landing/src/shared/lib/landing-content/index.ts:1-]()

## 4. 设计模式与约束

- **Barrel 导出**：每个子模块都拥有独立的 `index.ts`，外部禁止跨层访问内部文件，方便后续重命名或拆分。
- **纯函数优先**：`*.utils.ts` 文件倾向于无副作用、可在 RSC（React Server Component）和客户端组件中共同加载，与 Next.js App Router 的渲染模型契合。
- **配置与派生分离**：`*.config.ts` 只负责静态声明，`*.utils.ts` 负责运行时派生，新增字段不会污染页面组件。
- **共享语义**：`shared/lib` 位于 `src/shared` 之下，意味着同目录未来可能扩展出更多跨 landing / docs 复用的工具（如搜索渠道元数据、release 引用的辅助函数等）。

资料来源：[apps/landing/src/shared/lib/desktop-release/index.ts:1-]()、[apps/landing/src/shared/lib/landing-content/index.ts:1-]()

## 与社区反馈的关联

社区中常见的"暗色模式 (#18)"与"UI 技能集成增强 (#14)"等特性请求，最终落地时通常需要新增或复用 `landing-content` 中的区块配置与类型；而"搜索渠道原生支持 Tavily/EXA (#10)"若进入文档站，也可能借助 `shared/lib` 层提供统一的搜索元数据封装，避免在每个页面重复定义。资料来源：[issue #18]()、[issue #14]()、[issue #10]()

---

<a id='page-packages-nextclaw-agent-chat-ui-src-lib'></a>

## Lib 模块

### 相关页面

相关主题：[Lib 模块](#page-apps-landing-src-shared-lib), [Lib 模块](#page-apps-competitive-leaderboard-src-lib)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [packages/nextclaw-agent-chat-ui/src/lib/input-surface/index.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw-agent-chat-ui/src/lib/input-surface/index.ts)
- [packages/nextclaw-agent-chat-ui/src/lib/input-surface/input-surface.types.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw-agent-chat-ui/src/lib/input-surface/input-surface.types.ts)
- [packages/nextclaw-agent-chat-ui/src/lib/input-surface/input-surface-plugin.utils.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw-agent-chat-ui/src/lib/input-surface/input-surface-plugin.utils.ts)
- [packages/nextclaw-agent-chat-ui/src/lib/input-surface/input-surface-plugin.tsx](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw-agent-chat-ui/src/lib/input-surface/input-surface-plugin.tsx)
- [packages/nextclaw-agent-chat-ui/src/lib/input-surface/input-surface.hooks.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw-agent-chat-ui/src/lib/input-surface/input-surface.hooks.ts)
</details>

# Lib 模块

## 1. 概述与定位

`Lib 模块` 位于 `packages/nextclaw-agent-chat-ui/src/lib/` 目录，是 NextClaw Agent Chat UI 的**内部基础设施层**。它承载与 UI 渲染解耦的可复用逻辑：类型契约、插件机制、纯函数工具与自定义 Hook。该模块不直接产出可见的 React 组件，而是为上层的 `components/`、`views/` 以及 Desktop 壳层提供"无副作用的原料"，使会话、附件、技能调用等复杂交互可在不引入渲染耦合的前提下被自由组装与扩展。

资料来源：[packages/nextclaw-agent-chat-ui/src/lib/input-surface/index.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw-agent-chat-ui/src/lib/input-surface/index.ts)

## 2. 目录组织与文件职责

`input-surface` 是当前最活跃的 Lib 单元，按"纯逻辑在前、React 适配在后"的原则切分为五个文件：

| 文件 | 角色 | 是否依赖 React |
| --- | --- | --- |
| `index.ts` | 公共出口（barrel），统一对外暴露 | 否 |
| `input-surface.types.ts` | 类型契约：插件、扩展点、上下文对象 | 否 |
| `input-surface-plugin.utils.ts` | 纯函数：合并、校验、归一化插件配置 | 否 |
| `input-surface-plugin.tsx` | 插件渲染层：把 utils 结果映射为 React 节点 | 是 |
| `input-surface.hooks.ts` | 自定义 Hook：订阅生命周期、暴露副作用入口 | 是 |

`types` 与 `utils` 构成**无 React 依赖**的纯层，可被 Node 端脚本（例如技能安装、CLI 配置校验）直接 import 复用；`tsx` 与 `hooks` 仅在前端运行时加载。`index.ts` 的 `export *` 收口保证了调用方只需从 `@/lib/input-surface` 单一入口引入，避免深层相对路径污染。

资料来源：[packages/nextclaw-agent-chat-ui/src/lib/input-surface/input-surface.types.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw-agent-chat-ui/src/lib/input-surface/input-surface.types.ts)，[packages/nextclaw-agent-chat-ui/src/lib/input-surface/input-surface-plugin.utils.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw-agent-chat-ui/src/lib/input-surface/input-surface-plugin.utils.ts)

## 3. 插件扩展机制

`input-surface` 通过**声明式插件**为聊天输入区提供扩展点。插件在 `types.ts` 中以接口形式描述其能力（快捷指令、附件处理器、技能触发器等），由 `utils.ts` 提供归一化函数：合并同名插件、剔除被禁用项、按优先级排序。`plugin.tsx` 拿到排序后的列表后，依次将每个插件渲染为输入区内的 UI 片段；`hooks.ts` 则负责在消息提交时遍历插件，收集需要追加到 prompt 的上下文片段，再交给上层 `chat-input` 组件统一发送。

这一分层设计直接回应了社区在 Issue #14 中提出的"技能调用统计"诉求——所有插件的生命周期都经过 `hooks` 拦截，理论上可在不改动插件作者代码的前提下植入调用埋点；同时由于归一化逻辑在 `utils.ts` 中是纯函数，单元测试可在不启动 React 的情况下完成。

资料来源：[packages/nextclaw-agent-chat-ui/src/lib/input-surface/input-surface-plugin.tsx](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw-agent-chat-ui/src/lib/input-surface/input-surface-plugin.tsx)，[packages/nextclaw-agent-chat-ui/src/lib/input-surface/input-surface.hooks.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw-agent-chat-ui/src/lib/input-surface/input-surface.hooks.ts)

## 4. 与运行时模块的边界

Lib 模块与 Telegram 渠道（Issue #4、#11）等运行时模块**互不直接耦合**：渠道侧只关心最终提交的消息 payload，而输入增强、主题归类、技能装配等行为都在 Lib 内部消化。这使得启动期缺少 `providers.groq` 等配置时不会牵连到输入区逻辑——崩溃被收敛在 Telegram channel 初始化路径中，而不会向上扩散到 Lib 层。

由于 `types.ts` 同时被前端组件、Desktop 壳层以及第三方技能消费，**对其的演进属于破坏性变更**。维护者在新增字段时应保持向后兼容（如使用可选属性 + 默认值），并在 PR 中显式标注；下游 `components/chat-input` 与所有自定义技能都依赖该契约的稳定性。

资料来源：[packages/nextclaw-agent-chat-ui/src/lib/input-surface/index.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw-agent-chat-ui/src/lib/input-surface/index.ts)，[packages/nextclaw-agent-chat-ui/src/lib/input-surface/input-surface.types.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw-agent-chat-ui/src/lib/input-surface/input-surface.types.ts)

---

<a id='page-apps-competitive-leaderboard-src-lib'></a>

## Lib 模块

### 相关页面

相关主题：[Lib 模块](#page-packages-nextclaw-agent-chat-ui-src-lib), [Lib 模块](#page-apps-maintainability-console-src-lib)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [packages/lib/src/channels/telegram/index.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/lib/src/channels/telegram/index.ts)
- [packages/lib/src/providers/groq/index.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/lib/src/providers/groq/index.ts)
- [packages/lib/src/search/bocha.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/lib/src/search/bocha.ts)
- [packages/lib/src/search/brave.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/lib/src/search/brave.ts)
- [packages/lib/src/skills/index.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/lib/src/skills/index.ts)
- [packages/lib/src/runtime/background-service.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/lib/src/runtime/background-service.ts)
- [packages/lib/src/config/index.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/lib/src/config/index.ts)
</details>

# Lib 模块

## 模块概述与职责边界

Lib 模块是 NextClaw 的核心运行时库，承载 CLI、桌面端（Desktop）以及未来扩展共用的大部分领域逻辑。它不直接面向用户，而是把"消息通道、AI 厂商、搜索渠道、技能管理、后台守护进程"等子系统封装成可被上层装配的模块。CLI 通过 `nextclaw start` 启动一个常驻后台服务，而该服务的初始化、上下文装配与生命周期管理都在 Lib 模块内完成 资料来源：[packages/lib/src/runtime/background-service.ts:1-120]()。

Lib 模块与配置层紧密耦合：所有子系统都从 `context.config` 读取自身的开关与凭据，例如 `channels.telegram.enabled`、`providers.groq.apiKey` 等 资料来源：[packages/lib/src/config/index.ts:1-90]()。这种"配置即真理"的模式意味着任何缺失的字段都可能让子系统在初始化阶段抛错，下文会详细说明已知风险。

## 核心子系统划分

Lib 模块在目录上按"领域能力"切分，主要子模块如下：

| 子模块 | 路径 | 职责 |
| --- | --- | --- |
| 通道（Channels） | `packages/lib/src/channels/*` | 接入 Telegram 等外部消息协议 |
| 厂商（Providers） | `packages/lib/src/providers/*` | 封装 Groq 等大模型推理端点 |
| 搜索（Search） | `packages/lib/src/search/*` | 对接 Bocha、Brave 等检索 API |
| 技能（Skills） | `packages/lib/src/skills/*` | 技能的发现、安装与调用统计 |
| 运行时（Runtime） | `packages/lib/src/runtime/*` | 后台服务、就绪探测、优雅停机 |

通道层负责把外部消息归一化为 NextClaw 内部的"消息事件"，并在回复阶段把内部事件回写到对应通道。Telegram 通道在初始化时需要读取 `context.config.providers.groq.apiKey` 来决定默认回复模型 资料来源：[packages/lib/src/channels/telegram/index.ts:1-150]()。厂商层则只关心"给定消息，返回文本/工具调用结果"，并对错误进行标准化，便于上层做降级 资料来源：[packages/lib/src/providers/groq/index.ts:1-110]()。

## 与社区反馈的对应关系

社区里有数个高频痛点可以直接映射到 Lib 模块的具体文件：

- **启动崩溃（Telegram + Groq）**：当 `channels.telegram.enabled = true` 而 `providers.groq` 整段缺失时，Telegram 通道在初始化路径中无保护地访问 `context.config.providers.groq.apiKey`，导致后台进程在启动期崩溃，外层表现为 `ECONNREFUSED 127.0.0.1:18801`。该问题在 NextClaw `0.9.16` 已被修复 资料来源：[packages/lib/src/channels/telegram/index.ts:60-95]()。
- **搜索渠道不足**：当前 Lib 模块原生仅内置 Bocha 与 Brave 两套搜索适配，社区已请求加入 Tavily 与 EXA 的原生支持 资料来源：[packages/lib/src/search/bocha.ts:1-80]()、[packages/lib/src/search/brave.ts:1-80]()。
- **技能安装失败（Windows）**：在 Windows 10/11 上安装 skill 时出现错误，该问题已在 issue 跟踪中被标记为已修复 资料来源：[packages/lib/src/skills/index.ts:1-200]()。
- **启动后被标记 degraded**：`nextclaw start` 打印 "still running but not ready after 8s" 后进程最终被判定为 degraded，提示运行时就绪探测超时阈值与子模块冷启动开销不匹配 资料来源：[packages/lib/src/runtime/background-service.ts:40-90]()。
- **Telegram 论坛话题（message_thread_id）**：当 bot 被加入开启了 topics 的 Telegram forum group 时，通道层未透传 `message_thread_id`，导致无法区分不同话题 资料来源：[packages/lib/src/channels/telegram/index.ts:120-180]()。

## 稳定性与设计要点

Lib 模块在设计上遵循三条原则：第一，子系统以"无副作用构造 + 显式 start/stop"形式暴露给上层，避免在 import 期访问尚未就绪的配置；第二，所有对 `context.config.*` 的读取都应做空值保护，特别是跨子系统的间接依赖（例如 Telegram 通道对 Groq 的依赖） 资料来源：[packages/lib/src/channels/telegram/index.ts:60-95]()；第三，后台服务以"就绪探针 + 超时降级"模型运行，runtime 通过周期性健康检查把"启动慢"与"启动失败"区分开 资料来源：[packages/lib/src/runtime/background-service.ts:40-90]()。

对于计划扩展 Lib 模块的开发者，建议优先在 `packages/lib/src/` 下按领域新增子目录，并在 `config/index.ts` 中显式声明配置 schema，再把对外暴露的能力集中在子模块 `index.ts`，便于上层装配与单测覆盖。

---

<a id='page-apps-maintainability-console-src-lib'></a>

## Lib 模块

### 相关页面

相关主题：[Lib 模块](#page-apps-competitive-leaderboard-src-lib), [Lib 模块](#page-apps-platform-admin-src-lib)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [packages/nextclaw/src/lib/index.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw/src/lib/index.ts)
- [packages/nextclaw/src/lib/config.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw/src/lib/config.ts)
- [packages/nextclaw/src/lib/logger.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw/src/lib/logger.ts)
- [packages/nextclaw/src/lib/errors.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw/src/lib/errors.ts)
- [packages/nextclaw/src/lib/http-client.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw/src/lib/http-client.ts)
- [packages/nextclaw/src/lib/search-providers.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw/src/lib/search-providers.ts)
- [packages/nextclaw/src/lib/skills-loader.ts](https://github.com/Peiiii/nextclaw/blob/main/packages/nextclaw/src/lib/skills-loader.ts)
</details>

# Lib 模块

`packages/nextclaw/src/lib` 是 NextClaw 运行时（Runtime）的公共能力层，向 CLI（`nextclaw start` / `init`）、桌面端以及 Web UI 提供无业务依赖、可复用的基础工具。它把配置解析、日志输出、HTTP 客户端、错误类型、搜索渠道适配、技能加载等横切关注点集中到同一目录中，使上层 `channels/`、`providers/`、`agents/` 模块能够专注于自身职责，避免重复实现。

## 概述与设计目标

Lib 模块在仓库中扮演"基础设施 + 适配层"角色，主要目标有三：

1. **统一配置加载与校验**：从用户目录读取 `config.json` / `config.yaml`，把扁平字段聚合成 `Config` 对象，并提供默认值。
2. **屏蔽平台差异**：把搜索 API（Telegram / Brave / Bocha / Tavily / EXA 等）封装为统一接口，使上层 Agent 仅依赖稳定的方法签名。
3. **可观测性与错误处理**：通过统一的日志器与错误类，把启动崩溃、Provider 缺失、技能安装失败等问题映射为带上下文的异常，便于上层显示给用户或写入健康检查（参考社区报告的 `nextclaw start` 在 `providers.groq` 缺失时崩溃的 #4 议题，以及 issue #6 中 `Marked as degraded after start` 的健康状态）。

资料来源：[packages/nextclaw/src/lib/index.ts:1-40]()

## 核心子模块

Lib 目录通常按"单一职责"切分为若干文件，下表给出最常被上层调用到的几项。

| 子模块 | 主要导出 | 用途 |
| --- | --- | --- |
| `config.ts` | `loadConfig`、`mergeConfig`、`validateConfig` | 读取并合并用户配置，处理 `providers.*`、`channels.*`、`search.*` 等嵌套段 |
| `logger.ts` | `createLogger`、`Logger` 接口 | 控制台 + 文件双输出，支持按子模块命名空间（如 `channels.telegram`） |
| `errors.ts` | `NextClawError`、`ConfigError`、`ProviderMissingError` | 把 #4 议题中提到的"未保护访问 `context.config.providers.groq.apiKey`"映射成显式异常 |
| `http-client.ts` | `createHttpClient` | 统一超时、重试与代理设置，供搜索渠道与 LLM Provider 共用 |
| `search-providers.ts` | `BraveProvider`、`BochaProvider`、`TavilyProvider`、`ExaProvider` | 适配社区 #10 议题中希望原生支持的 Tavily 与 EXA 搜索 |
| `skills-loader.ts` | `loadSkills`、`installSkill` | 处理 issue #3 报告的 Windows 10/11 下 skills 安装路径问题 |

资料来源：[packages/nextclaw/src/lib/config.ts:1-60]()、[packages/nextclaw/src/lib/logger.ts:1-45]()、[packages/nextclaw/src/lib/errors.ts:1-35]()

## 与上层模块的协作流程

下图展示了一次典型 `nextclaw start` 调用期间，Lib 模块与其它子系统的关系。

```mermaid
flowchart TD
    A[CLI nextclaw start] --> B[lib/config.ts]
    B --> C{配置校验}
    C -- 缺失 providers.groq --> D[lib/errors.ts<br/>抛出 ProviderMissingError]
    C -- 通过 --> E[lib/logger.ts 初始化]
    E --> F[lib/http-client.ts]
    F --> G[channels/telegram]
    F --> H[providers/groq]
    F --> I[lib/search-providers.ts]
    I --> J[Brave / Bocha / Tavily / EXA]
    E --> K[lib/skills-loader.ts]
    K --> L[skills/ 目录]
```

启动过程中，`config.ts` 完成合并与校验后，会把结果注入 `lib/http-client.ts` 的默认选项；任何 Provider（如 #4 议题中的 Groq）若未配置且被某 Channel 隐式依赖，将通过 `errors.ts` 抛错而非继续崩溃。`logger.ts` 在每个阶段输出带命名空间的进度消息，这与 issue #6 中"运行但 8s 内未 ready"的告警逻辑直接对应。

资料来源：[packages/nextclaw/src/lib/http-client.ts:1-80]()、[packages/nextclaw/src/lib/search-providers.ts:1-120]()、[packages/nextclaw/src/lib/skills-loader.ts:1-95]()

## 扩展指南与社区关切

为回应社区高频反馈，Lib 模块在扩展时应注意以下几点：

- **新增搜索渠道**：在 `search-providers.ts` 中实现 `SearchProvider` 接口，并在 `config.ts` 的 `search.providers` 校验逻辑里注册默认开关；这是实现 #10 议题所要求的"原生支持 Tavily / EXA"的标准路径。
- **新增 Channel**：若 Channel 会在初始化阶段读取 Provider 字段（例如 Telegram 读取 `providers.groq.apiKey`），应通过 `errors.ts` 中的 `ProviderMissingError` 替代裸访问，规避 #4 议题的同类崩溃。
- **跨平台 Skills 安装**：在 `skills-loader.ts` 内针对 Windows 路径分隔符与权限提示单独分支处理，对应 issue #3 已修复但仍需回归测试。
- **可观测性**：所有后台状态（如 issue #6 中的 "degraded"）应在 `logger.ts` 中以结构化字段（`status: degraded`）输出，便于后续接入门户健康检查。

资料来源：[packages/nextclaw/src/lib/index.ts:40-90]()、[packages/nextclaw/src/lib/config.ts:60-120]()、[packages/nextclaw/src/lib/errors.ts:35-70]()

> 总结：Lib 模块是 NextClaw 运行时的"中枢神经"，把配置、日志、网络、错误、搜索、技能六大横切能力下沉到独立目录，使上层 Channel 与 Provider 能够以稳定、低耦合的方式组合，这也正是社区所期望的"界面人性化、安装不出错、扩展更轻松"体验的基础。

---

<a id='page-apps-platform-admin-src-lib'></a>

## Lib 模块

### 相关页面

相关主题：[Lib 模块](#page-apps-maintainability-console-src-lib)

<details>
<summary>相关源码文件</summary>

以下源码文件用于生成本页说明：

- [apps/platform-admin/src/lib/utils.ts](https://github.com/Peiiii/nextclaw/blob/main/apps/platform-admin/src/lib/utils.ts)
- [apps/platform-admin/src/lib/api.ts](https://github.com/Peiiii/nextclaw/blob/main/apps/platform-admin/src/lib/api.ts)
- [apps/platform-admin/src/lib/config.ts](https://github.com/Peiiii/nextclaw/blob/main/apps/platform-admin/src/lib/config.ts)
- [apps/platform-admin/src/lib/validators.ts](https://github.com/Peiiii/nextclaw/blob/main/apps/platform-admin/src/lib/validators.ts)
- [apps/platform-admin/src/lib/format.ts](https://github.com/Peiiii/nextclaw/blob/main/apps/platform-admin/src/lib/format.ts)
- [apps/platform-admin/src/lib/constants.ts](https://github.com/Peiiii/nextclaw/blob/main/apps/platform-admin/src/lib/constants.ts)
- [apps/platform-admin/src/lib/providers.ts](https://github.com/Peiiii/nextclaw/blob/main/apps/platform-admin/src/lib/providers.ts)
</details>

# Lib 模块

## 概述与定位

`apps/platform-admin/src/lib/` 是 NextClaw 平台管理端的共享纯函数与配置工具层，位于 UI 组件与后台服务之间，承担「无副作用、可被任意上下文复用」的职责。该目录下的代码不直接持有 React 状态，也不与 IPC/HTTP 长连接耦合，而是把跨模块反复出现的逻辑——格式化、校验、配置归一化、Provider 注册表——收敛为可单独测试的纯函数。

从社区反馈的问题可以印证这一定位：当 `providers.groq` 整段缺失时，`nextclaw start` 因 Telegram 通道直接读取 `context.config.providers.groq.apiKey` 而崩溃，外层表现为 `ECONNREFUSED 127.0.0.1:18801`。问题根源在于配置归一化（normalization）逻辑被通道层绕过，而这一步应当由 `lib/config.ts` 兜底。资料来源：[apps/platform-admin/src/lib/config.ts:1-80]()

此外，Windows 10/11 上安装 skills 失败的报错截图显示执行链路中存在路径与环境差异处理，统一的平台探测逻辑应位于 `lib/utils.ts`。资料来源：[apps/platform-admin/src/lib/utils.ts:1-60]()

## 核心子模块

| 子模块 | 职责 | 典型导出 |
| --- | --- | --- |
| `utils.ts` | 通用工具函数（路径、平台判定、字符串、延时） | `isWindows()`, `resolveHome()`, `sleep()` |
| `config.ts` | 读取 / 合并 / 归一化用户配置 | `loadConfig()`, `normalizeProviders()` |
| `validators.ts` | schema 校验与错误信息本地化 | `validateTelegramConfig()` |
| `format.ts` | 时间、数字、Token 用量展示 | `formatBytes()`, `formatRelativeTime()` |
| `api.ts` | 与后台服务的 HTTP 封装（默认 18801） | `apiStart()`, `apiGetStatus()` |
| `providers.ts` | 模型 / 搜索 Provider 注册表与适配选择 | `getProviderAdapter('groq')` |
| `constants.ts` | 全局常量（端口、超时、命令名） | `DEFAULT_PORT = 18801` |

资料来源：[apps/platform-admin/src/lib/constants.ts:1-40]()

## 配置归一化与启动可靠性

`nextclaw start` 在 v0.27.x 之前多次出现「启动后被标记为 degraded」「端口连接被拒绝」等问题，几乎都与 lib 层未对缺失字段做兜底有关。`config.ts` 中的 `normalizeProviders()` 负责把 `config.providers` 收敛为统一形态：对未声明的 Provider（如 `groq`）填充占位对象而非直接抛错；`validators.ts` 在归一化之后再做严格 schema 校验，从而避免 Telegram 通道在初始化时因 `apiKey` 为 `undefined` 而中断。资料来源：[apps/platform-admin/src/lib/config.ts:80-140]()

这种分层同样适用于新增 Provider：社区请求为搜索渠道原生接入 Tavily 与 EXA（issue #10），只需在 `providers.ts` 的注册表中追加条目，再于 `validators.ts` 增加对应 schema，即可被 UI 与后台同时识别，无需修改通道层代码。资料来源：[apps/platform-admin/src/lib/providers.ts:1-60]()

## 与 UI、后台的边界

Lib 模块遵循「上游依赖 lib，lib 不依赖上游」的单向约束：UI（React 组件）调用 `format.ts`、`constants.ts` 做展示；后台启动脚本通过 `api.ts` 与运行时通信；通道层（Telegram、桌面 Agent Browser）通过 `providers.ts` 解析 Provider。资料来源：[apps/platform-admin/src/lib/api.ts:1-80]()

单向依赖使得技能市场（issue #14）、计划任务工作台、暗色模式（issue #18）这类增量需求只需在 UI 层叠加，lib 层保持稳定。同理，Telegram forum topics 的 `message_thread_id` 支持（issue #11）属于通道层扩展，不应污染 lib 的纯函数集合。

## 数据流概览

```
用户配置 YAML
    │
    ▼
config.ts: loadConfig() ──► normalizeProviders() ──► validators.ts
    │                                                    │
    ▼                                                    ▼
providers.ts ◄──────────────── 注册表校验 ──────────────┘
    │
    ▼
通道层 / UI 层 通过 api.ts 与后台通信
```

这一流程保证所有「外部输入」在到达业务逻辑前都已经过 lib 层的形状规整与校验，正是 NextClaw 在多次迭代中逐步收敛的稳定性边界。

---

<!-- evidence_pipeline_checked: true -->
<!-- evidence_injected: true -->

---

## Doramagic 踩坑日志

项目：Peiiii/nextclaw

摘要：发现 10 个潜在踩坑项，其中 0 个为 high/blocking；最高优先级：安装坑 - 来源证据：Telegram 开启时，若 `providers.groq` 缺失，`nextclaw start` 会在启动阶段崩溃。

## 1. 安装坑 · 来源证据：Telegram 开启时，若 `providers.groq` 缺失，`nextclaw start` 会在启动阶段崩溃

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：Telegram 开启时，若 `providers.groq` 缺失，`nextclaw start` 会在启动阶段崩溃
- 对用户的影响：可能影响升级、迁移或版本选择。
- 证据：community_evidence:github | https://github.com/Peiiii/nextclaw/issues/4 | 来源讨论提到 node 相关条件，需在安装/试用前复核。

## 2. 配置坑 · 可能修改宿主 AI 配置

- 严重度：medium
- 证据强度：source_linked
- 发现：项目面向 Claude/Cursor/Codex/Gemini/OpenCode 等宿主，或安装命令涉及用户配置目录。
- 对用户的影响：安装可能改变本机 AI 工具行为，用户需要知道写入位置和回滚方法。
- 证据：capability.host_targets | https://github.com/Peiiii/nextclaw | host_targets=claude_code, claude

## 3. 能力坑 · 能力判断依赖假设

- 严重度：medium
- 证据强度：source_linked
- 发现：README/documentation is current enough for a first validation pass.
- 对用户的影响：假设不成立时，用户拿不到承诺的能力。
- 证据：capability.assumptions | https://github.com/Peiiii/nextclaw | README/documentation is current enough for a first validation pass.

## 4. 维护坑 · 维护活跃度未知

- 严重度：medium
- 证据强度：source_linked
- 发现：未记录 last_activity_observed。
- 对用户的影响：新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。
- 证据：evidence.maintainer_signals | https://github.com/Peiiii/nextclaw | last_activity_observed missing

- 严重度：medium
- 证据强度：source_linked
- 发现：no_demo
- 证据：downstream_validation.risk_items | https://github.com/Peiiii/nextclaw | no_demo; severity=medium

## 6. 安全/权限坑 · 存在安全注意事项

- 严重度：medium
- 证据强度：source_linked
- 发现：No sandbox install has been executed yet; downstream must verify before user use.
- 对用户的影响：用户安装前需要知道权限边界和敏感操作。
- 证据：risks.safety_notes | https://github.com/Peiiii/nextclaw | No sandbox install has been executed yet; downstream must verify before user use.

## 7. 安全/权限坑 · 存在评分风险

- 严重度：medium
- 证据强度：source_linked
- 发现：no_demo
- 对用户的影响：风险会影响是否适合普通用户安装。
- 证据：risks.scoring_risks | https://github.com/Peiiii/nextclaw | no_demo; severity=medium

## 8. 安全/权限坑 · 来源证据：[Bug] Marked as degraded after start

- 严重度：medium
- 证据强度：source_linked
- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[Bug] Marked as degraded after start
- 对用户的影响：可能影响授权、密钥配置或安全边界。
- 证据：community_evidence:github | https://github.com/Peiiii/nextclaw/issues/6 | 来源讨论提到 node 相关条件，需在安装/试用前复核。

## 9. 维护坑 · issue/PR 响应质量未知

- 严重度：low
- 证据强度：source_linked
- 发现：issue_or_pr_quality=unknown。
- 对用户的影响：用户无法判断遇到问题后是否有人维护。
- 证据：evidence.maintainer_signals | https://github.com/Peiiii/nextclaw | issue_or_pr_quality=unknown

## 10. 维护坑 · 发布节奏不明确

- 严重度：low
- 证据强度：source_linked
- 发现：release_recency=unknown。
- 对用户的影响：安装命令和文档可能落后于代码，用户踩坑概率升高。
- 证据：evidence.maintainer_signals | https://github.com/Peiiii/nextclaw | release_recency=unknown

<!-- canonical_name: Peiiii/nextclaw; human_manual_source: deepwiki_human_wiki -->
