# note-manage **Repository Path**: nachao/note-manage ## Basic Information - **Project Name**: note-manage - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-18 - **Last Updated**: 2026-04-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Note Manager Go 一个轻量级的笔记应用 - Go语言实现 ## 特性 - ⚡ **高性能**: Go语言实现,启动速度快,内存占用低 - 📝 **富文本编辑**: 集成WangEditor编辑器,支持丰富的文本格式 - 💾 **实时保存**: 自动保存功能,内容实时存储到后端 - 🔄 **跨端同步**: 支持多设备同时编辑,版本冲突处理 - 🌐 **Web界面**: 现代化的Web管理界面 - 🚀 **跨平台**: 支持Windows、Linux、macOS - 📱 **响应式设计**: 支持桌面和移动设备 - 🔧 **易于部署**: 单文件部署,无需运行时环境 ## 快速开始 ### 方式一: 使用发布版本 (推荐) 1. **创建发布版本** ```bash # Linux/macOS ./scripts/build-go.sh # Windows scripts\build-go.bat ``` 2. **选择平台目录** ```bash # Linux cd build/ ./start-linux.sh # macOS cd build/ ./start-macos.sh # Windows cd build/ start-windows.bat ``` 3. **访问应用** - 访问: http://localhost:6903 ### 方式二: 从源码编译 1. **安装Go环境** **下载Go:** - 访问: https://golang.org/dl/ - 下载Go 1.21或更高版本 - 按照官方文档安装 2. **编译** ```bash # 下载依赖 go mod tidy # 直接运行 go run main.go # 或者编译 go build -o note-manager-go main.go ./note-manager-go ``` 3. **运行** ```bash # Linux/macOS ./note-manager-go # Windows note-manager-go.exe ``` ## 功能说明 ### 笔记管理 - 创建、编辑、删除笔记 - 富文本编辑器支持 - 实时自动保存 - 版本控制 ### 用户界面 - 简洁的侧边栏笔记列表 - 全功能富文本编辑器 - 实时状态指示器 - 响应式设计 ### AI 使用指南 首页内置 **「指挥 AI 使用乱记」** 板块,展示如何通过自然语言让 AI 帮你管理笔记: - **读取笔记**: "帮我读取 work 笔记里的内容" - **保存记录**: "把刚才的会议记录保存到乱记的 meeting 里面" - **查看版本**: "查看 journal 笔记的历史版本" - **创建笔记**: "创建一个 learning 的 Python 学习笔记" AI 会自动调用对应 API 完成操作。 ### 技术特性 - 文件存储,快速访问 - RESTful API接口 - 跨平台支持 - 轻量级架构 ## API 接口 完整的 API 文档请参考 [API_GUIDE.md](API_GUIDE.md)。 ### 快速示例 #### 读取笔记 ```bash curl -s "http://localhost:6903/api/notes?scope=work" ``` #### 创建笔记 ```bash curl -X POST "http://localhost:6903/api/notes/create?scope=work" \ -H "Content-Type: text/plain" \ -d "# 我的笔记\n\n这是内容" ``` ### 详细接口 ```http POST /api/notes/create Content-Type: text/plain 笔记内容 ``` ### 获取笔记列表 ```http GET /api/notes ``` ### 获取单个笔记 ```http POST /api/notes/get Content-Type: application/x-www-form-urlencoded database=notes¬e_id=1 ``` ### 更新笔记 ```http POST /api/notes/update Content-Type: application/x-www-form-urlencoded database=notes¬e_id=1&title=新标题&content=新内容 ``` ### 删除笔记 ```http POST /api/notes/delete Content-Type: application/x-www-form-urlencoded database=notes¬e_id=1 ``` ### Agent 创建文档 供 AI Agent 或外部系统调用创建文档: ```http POST /api/agent/notes/create Content-Type: application/x-www-form-urlencoded title=文档标题&content=文档内容&scope=skill ``` 参数说明: - `title`: 文档标题(可选,默认 "Agent Note") - `content`: 文档内容 - `scope`: 命名空间(可选,默认 "skill") ## 特殊路由 ### /skill Agent API 文档页面。只读文档,展示完整的 HTTP API 使用指南,供 AI Agent 和人类开发者参考。 访问: http://localhost:6903/skill ### /changelog 更新日志页面。展示版本发布历史和功能变更记录。 访问: http://localhost:6903/changelog ### /{scope} 动态笔记空间路由。任何合法的 scope 名称(除保留关键字外)都会进入对应的笔记编辑器。 示例: - http://localhost:6903/work - http://localhost:6903/study - http://localhost:6903/personal **保留关键字**(不能作为 scope):`api`, `static`, `ws`, `websocket`, `admin`, `system`, `skill`, `changelog` ## 配置 默认配置: - 端口: 6903 - 数据目录: `./databases` - 最大笔记数: 100 - 最大笔记大小: 10MB 配置文件 `config.conf`: ```ini # Note Manager Go 配置文件 # 服务器配置 port=6903 host=localhost # 数据存储配置 data_dir=./databases max_note_size=10485760 # 日志配置 log_level=INFO log_file=./logs/note-manager.log # 应用配置 app_name="Note Manager Go" version=1.0.1 max_notes=100 storage_mode=file # 安全配置 enable_cors=true allowed_origins=* # 性能配置 max_connections=100 request_timeout=30 auto_save_interval=1000 # 开发配置 debug_mode=false verbose_logging=false ``` ## 目录结构 ``` note-manager-go/ ├── main.go # 主程序入口 ├── go.mod # Go模块依赖 ├── go.sum # 依赖校验和 ├── config.conf # 配置文件 ├── AGENTS.md # Agent 项目指南 ├── BUG.md # Bug 清单与修复记录 ├── API_GUIDE.md # API 使用详细文档 ├── internal/ # 内部包 │ ├── config/ # 配置管理 │ │ └── config.go │ ├── server/ # HTTP服务器 │ │ └── server.go │ ├── api/ # API路由处理 │ │ └── api.go │ ├── database/ # 笔记存储 │ │ └── database.go │ └── utils/ # 工具函数 │ └── utils.go ├── static/ # 前端页面 │ ├── landing.html # 首页(杂志风格) │ ├── app.html # 笔记编辑器 │ ├── index.html # 默认编辑器 │ ├── skill.html # Agent API 文档页 │ └── changelog.html # 更新日志页 ├── databases/ # 数据存储目录(按 scope 分子目录) ├── logs/ # 日志文件目录 ├── scripts/ # 脚本文件目录 │ ├── build.sh # 多平台构建脚本 │ └── deploy.sh # 远程部署脚本 └── README.md # 项目说明文档 ``` ## 文件大小对比 | 实现方式 | 文件大小 | 启动速度 | 内存占用 | 依赖 | |---------|---------|---------|---------|------| | **Go 版本** | **~8MB** | **快** | **低** | **无** | | C 版本 | ~300KB | 极快 | 极低 | 无 | | Java JAR | ~15MB | 慢 | 高 | JRE | | Node.js | ~50MB | 中等 | 高 | Node.js | ## 技术栈 - **语言**: Go 1.21+ - **前端**: HTML5 + CSS3 + JavaScript + WangEditor - **网络**: net/http (标准库) - **并发**: goroutines - **构建**: go build ## 使用说明 1. **启动服务**: 运行可执行文件,服务将在6903端口启动 2. **访问应用**: 在浏览器中打开 http://localhost:6903 3. **创建笔记**: 在富文本编辑器中编写内容,支持自动保存 4. **管理笔记**: 实时保存,支持跨设备同步 ## 快捷键 - `Ctrl+S`: 手动保存当前笔记 - `Ctrl+N`: 创建新笔记 ## 开发说明 ### 项目结构 - `main.go`: 程序入口点 - `internal/config`: 配置管理模块 - `internal/server`: HTTP服务器模块 - `internal/api`: API路由处理模块 - `internal/database`: 笔记存储模块 - `internal/utils`: 工具函数模块 ### 构建说明 ```bash # 开发模式运行 go run main.go # 构建可执行文件 go build -o note-manager-go main.go # 交叉编译 GOOS=linux GOARCH=amd64 go build -o note-manager-go-linux main.go GOOS=windows GOARCH=amd64 go build -o note-manager-go.exe main.go GOOS=darwin GOARCH=amd64 go build -o note-manager-go-macos main.go ``` ### 依赖管理 ```bash # 添加依赖 go get github.com/package/name # 更新依赖 go mod tidy # 查看依赖 go list -m all ``` ## 许可证 MIT License ## 更新日志 ### v1.0.1 (2026-04-23) - **安全性修复**: X-Scope 注入 XSS 风险修复,增加合法性校验和 HTML 转义 - **并发修复**: Database 层增加 `sync.RWMutex`,修复并发 map 写入 panic - **WebSocket 修复**: ClientID 改用 `crypto/rand` 生成,避免高并发重复 - **版本同步修复**: 先保存文件到磁盘,成功后再更新内存版本号 - **配置修复**: 改用 `os.ReadFile` 一次性读取配置文件,避免截断风险 - **删除语义优化**: `DeleteNote` 清空内容后不再递增版本号 - **新增页面**: Agent API 文档页 (`/skill`)、更新日志页 (`/changelog`) - **首页重设计**: 编辑杂志风格,暖调手工纸质感 - **保留关键字**: `skill` 和 `changelog` 加入保留列表,禁止作为 API scope ### v1.0.0 (2025-09-18) - 从C语言重构为Go语言 - 保持原有功能不变 - 改进错误处理和日志记录 - 优化内存管理 - 增强跨平台支持 - 简化部署流程