2026-05-20 21:39:12 +08:00

190 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: NetaClaw 模块
created: 2026-04-13
updated: 2026-05-15
type: entity
tags: [module, agent, architecture]
sources: [packages/backend/src/modules/netaclaw/]
---
# NetaClaw 模块
项目的 AI Agent 引擎核心,实现了完整的 ReAct 循环推理、多 LLM 提供商支持、工具系统、记忆系统、技能系统、Multi-Agent Crew 编排、普通会话内子 Agent 委派、Session Tree 会话运行时、上下文压缩和外部渠道接入。2026-05-14 后,微信渠道重点演进为 `weixin-db` 本地群聊代理,并通过 [[desktop-op-module]] 与 `weixin_send_text` 形成双 Agent 自动回复链路。2026-05-15 后NetaClaw 增加 MySQL 只读问数后端能力数据源配置、SQL guard、schema/sample/query 工具和审计均收敛在主进程服务侧。
## 目录结构
```
netaclaw/
├── entity/ # 数据模型(含 legacy session/message 与 session-tree 新表)
├── controller/ # REST API
├── gateway/ # WebSocket 网关(/netaclaw + /crew 两个命名空间)
├── runtime/ # Agent 执行引擎核心(含 TodoStore、Thinking、Compaction
├── memory/ # 长期记忆系统
├── tools/ # 工具定义、内置工具和 Operations 执行后端
├── browser-daemon/ # Netabrowser 后端 daemon浏览器 session、拟人化交互、state/cookie
├── plugins/ # LLM 提供商适配层(含 Thinking/Reasoning
├── service/ # 业务逻辑Skill、Crew、Channel、Executor、Tool Resolver、Chat Orchestrator
├── platforms/ # 接入平台(预留)
├── session-tree/ # Session Tree provider、snapshot、projection、context builder
├── subagent/ # 子 Agent worker 进程、协议、runner
└── config.ts # 模块配置
```
## 核心子系统23个
| 子系统 | 关键文件 | 职责 |
|--------|---------|------|
| [[agent-runtime]] | `runtime/agent.ts` | ReAct 循环执行引擎 |
| [[session-tree-runtime]] | `session-tree/provider.ts`, `session-tree/snapshot.ts` | 会话树、快照、active path、节点投影 |
| [[crew-orchestration]] | `service/crew_orchestrator.ts` | Multi-Agent 编排(委派/并行/升级) |
| [[websocket-gateway]] | `gateway/server.ts`, `gateway/crew_server.ts` | 实时通信(对话 + Crew 监控) |
| [[tool-system]] | `tools/builtin/*.ts` | 内置工具与执行链路 |
| [[image-generation-tools]] | `tools/builtin/text_to_image.ts`, `tools/builtin/image_to_image.ts` | 文生图、图生图和图片结果持久化 |
| [[runtime-process-events]] | `runtime/process_events.ts` | 长耗时工具/Skill 过程事件、采样和 JSONL 日志 |
| [[tool-operations]] | `tools/operations/*.ts` | 文件、进程和搜索底层执行后端抽象 |
| [[tool-catalog]] | `tools/catalog.ts` | 工具 schema 注册与默认工具集 |
| [[tool-governance]] | `service/tool_registry.ts`, `service/tool_resolver.ts` | Tool 全局治理、Agent 级过滤与 Prompt Hint |
| [[subagent-session]] | `service/subagent.ts`, `service/chat_orchestrator.ts`, `session-tree/subagent_projection.ts` | 普通会话内子 Agent 委派、结果聚合与回放投影 |
| [[context-compaction]] | `runtime/compaction.ts` | 长会话压缩与 compacted/full 视图 |
| [[prompt-builder]] | `runtime/prompt_builder.ts` | 8层分层 Prompt 注入系统 |
| [[memory-system]] | `memory/*.ts` | 长期记忆MySQL/SQLite |
| [[mysql-data-source]] | `service/data_source.ts`, `service/mysql_schema.ts`, `service/mysql_query.ts`, `tools/builtin/mysql.ts` | MySQL 数据源、schema/sample/query、SQL guard 和问数审计 |
| [[skill-system]] | `service/skill_loader.ts` | 技能加载、安装、注册和诊断 |
| [[skill-runtime]] | `service/skill_config.ts`, `service/skill_executor.ts`, `service/skill_secret.ts` | Skill 分类、compute-entry 执行和 scoped secrets |
| [[document-skills]] | `packages/backend/skills/minimax-*` | PDF / DOCX / XLSX 文档处理 skill 包 |
| [[vehicle-damage-skill]] | `packages/backend/skills/vehicle-damage-inspection/` | 汽车环车视频旧伤检测 compute-entry skill |
| [[netabrowser-runtime]] | `browser-daemon/*`, `packages/netabrowser-cli/` | 反风控浏览器 daemon、CLI、拟人化交互和持久 profile |
| [[llm-providers]] | `plugins/llm_providers/*.ts` | 多模型适配(含 Thinking |
| [[agent-channel]] | `service/agent_channel.ts`, `service/weixin_db.ts` | 外部渠道接入;当前包含 ClawBot 私聊和 weixin-db 本地群聊代理 |
| [[desktop-op-module]] | `packages/backend/src/modules/desktop_op/` | 桌面 GUI 操作运行时;当前支撑微信自动发送 |
| [[todo-system]] | `runtime/todo_store.ts` | 会话级任务管理 |
## 数据模型19个表
| 表名 | Entity 文件 | 用途 |
|------|------------|------|
| `netaclaw_agent` | `entity/agent.ts` | Agent 配置和发布 |
| `netaclaw_session` | `entity/session.ts` | 对话会话 |
| `netaclaw_message` | `entity/message.ts` | 消息历史 |
| `netaclaw_skill` | `entity/skill.ts` | Skill 元数据、env schema 和加密 secrets |
| `netaclaw_model_channel` | `entity/model_channel.ts` | 模型渠道 |
| `netaclaw_memory` | `entity/memory.ts` | 长期记忆 |
| `netaclaw_memory_type` | `entity/memory_type.ts` | 记忆类型和系统类型保护 |
| `netaclaw_tool` | `entity/tool.ts` | Tool 全局治理配置 |
| `netaclaw_subagent_session` | `entity/subagent_session.ts` | 普通会话子 Agent 记录 |
| `netaclaw_crew` | `entity/crew.ts` | Crew 集群定义 |
| `netaclaw_crew_agent` | `entity/crew_agent.ts` | 集群-Agent 关联 |
| `netaclaw_crew_run` | `entity/crew_run.ts` | Crew 运行记录 |
| `netaclaw_crew_task` | `entity/crew_task.ts` | Crew 子任务记录 |
| `netaclaw_agent_channel` | `entity/agent_channel.ts` | 外部渠道配置 |
| `netaclaw_agent_channel_group` | `entity/agent_channel_group.ts` | 渠道群白名单、触发策略和每群 Agent 覆盖 |
| `netaclaw_agent_session` | `entity/agent_session.ts` | Session Tree 会话头与叶子状态 |
| `netaclaw_agent_session_entry` | `entity/agent_session_entry.ts` | Session Tree 节点持久化 |
| `netaclaw_data_source` | `entity/data_source.ts` | MySQL 数据源连接、授权和安全策略配置 |
| `netaclaw_data_source_query_audit` | `entity/data_source_query_audit.ts` | MySQL 问数 SQL 执行、拒绝和失败审计 |
当前数据模型需要区分两条线:
- legacy 线:`netaclaw_session` + `netaclaw_message`,仍服务旧历史消息、压缩和部分兼容逻辑。
- session-tree 线:`netaclaw_agent_session` + `netaclaw_agent_session_entry`,已经是 Agent Chat 主路径的会话状态载体。
## 关键字段
### netaclaw_agent
- `name`(唯一)、`label``description``icon`
- `systemPrompt`(系统提示词)
- `skills`JSON 数组,关联的 Skill 名称)
- `modelConfig`JSONapiUrl/apiKey/modelId/contextWindow
- `config`JSONmemory/defaultThinkLevel 等)
- `status`0=草稿 1=已发布)
### netaclaw_skill
- `name`(唯一)、`label``description`
- `skillType`能力类型compute/llm/multimodal
- `tags``version``source``sourceUrl`
- `installSpec``metadata``fingerprint``installedAt`
- `secrets`AES-256-GCM 加密后的 skill scoped secrets
- `envSchema`(环境变量声明,供 [[skill-runtime]] 和前端配置页使用)
### netaclaw_message
- `sessionId``role`user/assistant/tool/system
- `content``thinking`(思考内容)
- `toolCalls`JSON`toolCallId``skillName``metadata`
### netaclaw_agent_session
- `sessionId``agentId``userId`
- `rootEntryId``leafEntryId`
- `parentSessionId``title``status`
- `metadata`(会话级扩展状态)
### netaclaw_agent_session_entry
- `sessionId``entryId``parentEntryId`
- `type`message / compaction / branch_summary / subagent_batch / subagent_result 等)
- `content``message``metadata`
- `timestamp`
### netaclaw_agent_channel_group
- `channelId``roomId`channel 内唯一)、`roomName`
- `status`0 禁用、1 启用、-1 忽略)
- `triggerMode`at_mention / allprefix 仅兼容)
- `boundAgentId`(每群 Agent 覆盖)
- `replyIdentityOverride``firstSeenAt``lastSeenAt``lastActiveAt`
### netaclaw_data_source
- `name`(唯一)、`label``type`(当前为 mysql
- `host``port``database``username`
- `passwordEncrypted`AES-256-GCM 密文)
- `readonly``status`
- `allowedAgentIds`JSON 数组)
- `extra`JSONallowedTables、blockedTables、maskedColumns、schemaVisibility、maxRows、maxJoinTables、queryTimeoutMs、SSL 等)
### netaclaw_data_source_query_audit
- `dataSourceId``agentId``userId``toolCallId`
- `sqlHash``sqlPreview`
- `status`success / rejected / failed
- `rejectReason``elapsedMs``rowCount``errorCode`
### netaclaw_memory_type
- `key`(唯一类型标识)
- `name``description``icon`
- `isSystem`1=系统内置,不允许删除)
## 当前主运行路径
当前 NetaClaw 的普通对话主路径已经是:
```text
gateway/server.ts
-> chat_orchestrator.ts
-> session-tree/*
-> tool_resolver.ts / runtime/agent.ts
-> memory/registry.ts + memory providers
-> subagent.ts
-> gateway/protocol.ts + frontend chat store
```
这意味着理解 Neta 项目时,不能再只把 `netaclaw_message` 和线性历史当成核心事实;需要优先理解 [[session-tree-runtime]]、[[agent-runtime]] 和 [[subagent-session]] 三者的协作。
## 相关页面
- [[project-overview]] — 项目总览
- [[agent-runtime]] — 执行引擎详解
- [[session-tree-runtime]] — 会话树运行时
- [[crew-orchestration]] — Multi-Agent 编排
- [[websocket-gateway]] — 通信协议
- [[tool-catalog]] — 工具目录系统
- [[tool-operations]] — 工具底层执行后端抽象
- [[prompt-builder]] — Prompt 分层注入
- [[patch-tool]] — Patch 模糊补丁工具
- [[clarify-tool]] — Clarify 澄清工具
- [[tool-system]] — 工具系统
- [[image-generation-tools]] — 文生图/图生图工具
- [[runtime-process-events]] — 工具和 Skill 过程事件
- [[memory-system]] — 长期记忆和记忆管理页
- [[mysql-data-source]] — MySQL 数据源、问数工具和 SQL guard
- [[skill-runtime]] — Skill 运行时执行和配置
- [[document-skills]] — 文档处理 Skills
- [[vehicle-damage-skill]] — 车辆旧伤检测 Skill
- [[netabrowser-runtime]] — 反风控浏览器运行时
- [[desktop-op-module]] — 桌面 GUI 操作运行时