记忆

Hawa Code 支持记忆功能,可以跨会话记住用户偏好,比如开发语言、项目架构、代码风格等。记忆系统会自动将这些信息注入到每次对话中,帮助 Hawa Code 更好地理解你的需求。

记忆类型

Hawa Code 的记忆系统分为 5 种类型,按优先级从高到低排列:

优先级 记忆类型 文件路径 作用范围
1 企业策略 macOS: /Library/Application Support/hawacode/HAWA.md
Linux: /etc/hawacode/HAWA.md
Windows: C:\ProgramData\hawacode\HAWA.md
系统级全局策略,适用于企业部署
2 用户记忆 ~/.hcode/HAWA.md 用户级别全局记忆,适用于所有项目
3 用户规则 ~/.hcode/rules/**/*.md 用户级别的规则文件,支持路径匹配
4 项目记忆 {项目路径}/HAWA.md
{项目路径}/.hcode/HAWA.md
项目级别的记忆文件
5 项目规则 {项目路径}/.hcode/rules/**/*.md 项目级别的规则文件,支持路径匹配

记忆文件格式

记忆文件使用 Markdown 格式,可以包含任意文本内容:

# 我的偏好设置

## 代码风格
- 使用 2 个空格缩进
- 优先使用单引号
- 行尾不加分号

## 技术栈
- 前端: React + TypeScript
- 后端: Node.js + Express
- 数据库: PostgreSQL

路径匹配规则(Rules)

规则文件支持通过 YAML frontmatter 中的 paths 字段来定义匹配模式,实现针对特定文件或目录的个性化规则。

规则文件格式

---
paths:
- "src/**/*.ts"
- "src/**/*.tsx"
---

# TypeScript 开发规则

- 所有函数必须添加返回类型注解
- 使用接口(interface)而不是类型别名(type)定义对象结构
- 启用严格模式检查

路径匹配语法

paths 字段支持 glob 模式匹配:

模式 说明 示例
* 匹配任意字符(不包括路径分隔符) *.js 匹配所有 JS 文件
** 匹配任意层级目录 src/**/*.ts 匹配 src 目录及其子目录下的所有 ts 文件
? 匹配单个字符 file?.txt 匹配 file1.txt, fileA.txt 等
! 排除模式 !**/*.test.ts 排除测试文件

多个路径模式

支持同时定义多个路径模式:

---
paths:
- "src/**/*.ts"
- "src/**/*.tsx"
- "tests/**/*.spec.ts"
---

也支持逗号分隔的字符串格式:

---
paths: "src/**/*.ts, src/**/*.tsx"
---

规则触发机制

  • 全局记忆(Enterprise Policy、User Memory、Project Memory、无 paths 的 Rules):在每次对话开始时自动加载
  • 路径特定规则(带 paths 的 Rules):按需自动触发加载。

使用建议

1. 用户记忆(~/.hcode/HAWA.md)

适合存放个人通用的偏好设置:

  • 个人代码风格偏好
  • 常用的技术栈
  • 个人开发习惯

2. 项目记忆(项目路径/HAWA.md)

适合存放项目特定的信息:

  • 项目架构说明
  • 项目技术规范
  • 项目目录结构约定

3. 规则文件(rules/*.md)

适合存放针对特定文件类型的规则:

  • API 开发规范
  • 组件编写规范
  • 测试文件规范
  • 配置文件规范

示例

用户记忆示例

文件: ~/.hcode/HAWA.md

# 我的开发偏好

## 代码风格
- 使用 2 个空格缩进
- 使用单引号
- 不使用分号

## 技术偏好
- 优先使用函数式组件
- 使用 async/await 处理异步
- 优先选择解构赋值

项目记忆示例

文件: 项目路径/HAWA.md

# 项目规范

## 架构
- 使用 MVC 架构
- 控制器放在 controllers/ 目录
- 模型放在 models/ 目录

## 命名规范
- 文件名使用 kebab-case
- 类名使用 PascalCase
- 函数名使用 camelCase

路径规则示例

文件: .hcode/rules/api.md

---
paths:
- "src/api/**/*.ts"
- "src/routes/**/*.ts"
---

# API 开发规则

1. 所有 API 端点必须包含输入验证
2. 使用统一的错误响应格式
3. 包含 OpenAPI 文档注释
4. 返回 HTTP 状态码要符合 REST 规范

文件: .hcode/rules/react.md

---
paths:
- "src/components/**/*.tsx"
- "src/pages/**/*.tsx"
---

# React 组件规则

1. 使用函数式组件 + Hooks
2. Props 必须定义 TypeScript 接口
3. 组件文件名与组件名一致(PascalCase)
4. 使用 CSS Modules 或 Tailwind CSS

注意事项

  1. 文件编码: 记忆文件必须使用 UTF-8 编码
  2. 文件格式: 必须是有效的 Markdown 格式
  3. 路径匹配: 规则文件中的 paths 字段是可选的,如果没有定义则作为全局规则加载
  4. 性能考虑: 避免在记忆文件中存放过多内容,建议只存放关键偏好和规则