Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .trae/rules/all.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
alwaysApply: false
description: 涉及文件修改时的记录规则
---
1. 每次涉及文件修改时,查找 `change/run-yyyy-mm-dd-xx.md` 文件(xx是对话区分值,可以为3位任意字符,但不能与其他对话区分值重复)
4. 在文件中记录以下信息:
- 开始时间信息(要使用命令行请求正确的现在时间)
- 结束时间信息(代码/文件修改结束后要使用命令行请求正确的现在时间)
- 对话轮数(依序号递增)
- 改动文件名
- 改动内容及行数位置
- 本轮对话的主要内容及成果
- 确保文件格式清晰,便于后续查阅
5. 涉及规则的修改不记录在文件中
6. 每次文件修改结束后更新该文件
12 changes: 12 additions & 0 deletions .trae/rules/code-style.md
Original file line number Diff line number Diff line change
@@ -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++ 代码
5 changes: 5 additions & 0 deletions .trae/rules/command-line.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
alwaysApply: false
description: 命令行操作规则
---
1. 所有命令行操作都需要在 Powershell 中执行,并且依据 Powershell 5的规则执行(如不得使用 && 连接两个命令等等,需要使用 ; 连接)
12 changes: 12 additions & 0 deletions .trae/rules/global.md
Original file line number Diff line number Diff line change
@@ -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`
11 changes: 11 additions & 0 deletions .trae/rules/project-development.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
alwaysApply: false
description: 项目开发规则
---
1. 进行新功能开发、修复 bug 、优化某功能、完善某功能前,先阅读 `docs/compass/` 目录下的开发文档
2. 严格按照任务清单中的要求进行开发(非新功能开发时,阅读上一个功能的开发要求)
3. 开发前制定详细的实现计划,分解任务为可执行的子任务
4. 遵循代码审查流程,提交前进行自我审查(如使用 rustfmt 格式化代码等)
5. 定期更新文档,确保与代码同步
6. 遇到问题时及时沟通,避免独自解决复杂问题
7. 遵循项目的安全和质量标准
12 changes: 12 additions & 0 deletions .trae/rules/security-coding.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
alwaysApply: false
description: 涉及代码编写时
---
1. 避免使用 `unsafe` 代码块,除非绝对必要,否则请明确告知原因
2. 使用安全的数据处理方式,避免缓冲区溢出
3. 实现安全的错误处理,避免信息泄露
4. 遵循 Rust 安全编码最佳实践
5. 启用所有编译器安全警告
6. 使用智能指针管理内存(C++)
7. 避免使用不安全的 C 函数
8. 定期使用 cargo-audit 检查依赖漏洞
11 changes: 11 additions & 0 deletions .trae/rules/tech-stack.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
alwaysApply: false
description: 涉及代码编写时
---
1. 核心代码必须全部使用 Rust 语言实现
2. 只有在开发后续组件或添加外部扩展时才使用 C++
3. 使用 Cargo 管理 Rust 依赖
4. 使用 CMake 管理 C++ 构建
5. 确保 Rust 代码遵循内存安全和并发安全原则
6. 优先使用 Rust 标准库和成熟的第三方库
7. 避免不必要的 C++ 代码,保持代码库的一致性
11 changes: 11 additions & 0 deletions .trae/rules/testing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
alwaysApply: false
description: 涉及代码修改后
---
1. 为核心功能编写单元测试,确保测试覆盖率 > 80%
2. 使用 Rust 内置 test 和 C++ Google Test 框架
3. 测试命名格式:`test_module_functionality`
4. 每个测试独立运行,避免依赖
5. 测试核心业务逻辑、数据处理、异常处理和边界情况
6. 定期运行静态代码分析工具
7. 进行安全测试和性能测试
18 changes: 18 additions & 0 deletions .trae/rules/version-control.md
Original file line number Diff line number Diff line change
@@ -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. 避免强制推送,请保持在得到用户的同意后再进行推送
79 changes: 79 additions & 0 deletions change/run-2026-04-05.md
Original file line number Diff line number Diff line change
@@ -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 文件
70 changes: 70 additions & 0 deletions docs/M003-sandbox-feature-plan.md
Original file line number Diff line number Diff line change
@@ -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
25 changes: 23 additions & 2 deletions docs/compass/MoDa-Browser-dev.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
- ✅ 项目初始化和仓库创建
- ⏳ 设计核心架构
- ⏳ 实现安全框架基础
- 建立沙箱管理机制
- 📌 建立沙箱管理机制(已搁置)

### 阶段 2:进程隔离实现(2026年7-9月)
**里程碑:v0.2.0 发布**
Expand Down Expand Up @@ -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 |
Expand Down Expand Up @@ -790,4 +790,25 @@ ctest --output-on-failure

---

### 2026年4月17日

**今日工作:**

1. **项目规划调整**
- 搁置 M003 沙箱管理机制开发计划
- 原因:沙箱功能实现不尽人意,决定直接跳过相关开发
- 转向浏览器核心开发,优先实现核心架构和安全框架

**技术要点:**
- 沙箱功能实现复杂度高,需要大量时间和资源
- 核心架构和安全框架是更基础的需求
- 调整开发优先级,确保项目稳步推进

**下一步计划:**
- 专注于 M001 核心架构设计和 M002 安全框架实现
- 为浏览器核心功能开发做准备
- 定期评估沙箱功能的必要性和可行性

---

**让我们开始构建未来!** 🚀
Loading