# 贡献指南

感谢你对 **TencentDB Agent Memory** 项目的关注！我们欢迎来自社区的各种贡献——无论是报告问题、改进文档还是提交代码。

## 贡献方式

- **报告 Bug**：在 GitHub Issues 中描述问题并提供复现步骤。
- **请求功能**：在 Issues 中描述使用场景和你期望的解决方案。
- **改进文档**：修复错别字、完善说明或补充示例。
- **提交代码**：修复 Bug、实现新功能或优化性能。

## 开发入门

### 前置条件

- Node.js >= 22.16.0
- npm 或 pnpm
- OpenClaw >= 2026.3.13

### 从源码开发

本项目无需编译。Node.js 22.16+ 原生支持 TypeScript 类型剥离，OpenClaw 直接加载 `.ts` 源码运行。

```bash
# 克隆仓库
git clone https://github.com/Tencent/TencentDB-Agent-Memory.git
cd TencentDB-Agent-Memory

# 安装依赖
npm install

# 将当前目录作为本地插件注册到 OpenClaw
openclaw plugins install --link .
```

`install --link` 会将当前目录作为本地插件注册到 OpenClaw，修改源码后重启 Gateway 即可生效。

### 项目结构

```
├── index.ts                 # 插件入口
├── openclaw.plugin.json     # OpenClaw 插件清单
├── src/
│   ├── config.ts            # 配置管理
│   ├── conversation/        # L0 对话层 — 原始对话捕获
│   ├── record/              # L1 记录层 — 结构化信息提取
│   ├── scene/               # L2 场景层 — 场景归纳与聚合
│   ├── persona/             # L3 画像层 — 用户画像构建
│   ├── store/               # 存储层 — SQLite/向量数据库
│   ├── hooks/               # OpenClaw 钩子集成
│   ├── prompts/             # LLM 提示词模板
│   ├── tools/               # 工具函数
│   ├── utils/               # 通用工具
│   └── report/              # 健康检测与报告
├── hermes-plugin/           # Hermes 智能体插件适配
├── scripts/                 # 辅助脚本（Gateway 控制等）
├── CHANGELOG.md             # 变更日志
└── README.md                # 项目说明
```

## 提交 Pull Request

1. **Fork** 本仓库并基于 `main` 分支创建你的特性分支。
2. **进行修改** — 保持每个提交专注且原子化。
3. **测试** — 确保现有功能不受影响。
4. **更新文档** — 如果更改涉及用户可见行为，请同步更新 README 或相关文档。
5. **提交 PR** — 描述修改动机、变更内容，并关联相关 Issue。

### 分支说明

| 分支 | 用途 |
|------|------|
| `main` | 默认分支，PR 提交目标 |

## 提交信息规范

使用以下格式编写 commit message：

```
<类型>(<范围>): <简要描述>

<详细说明（可选）>

Closes #123
Signed-off-by: Your Name <your-email@example.com>
```

### 类型

与 PR 模板中的 Change Type 对应：

| 类型 | 说明 | 对应 PR Change Type |
|------|------|---------------------|
| `fix` | Bug 修复 | Bug fix |
| `feat` | 新功能 | New feature |
| `docs` | 文档更新 | Documentation update |
| `perf` | 代码优化 | Code optimization |
| `refactor` | 代码重构（不影响功能） | Code optimization |
| `test` | 测试相关 | — |
| `chore` | 构建/工具/依赖变更 | — |

### 范围示例

`store`、`hooks`、`persona`、`scene`、`record`、`conversation`、`gateway`、`hermes`

## 代码风格

- **TypeScript**：使用项目已有的代码风格，保持一致性。
- **命名**：使用有意义的变量名和函数名，优先使用英文。
- **注释**：关键逻辑处添加注释，说明"为什么"而非"做了什么"。
- **导入顺序**：Node.js 内置模块 → 第三方依赖 → 项目内部模块。

## 开发者来源证书 (DCO)

所有提交必须包含 `Signed-off-by` 行，表示你同意 [开发者来源证书](https://developercertificate.org/)：

```bash
git commit -s -m "feat(store): add batch insert support"
```

没有有效 `Signed-off-by` 的提交将不会被合并。

## 安全问题

如果你发现安全漏洞，请通过邮箱 agentmemory@tencent.com 报告，我们会尽快处理。

## 许可证

提交贡献即表示你同意你的代码将在 [MIT License](./LICENSE) 下许可。

---

再次感谢你的贡献！如有任何问题，欢迎在 Issues 中讨论。
