diff --git a/.trae/rules/all.md b/.trae/rules/all.md new file mode 100644 index 0000000..a01f39d --- /dev/null +++ b/.trae/rules/all.md @@ -0,0 +1,15 @@ +--- +alwaysApply: false +description: 涉及文件修改时的记录规则 +--- +1. 每次涉及文件修改时,查找 `change/run-yyyy-mm-dd-xx.md` 文件(xx是对话区分值,可以为3位任意字符,但不能与其他对话区分值重复) +4. 在文件中记录以下信息: + - 开始时间信息(要使用命令行请求正确的现在时间) + - 结束时间信息(代码/文件修改结束后要使用命令行请求正确的现在时间) + - 对话轮数(依序号递增) + - 改动文件名 + - 改动内容及行数位置 + - 本轮对话的主要内容及成果 + - 确保文件格式清晰,便于后续查阅 +5. 涉及规则的修改不记录在文件中 +6. 每次文件修改结束后更新该文件 \ No newline at end of file diff --git a/.trae/rules/code-style.md b/.trae/rules/code-style.md new file mode 100644 index 0000000..ca318cf --- /dev/null +++ b/.trae/rules/code-style.md @@ -0,0 +1,12 @@ +--- +alwaysApply: false +description: 涉及代码修改/新增 +--- +1. Rust 代码使用 snake_case 命名约定(包、模块、函数、变量) +2. Rust 类型和 trait 使用 PascalCase 命名约定 +3. C++ 代码使用 PascalCase 命名约定(类和函数) +4. C++ 变量使用 snake_case 命名约定 +5. 缩进使用 4 个空格 +6. 行宽限制:Rust 100 字符,C++ 120 字符 +7. 使用 rustfmt 自动格式化 Rust 代码 +8. 使用 clang-format 格式化 C++ 代码 \ No newline at end of file diff --git a/.trae/rules/command-line.md b/.trae/rules/command-line.md new file mode 100644 index 0000000..483e689 --- /dev/null +++ b/.trae/rules/command-line.md @@ -0,0 +1,5 @@ +--- +alwaysApply: false +description: 命令行操作规则 +--- +1. 所有命令行操作都需要在 Powershell 中执行,并且依据 Powershell 5的规则执行(如不得使用 && 连接两个命令等等,需要使用 ; 连接) \ No newline at end of file diff --git a/.trae/rules/global.md b/.trae/rules/global.md new file mode 100644 index 0000000..3a6877c --- /dev/null +++ b/.trae/rules/global.md @@ -0,0 +1,12 @@ +--- +alwaysApply: true +description: 全局执行规则 +--- +1. 命令行操作规则:参考 `command-line.md` +2. 项目开发规则:参考 `project-development.md` +3. 版本控制规则:参考 `version-control.md` +4. 代码风格规则:参考 `code-style.md` +5. 安全编码规则:参考 `security-coding.md` +6. 技术栈规则:参考 `tech-stack.md` +7. 测试规则:参考 `testing.md` +8. 文件修改记录规则:参考 `all.md` \ No newline at end of file diff --git a/.trae/rules/project-development.md b/.trae/rules/project-development.md new file mode 100644 index 0000000..929215e --- /dev/null +++ b/.trae/rules/project-development.md @@ -0,0 +1,11 @@ +--- +alwaysApply: false +description: 项目开发规则 +--- +1. 进行新功能开发、修复 bug 、优化某功能、完善某功能前,先阅读 `docs/compass/` 目录下的开发文档 +2. 严格按照任务清单中的要求进行开发(非新功能开发时,阅读上一个功能的开发要求) +3. 开发前制定详细的实现计划,分解任务为可执行的子任务 +4. 遵循代码审查流程,提交前进行自我审查(如使用 rustfmt 格式化代码等) +5. 定期更新文档,确保与代码同步 +6. 遇到问题时及时沟通,避免独自解决复杂问题 +7. 遵循项目的安全和质量标准 \ No newline at end of file diff --git a/.trae/rules/security-coding.md b/.trae/rules/security-coding.md new file mode 100644 index 0000000..02fae3c --- /dev/null +++ b/.trae/rules/security-coding.md @@ -0,0 +1,12 @@ +--- +alwaysApply: false +description: 涉及代码编写时 +--- +1. 避免使用 `unsafe` 代码块,除非绝对必要,否则请明确告知原因 +2. 使用安全的数据处理方式,避免缓冲区溢出 +3. 实现安全的错误处理,避免信息泄露 +4. 遵循 Rust 安全编码最佳实践 +5. 启用所有编译器安全警告 +6. 使用智能指针管理内存(C++) +7. 避免使用不安全的 C 函数 +8. 定期使用 cargo-audit 检查依赖漏洞 \ No newline at end of file diff --git a/.trae/rules/tech-stack.md b/.trae/rules/tech-stack.md new file mode 100644 index 0000000..908aa03 --- /dev/null +++ b/.trae/rules/tech-stack.md @@ -0,0 +1,11 @@ +--- +alwaysApply: false +description: 涉及代码编写时 +--- +1. 核心代码必须全部使用 Rust 语言实现 +2. 只有在开发后续组件或添加外部扩展时才使用 C++ +3. 使用 Cargo 管理 Rust 依赖 +4. 使用 CMake 管理 C++ 构建 +5. 确保 Rust 代码遵循内存安全和并发安全原则 +6. 优先使用 Rust 标准库和成熟的第三方库 +7. 避免不必要的 C++ 代码,保持代码库的一致性 \ No newline at end of file diff --git a/.trae/rules/testing.md b/.trae/rules/testing.md new file mode 100644 index 0000000..e2f80e0 --- /dev/null +++ b/.trae/rules/testing.md @@ -0,0 +1,11 @@ +--- +alwaysApply: false +description: 涉及代码修改后 +--- +1. 为核心功能编写单元测试,确保测试覆盖率 > 80% +2. 使用 Rust 内置 test 和 C++ Google Test 框架 +3. 测试命名格式:`test_module_functionality` +4. 每个测试独立运行,避免依赖 +5. 测试核心业务逻辑、数据处理、异常处理和边界情况 +6. 定期运行静态代码分析工具 +7. 进行安全测试和性能测试 \ No newline at end of file diff --git a/.trae/rules/version-control.md b/.trae/rules/version-control.md new file mode 100644 index 0000000..753f235 --- /dev/null +++ b/.trae/rules/version-control.md @@ -0,0 +1,18 @@ +--- +alwaysApply: false +description: 版本控制规则 +--- +1. 从 main 分支创建功能分支,命名格式:`feature/MXXX-Description` +2. 编写清晰的提交消息,格式:`type(scope): description` +3. 提交前进行自我代码审查 +4. 每个 Pull Request 必须经过至少一次代码审查 +5. 合并到 main 分支前确保所有测试通过 +6. 遵循语义化版本规范 +7. 定期拉取最新更改,避免冲突 +8. 推送前确保本地分支与远程分支同步 +9. 当本地分支落后于远程分支时,使用 `git pull --no-edit` 拉取更改,避免打开终端编辑器 +10. 拉取后解决所有冲突再进行推送 +11. 推送时指定具体分支,格式:`git push origin branch-name` +12. 确保推送前所有测试通过 +13. 推送后检查 CI/CD 状态,确保构建成功 +14. 避免强制推送,请保持在得到用户的同意后再进行推送 \ No newline at end of file diff --git a/change/run-2026-04-05.md b/change/run-2026-04-05.md new file mode 100644 index 0000000..38452f7 --- /dev/null +++ b/change/run-2026-04-05.md @@ -0,0 +1,79 @@ +# 2026-04-05 文件修改记录 + +## 开始时间 +2026-04-05 20:38:45 + +## 结束时间 +2026-04-05 20:38:45 + +## 对话轮数 +2 + +## 改动文件名 +- d:\CodeWorkspace\Ferrum\.trae\rules\all.md +- d:\CodeWorkspace\Ferrum\.trae\rules\global.md +- d:\CodeWorkspace\Ferrum\.trae\rules\ferrum-all-rules.md +- d:\CodeWorkspace\Ferrum\.trae\rules\project-development.md +- d:\CodeWorkspace\Ferrum\.trae\rules\git-push.md +- d:\CodeWorkspace\Ferrum\.trae\rules\version-control.md + +## 改动内容及行数位置 +1. **all.md**: + - 第17行:修正重复的序号,将第5条改为第6条 + +2. **global.md**: + - 新建文件,包含全局执行规则,合并了 ferrum-all-rules.md、project-development.md、git-push.md 和 version-control.md 的内容 + +3. **ferrum-all-rules.md**: + - 整个文件被删除,内容已合并到 global.md + +4. **project-development.md**: + - 整个文件被删除,内容已合并到 global.md + +5. **git-push.md**: + - 整个文件被删除,内容已合并到 global.md + +6. **version-control.md**: + - 整个文件被删除,内容已合并到 global.md + +## 本轮对话的主要内容及成果 +- 整理了所有规则,将需要全局执行的规则放入 global.md 文件中 +- 合并了重复的规则,删除了冗余的规则文件 +- 修正了 all.md 文件中的序号重复问题 +- 记录了本次修改的详细信息到 change/run-2026-04-05.md 文件 + +--- + +## 开始时间 +2026-04-05 20:43:39 + +## 结束时间 +2026-04-05 20:43:39 + +## 对话轮数 +3 + +## 改动文件名 +- d:\CodeWorkspace\Ferrum\.trae\rules\global.md +- d:\CodeWorkspace\Ferrum\.trae\rules\command-line.md +- d:\CodeWorkspace\Ferrum\.trae\rules\project-development.md +- d:\CodeWorkspace\Ferrum\.trae\rules\version-control.md + +## 改动内容及行数位置 +1. **global.md**: + - 第5-12行:移除了具体规则内容,改为引用各个专一职能的规则文件 + +2. **command-line.md**: + - 新建文件,包含命令行操作规则 + +3. **project-development.md**: + - 新建文件,包含项目开发规则 + +4. **version-control.md**: + - 新建文件,包含版本控制规则 + +## 本轮对话的主要内容及成果 +- 将全局规则中具有专一职能的规则分离到独立的文件中 +- 创建了 command-line.md、project-development.md 和 version-control.md 文件 +- 更新了 global.md 文件,添加了对各个专一职能规则文件的引用 +- 记录了本次修改的详细信息到 change/run-2026-04-05.md 文件 \ No newline at end of file diff --git a/docs/M003-sandbox-feature-plan.md b/docs/M003-sandbox-feature-plan.md new file mode 100644 index 0000000..e6e07e0 --- /dev/null +++ b/docs/M003-sandbox-feature-plan.md @@ -0,0 +1,70 @@ +# 沙箱功能计划 - 搁置记录 + +## 计划概述 + +**功能名称:** 沙箱功能 +**计划 ID:** M003 +**优先级:** 中 (🟡) +**预计完成时间:** 2026-06-01 +**当前状态:** 📌 已搁置 + +## 功能描述 + +沙箱功能旨在为 MoDa Browser Core 提供一个隔离的执行环境,防止恶意代码对系统造成损害。主要功能包括: + +1. **进程隔离**:限制沙箱内进程的系统调用 +2. **资源限制**:控制 CPU、内存和磁盘使用 +3. **网络隔离**:限制网络访问 +4. **文件系统隔离**:限制文件系统访问 + +## 技术实现方案 + +### 1. 跨平台实现 + +- **Windows**:使用 Job Objects 实现进程隔离和资源限制 +- **Unix/Linux**:使用 Namespaces 和 Cgroups 实现隔离 + +### 2. 安全策略 + +- 基于能力系统设计沙箱安全策略 +- 支持白名单和黑名单模式 +- 提供细粒度的权限控制 + +### 3. 监控机制 + +- 实时监控沙箱内进程行为 +- 异常行为检测和报告 +- 自动处理安全事件 + +## 搁置原因 + +1. **实现效果不佳**:沙箱功能实现不尽人意,无法达到预期的安全效果 +2. **优先级调整**:当前项目重点是核心功能和安全框架的完善 +3. **资源限制**:开发资源有限,需要集中精力解决更紧急的问题 +4. **技术依赖**:沙箱功能依赖于安全框架的完成,而安全框架需要进一步完善 +5. **测试复杂性**:沙箱功能需要全面的测试,包括安全测试和性能测试 + +## 搁置时间 + +**计划搁置日期:** 2026-04-17 +**预计重新评估日期:** 2026-06-30 + +## 搁置期间的准备工作 + +1. **技术调研**:深入研究不同平台的沙箱实现方案 +2. **需求分析**:详细分析沙箱功能的具体需求 +3. **设计文档**:完善沙箱功能的设计文档 +4. **依赖准备**:确保安全框架能够支持沙箱功能的需求 + +## 后续步骤 + +1. **跳过 M003 沙箱相关开发**:直接转向浏览器核心开发 +2. **优先实现核心架构**:专注于 M001 核心架构设计 +3. **完善安全框架**:完成 M002 安全框架基础实现 +4. **定期评估**:在 2026-06-30 进行重新评估,决定是否恢复沙箱功能的开发 +5. **为浏览器核心功能做准备**:为后续的渲染引擎、网络栈等核心功能开发做准备 + +*** + +**文档创建日期:** 2026-04-17 +**文档作者:** Ink-dark diff --git a/docs/compass/MoDa-Browser-dev.md b/docs/compass/MoDa-Browser-dev.md index ff663ce..aa5db64 100644 --- a/docs/compass/MoDa-Browser-dev.md +++ b/docs/compass/MoDa-Browser-dev.md @@ -33,7 +33,7 @@ - ✅ 项目初始化和仓库创建 - ⏳ 设计核心架构 - ⏳ 实现安全框架基础 -- ⏳ 建立沙箱管理机制 +- 📌 建立沙箱管理机制(已搁置) ### 阶段 2:进程隔离实现(2026年7-9月) **里程碑:v0.2.0 发布** @@ -75,7 +75,7 @@ | ✅ | 🔴 | M000 | 项目初始化和仓库创建 | 墨染柒DarkSeven | 2026-03-10 | 阶段 1 | | ⏳ | 🔴 | M001 | 核心架构设计 | - | 2026-04-15 | 阶段 1 | | ⏳ | 🔴 | M002 | 安全框架基础实现 | - | 2026-05-15 | 阶段 1 | -| ⏳ | 🔴 | M003 | 沙箱管理机制 | - | 2026-06-15 | 阶段 1 | +| 📌 | 🔴 | M003 | 沙箱管理机制 | - | 2026-06-15 | 阶段 1 | (已搁置) | ⏳ | 🔴 | M004 | 进程间通信机制 | - | 2026-07-30 | 阶段 2 | | ⏳ | 🔴 | M005 | 进程隔离实现 | - | 2026-08-30 | 阶段 2 | | ⏳ | 🔴 | M006 | 安全验证体系 | - | 2026-09-15 | 阶段 2 | @@ -790,4 +790,25 @@ ctest --output-on-failure --- +### 2026年4月17日 + +**今日工作:** + +1. **项目规划调整** + - 搁置 M003 沙箱管理机制开发计划 + - 原因:沙箱功能实现不尽人意,决定直接跳过相关开发 + - 转向浏览器核心开发,优先实现核心架构和安全框架 + +**技术要点:** +- 沙箱功能实现复杂度高,需要大量时间和资源 +- 核心架构和安全框架是更基础的需求 +- 调整开发优先级,确保项目稳步推进 + +**下一步计划:** +- 专注于 M001 核心架构设计和 M002 安全框架实现 +- 为浏览器核心功能开发做准备 +- 定期评估沙箱功能的必要性和可行性 + +--- + **让我们开始构建未来!** 🚀