Skip to main content
Glama

智文助手贡献指南

感谢您对智文助手项目的关注!我们欢迎所有形式的贡献,包括但不限于:

  • 🐛 报告Bug

  • 💡 提出新功能建议

  • 📝 改进文档

  • 🔧 提交代码修复

  • ⭐ 添加新功能

📋 目录

🚀 开始之前

1. 了解项目

在开始贡献之前,建议您:

2. 选择贡献方式

贡献类型

说明

难度

报告Bug

发现问题并详细描述

改进文档

完善文档内容

⭐⭐

代码修复

修复已知问题

⭐⭐⭐

添加功能

实现新功能

⭐⭐⭐⭐

重构优化

改进代码结构

⭐⭐⭐⭐⭐

🛠️ 开发环境搭建

1. Fork和克隆项目

# 1. Fork 项目到您的GitHub账户
# 访问 https://github.com/kscz0000/Zhiwen-Assistant-MCP 点击 "Fork"

# 2. 克隆您的Fork
git clone https://github.com/YOUR_USERNAME/Zhiwen-Assistant-MCP.git

# 3. 添加原始仓库为上游
cd Zhiwen-Assistant-MCP
git remote add upstream https://github.com/kscz0000/Zhiwen-Assistant-MCP.git

2. 设置开发环境

# 1. 创建虚拟环境
python -m venv zhiwen-dev

# 2. 激活虚拟环境
# Windows
zhiwen-dev\Scripts\activate
# macOS/Linux
source zhiwen-dev/bin/activate

# 3. 安装开发依赖
pip install -r requirements-dev.txt

# 4. 安装pre-commit钩子
pre-commit install

3. 验证环境

# 运行测试套件
python -m pytest tests/

# 检查代码质量
python -m flake8 .

# 运行类型检查
python -m mypy folder_documentation_mcp.py

🔄 贡献流程

1. 创建Issue(可选但推荐)

对于较大的更改,建议先创建Issue讨论:

2. 创建功能分支

# 同步主分支
git checkout main
git pull upstream main

# 创建功能分支
git checkout -b feature/amazing-feature

# 或修复分支
git checkout -b fix/bug-description

3. 开发和测试

# 进行开发
# ... 编写代码 ...

# 运行测试
python -m pytest tests/

# 检查代码规范
python -m flake8 your_file.py

# 检查类型注解
python -m mypy your_file.py

4. 提交更改

# 添加更改
git add .

# 提交(遵循提交规范)
git commit -m "feat: add amazing new feature"

# 推送到您的Fork
git push origin feature/amazing-feature

5. 创建Pull Request

  1. 访问您的Fork页面

  2. 点击 "New Pull Request"

  3. 选择正确的分支

  4. 填写PR模板

  5. 等待代码审查

📝 代码规范

1. Python代码规范

我们遵循 PEP 8 规范:

# ✅ 好的示例
import os
from typing import List, Dict, Optional

def generate_readme_files(
    root_dir: str,
    exclude_dirs: Optional[List[str]] = None,
    force_update: bool = False
) -> Dict[str, int]:
    """
    为项目中的每个主要文件夹生成中文README.md文件
    
    Args:
        root_dir: 项目根目录路径
        exclude_dirs: 排除的目录列表
        force_update: 是否强制更新现有README.md文件
        
    Returns:
        包含生成统计信息的字典
    """
    if not os.path.exists(root_dir):
        raise ValueError(f"目录不存在: {root_dir}")
    
    # 实现代码...

# ❌ 不好的示例
import os, sys, typing

def generate_readme_files(root_dir, exclude_dirs=None, force_update=False):
    # 缺少类型注解
    # 缺少文档字符串
    if not os.path.exists(root_dir):
        raise Exception("目录不存在")  # 使用具体异常类型

2. 文档字符串规范

使用Google风格的文档字符串:

def example_function(param1: str, param2: int) -> bool:
    """函数功能简述。
    
    详细描述函数的功能和使用场景。
    
    Args:
        param1: 参数1的描述
        param2: 参数2的描述
        
    Returns:
        返回值描述
        
    Raises:
        ValueError: 当参数无效时
        PermissionError: 当权限不足时
        
    Example:
        >>> result = example_function("test", 123)
        >>> print(result)
        True
    """

3. 命名规范

# 变量和函数:snake_case
current_directory = "/path/to/dir"
def get_file_list() -> List[str]:

# 类名:PascalCase
class DocumentationGenerator:
    def __init__(self):
        self.config = {}

# 常量:UPPER_SNAKE_CASE
MAX_FILE_SIZE = 1024 * 1024  # 1MB
DEFAULT_ENCODING = "utf-8"

# 私有方法:前缀下划线
def _internal_helper() -> None:
    pass

4. 错误处理

# ✅ 好的错误处理
try:
    result = process_file(file_path)
except FileNotFoundError:
    logger.error(f"文件不存在: {file_path}")
    return {}
except PermissionError:
    logger.error(f"权限不足: {file_path}")
    raise
except Exception as e:
    logger.error(f"处理文件时发生未知错误: {e}")
    raise

# ❌ 不好的错误处理
try:
    result = process_file(file_path)
except:
    pass  # 静默忽略所有错误

🧪 测试指南

1. 测试结构

tests/
├── unit/                   # 单元测试
│   ├── test_readme.py
│   ├── test_mindmap.py
│   └── test_validation.py
├── integration/             # 集成测试
│   ├── test_full_workflow.py
│   └── test_mcp_integration.py
├── fixtures/               # 测试数据
│   └── sample_projects/
└── conftest.py            # pytest配置

2. 编写测试

# tests/unit/test_readme.py
import pytest
from folder_documentation_mcp import generate_readme_files

class TestReadmeGeneration:
    """README生成功能测试"""
    
    def test_generate_readme_success(self, tmp_path):
        """测试成功生成README"""
        # 准备测试数据
        test_dir = tmp_path / "test_project"
        test_dir.mkdir()
        (test_dir / "src").mkdir()
        (test_dir / "docs").mkdir()
        
        # 执行测试
        result = generate_readme_files({
            "root_dir": str(test_dir),
            "force_update": True
        })
        
        # 验证结果
        assert result["success"] is True
        assert result["generated_count"] >= 1
        assert (test_dir / "README.md").exists()
        assert (test_dir / "src" / "README.md").exists()
    
    def test_generate_readme_invalid_path(self):
        """测试无效路径处理"""
        with pytest.raises(ValueError):
            generate_readme_files({
                "root_dir": "/nonexistent/path"
            })

3. 运行测试

# 运行所有测试
pytest

# 运行特定测试文件
pytest tests/unit/test_readme.py

# 运行带覆盖率报告的测试
pytest --cov=folder_documentation_mcp --cov-report=html

# 运行特定标记的测试
pytest -m unit          # 只运行单元测试
pytest -m integration   # 只运行集成测试

📖 文档贡献

1. 文档类型

文档类型

路径

说明

API文档

docs/api/

接口说明

用户指南

docs/guide/

使用说明

开发文档

docs/development/

开发指南

部署文档

docs/deployment/

部署说明

2. 文档格式

使用Markdown格式,遵循以下规范:

# 标题使用#号

## 二级标题

### 三级标题

- 使用列表
  - 子列表项1
  - 子列表项2

1. 有序列表
2. 第二项

`代码`使用反引号

```python
# 代码块指定语言
def example():
    pass

引用使用大于号

链接文本

图片描述

表格标题1

表格标题2

内容1

内容2


### 3. 文档审查

提交文档前请检查:

- ✅ 标题层级正确
- ✅ 链接可点击
- ✅ 代码可运行
- ✅ 图片显示正常
- ✅ 表格格式正确
- ✅ 拼写和语法正确

## 📋 提交规范

我们使用 [Conventional Commits](https://www.conventionalcommits.org/) 规范:

### 提交类型

| 类型 | 说明 |
|------|------|
| `feat` | 新功能 |
| `fix` | Bug修复 |
| `docs` | 文档更新 |
| `style` | 代码格式调整 |
| `refactor` | 代码重构 |
| `test` | 测试相关 |
| `chore` | 构建工具、依赖更新 |

### 提交格式

<类型>[可选作用域]: <描述>

[可选正文]

[可选脚注]


### 示例

```bash
# 好的提交
feat(readme): 添加自定义模板支持
fix(validation): 修复路径遍历漏洞
docs(api): 更新README生成API文档
refactor(config): 重构配置加载逻辑

# 不好的提交
update readme
fix bug
add stuff

🤝 社区行为准则

我们的承诺

为了营造开放和友好的环境,我们承诺:

  • 尊重所有参与者

  • 使用友好和包容的语言

  • 接受建设性批评

  • 关注对社区最有利的事情

  • 对其他社区成员表示同理心

不当行为

以下行为不被接受:

  • 使用性别化语言或图像

  • 人身攻击或政治攻击

  • 公开或私下骚扰

  • 未经明确许可发布他人信息

  • 其他在专业环境中可能认为不当的行为

执行

项目维护者有权利和责任删除、编辑或拒绝不符合本行为准则的评论、提交、代码、wiki编辑、问题和其他贡献。

🏆 贡献者

我们感谢所有为智文助手做出贡献的开发者!

贡献方式

  • 💻 代码贡献

  • 📖 文档改进

  • 🐛 Bug报告

  • 💡 功能建议

  • 🌟 推广项目

  • 🙋‍♂️ 帮助其他用户

贡献者列表

贡献者将自动添加到 CONTRIBUTORS.md 文件中。

📞 联系方式

如果您有任何问题或建议,请通过以下方式联系:


感谢您的贡献!🎉

更新时间: 2025-12-19

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kscz0000/Zhiwen-Assistant-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server