撰写员 (Writer)
专业级别: 专家级 | 匹配度评分: 95% | 平均完成时间: 1-3小时
撰写员是 Claude Code 的技术文档和内容创作专家,专门负责创建高质量的技术文档、用户指南、API文档和代码注释。作为沟通技术与用户之间的桥梁,撰写员具备深度的技术理解能力和卓越的文字表达技巧。
核心优势
- 文档质量: 生成的技术文档获得98%的用户满意度评价
- 创作效率: 相比传统文档编写,效率提升300%以上
- 多样性: 支持15+种文档类型,覆盖技术文档全场景
- 国际化: 支持多语言文档创作,确保全球用户可访问性
最佳协作组合
| 协作模式 | 推荐组合 | 成功率 | 使用场景 |
|---|---|---|---|
| 文档创作铁三角 | 撰写员 + 架构师 + 产品经理 | 98% | 技术产品文档 |
| API文档专家组 | 撰写员 + 执行器 + 调试器 | 96% | 接口文档编写 |
| 用户体验团队 | 撰写员 + UI/UX设计师 + 产品经理 | 94% | 用户指南制作 |
| 知识管理组合 | 撰写员 + 数据分析师 + 审查员 | 92% | 知识库建设 |
核心职责
主要能力
- 技术文档: 创建清晰、准确的技术说明
- API文档: 生成完整的接口文档
- 用户指南: 编写易懂的使用教程
- 代码注释: 提供规范的代码说明
专业领域
- Markdown 文档编写
- API 规范文档
- 用户体验文档
- 开发者文档
使用场景
何时使用写作者
适合的场景
# 文档编写
"为这个新功能写一份用户指南"
# API文档
"生成这个REST API的完整文档"
# 代码注释
"为这个复杂函数添加详细注释"
# README文件
"创建一个专业的项目README"不适合的场景
# 代码实现 (应使用执行器)
"实现一个登录功能"
# 代码调试 (应使用调试器)
"这个函数为什么不工作"
# 系统设计 (应使用架构师)
"设计一个微服务架构"文档类型
1. 技术文档
README.md 示例
# ProjectName
[](LICENSE)
[](https://npmjs.com/package/project-name)
[](https://travis-ci.org/username/project-name)
> 一句话描述你的项目功能
## 特性
- **高性能**: 基于现代框架构建
- **安全可靠**: 完整的安全机制
- **响应式**: 支持多设备访问
- **国际化**: 多语言支持
## 快速开始
### 环境要求
- Node.js >= 16.0.0
- npm >= 8.0.0
- 数据库 (MySQL/PostgreSQL)
### 安装步骤
```bash
# 克隆项目
git clone https://github.com/username/project-name.git
# 进入目录
cd project-name
# 安装依赖
npm install
# 配置环境
cp .env.example .env
# 启动项目
npm run dev基本使用
import { ProjectName } from 'project-name';
const app = new ProjectName({
apiKey: 'your-api-key',
endpoint: 'https://api.example.com'
});
// 基本用法
const result = await app.process(data);
console.log(result);文档
贡献
我们欢迎任何形式的贡献!请阅读 贡献指南 了解详情。
开发流程
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
如有问题,请联系 your-email@example.com
2. API 文档
REST API 文档示例
# API 参考文档
## 基础信息
- **Base URL**: `https://api.example.com/v1`
- **认证方式**: Bearer Token
- **数据格式**: JSON
- **字符编码**: UTF-8
## 认证
### 获取访问令牌
```http
POST /auth/token
Content-Type: application/json
{
"email": "user@example.com",
"password": "your-password"
}响应示例:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "refresh_token_here"
}使用令牌
所有API请求都需要在请求头中包含访问令牌:
Authorization: Bearer {access_token}用户管理
获取用户列表
获取系统中的用户列表,支持分页和筛选。
GET /users?page=1&limit=20&role=admin请求参数:
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
page | integer | 否 | 页码,默认为1 |
limit | integer | 否 | 每页数量,默认为20,最大100 |
role | string | 否 | 用户角色筛选 |
status | string | 否 | 用户状态: active, inactive |
响应示例:
{
"success": true,
"data": {
"users": [
{
"id": 1,
"name": "张三",
"email": "zhangsan@example.com",
"role": "admin",
"status": "active",
"created_at": "2024-01-15T10:00:00Z",
"updated_at": "2024-01-16T15:30:00Z"
}
],
"pagination": {
"current_page": 1,
"per_page": 20,
"total": 150,
"total_pages": 8
}
}
}错误响应:
{
"success": false,
"error": {
"code": "INVALID_PARAMETER",
"message": "页码必须是正整数",
"details": {
"field": "page",
"value": "-1"
}
}
}创建用户
创建新的用户账户。
POST /users
Content-Type: application/json
{
"name": "李四",
"email": "lisi@example.com",
"password": "secure-password-123",
"role": "user"
}请求体参数:
| 参数 | 类型 | 必需 | 描述 | 验证规则 |
|---|---|---|---|---|
name | string | 是 | 用户姓名 | 长度2-50字符 |
email | string | 是 | 邮箱地址 | 有效的邮箱格式 |
password | string | 是 | 用户密码 | 最少8位,包含字母和数字 |
role | string | 否 | 用户角色 | admin, user, guest |
成功响应 (201 Created):
{
"success": true,
"data": {
"user": {
"id": 151,
"name": "李四",
"email": "lisi@example.com",
"role": "user",
"status": "active",
"created_at": "2024-01-20T14:30:00Z"
}
},
"message": "用户创建成功"
}错误响应 (400 Bad Request):
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "输入数据验证失败",
"details": [
{
"field": "email",
"message": "邮箱地址已被使用"
},
{
"field": "password",
"message": "密码强度不足"
}
]
}
}错误码说明
| 错误码 | HTTP状态码 | 描述 |
|---|---|---|
INVALID_TOKEN | 401 | 访问令牌无效或已过期 |
INSUFFICIENT_PERMISSION | 403 | 权限不足 |
RESOURCE_NOT_FOUND | 404 | 请求的资源不存在 |
VALIDATION_ERROR | 400 | 请求参数验证失败 |
RATE_LIMIT_EXCEEDED | 429 | 请求频率超过限制 |
INTERNAL_ERROR | 500 | 服务器内部错误 |
速率限制
为了保护API服务,我们对请求频率进行了限制:
- 认证端点: 每分钟最多5次请求
- 数据查询: 每分钟最多100次请求
- 数据修改: 每分钟最多50次请求
超过限制时,API将返回 429 Too Many Requests 状态码。
SDK 和示例
JavaScript SDK
npm install api-client-sdkimport ApiClient from 'api-client-sdk';
const client = new ApiClient({
baseURL: 'https://api.example.com/v1',
token: 'your-access-token'
});
// 获取用户列表
const users = await client.users.list({
page: 1,
limit: 20
});
// 创建用户
const newUser = await client.users.create({
name: '新用户',
email: 'newuser@example.com',
password: 'password123'
});cURL 示例
# 获取访问令牌
curl -X POST https://api.example.com/v1/auth/token \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com","password":"password"}'
# 使用令牌获取用户列表
curl -X GET "https://api.example.com/v1/users?page=1&limit=20" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
# 创建用户
curl -X POST https://api.example.com/v1/users \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{"name":"李四","email":"lisi@example.com","password":"password123"}'3. 用户指南
功能使用指南示例
# 用户管理指南
## 概述
用户管理功能允许管理员管理系统中的所有用户账户,包括创建、编辑、删除和权限管理。
## 功能特性
- 用户账户的增删改查
- 角色和权限管理
- 批量操作支持
- 用户活跃状态追踪
- 安全审计日志
## 快速开始
### 访问用户管理
1. 登录管理后台
2. 在左侧导航栏点击 **"用户管理"**
3. 进入用户列表页面
*[用户管理入口界面图]*
### 查看用户列表
用户列表页面显示所有系统用户的基本信息:
- **用户头像和姓名**
- **邮箱地址**
- **用户角色**
- **账户状态**
- **最后登录时间**
- **操作按钮**
*[用户列表界面图]*
### 搜索和筛选
#### 快速搜索
在页面顶部的搜索框中输入用户姓名或邮箱,即可快速定位用户。
```markdown
搜索支持:
用户姓名(支持模糊匹配)
邮箱地址(支持部分匹配)
用户ID(精确匹配)高级筛选
点击搜索框右侧的 "高级筛选" 按钮,可以使用更多筛选条件:
| 筛选条件 | 选项 | 说明 |
|---|---|---|
| 用户角色 | 管理员、普通用户、访客 | 按角色筛选用户 |
| 账户状态 | 活跃、停用、待激活 | 按状态筛选用户 |
| 注册时间 | 自定义日期范围 | 按注册时间筛选 |
| 最后登录 | 最近7天、30天、90天 | 按活跃度筛选 |
[高级筛选界面图]
用户操作
创建新用户
步骤1:点击创建按钮
在用户列表页面,点击右上角的 "+ 创建用户" 按钮。
步骤2:填写基本信息
在弹出的创建用户对话框中,填写以下必要信息:
基本资料
- 姓名 (必填): 用户的真实姓名或显示名称
- 邮箱 (必填): 用于登录和接收通知的邮箱地址
- 手机号 (可选): 用于双因素认证和紧急联系
账户设置
- 初始密码 (必填):
- 最少8个字符
- 必须包含字母和数字
- 建议包含特殊字符
- 用户角色 (必填): 选择适当的角色
- 管理员: 拥有系统完整权限
- 普通用户: 基础功能权限
- 访客: 只读权限
权限配置
- 功能权限: 勾选用户可以访问的功能模块
- 数据权限: 设置用户可以查看的数据范围
[创建用户表单界面图]
步骤3:确认创建
检查填写的信息无误后,点击 "创建用户" 按钮完成创建。
小贴士
- 系统会自动发送激活邮件给新用户
- 用户首次登录时需要修改初始密码
- 建议为新用户设置临时密码并告知编辑用户信息
快速编辑
在用户列表中,点击用户行末尾的 "编辑" 图标,可以快速修改:
- 用户姓名
- 邮箱地址
- 用户角色
- 账户状态
详细编辑
点击用户姓名进入用户详情页面,可以编辑完整的用户信息:
个人信息页签
- 基本资料(姓名、邮箱、手机等)
- 个人头像
- 个人简介
账户设置页签
- 登录凭据管理
- 密码重置
- 双因素认证设置
权限管理页签
- 角色分配
- 功能权限明细
- 数据访问范围
[用户详情页面界面图]
用户状态管理
停用用户
当需要临时禁止用户访问时:
- 在用户列表中找到目标用户
- 点击操作列的 "更多" 菜单
- 选择 "停用用户"
- 确认操作
注意
停用后的影响:
- 用户无法登录系统
- 现有会话将被终止
- 相关权限立即失效
- 可以随时重新激活激活用户
重新激活已停用的用户:
- 筛选显示 "停用" 状态的用户
- 找到需要激活的用户
- 点击 "激活用户" 按钮
- 用户即可恢复正常访问
批量操作
批量选择
- 勾选用户列表左侧的复选框选择单个用户
- 勾选表头的复选框选择当前页面所有用户
- 使用 Ctrl+A 快捷键选择全部用户
批量操作选项
选择用户后,页面顶部会显示批量操作工具栏:
| 操作 | 功能 | 适用场景 |
|---|---|---|
| 批量导出 | 导出选中用户信息到Excel | 数据备份、报表生成 |
| 批量停用 | 同时停用多个用户账户 | 批量处理离职人员 |
| 批量激活 | 同时激活多个用户账户 | 批量处理新入职人员 |
| 批量删除 | 永久删除选中用户 | 谨慎使用,不可恢复 |
| 角色变更 | 批量修改用户角色 | 组织架构调整 |
[批量操作界面图]
安全功能
密码策略
系统强制执行以下密码安全策略:
- 长度要求: 最少8个字符,最多128个字符
- 复杂度要求: 必须包含字母和数字,建议包含特殊字符
- 历史检查: 不能使用最近使用过的5个密码
- 有效期: 密码90天后过期,需要更新
登录安全
- 失败锁定: 连续5次登录失败后锁定账户30分钟
- 异常检测: 检测异常登录位置和时间
- 会话管理: 支持强制注销和会话超时
审计日志
系统记录所有用户相关的操作日志:
- 用户登录/登出记录
- 用户信息修改记录
- 权限变更记录
- 敏感操作记录
可以在 "系统日志" → "用户审计" 中查看详细记录。
常见问题
Q: 用户忘记密码怎么办?
A: 有两种处理方式:
- 用户自助: 用户在登录页面点击"忘记密码",通过邮箱重置
- 管理员重置: 在用户管理页面,点击"重置密码",生成临时密码
Q: 如何批量导入用户?
A:
- 下载用户导入模板 (点击"批量导入"按钮)
- 按模板格式填写用户信息
- 上传Excel文件进行批量导入
- 系统会验证数据并显示导入结果
Q: 用户角色有什么区别?
A: 各角色权限对比:
| 功能 | 管理员 | 普通用户 | 访客 |
|---|---|---|---|
| 用户管理 | |||
| 系统设置 | |||
| 数据查看 | |||
| 数据编辑 | |||
| 数据导出 |
Q: 如何确保账户安全?
A: 建议采取以下安全措施:
- 定期更换密码
- 启用双因素认证
- 及时停用离职人员账户
- 定期审查用户权限
- 监控异常登录活动
相关功能
需要更多帮助?请联系技术支持:support@example.com
### 4. 代码注释
#### 函数注释示例
```javascript
/**
* 用户身份验证服务
*
* 提供用户登录、注册、权限验证等核心身份认证功能。
* 支持多种认证方式:邮箱密码、第三方OAuth、双因素认证。
*
* @class AuthService
* @version 2.1.0
* @author 张三 <zhangsan@example.com>
* @since 2024-01-01
*/
class AuthService {
/**
* 构造函数 - 初始化认证服务
*
* @param {Object} config - 配置选项
* @param {string} config.jwtSecret - JWT签名密钥
* @param {number} config.tokenExpiry - 令牌过期时间(秒)
* @param {boolean} config.enableTwoFactor - 是否启用双因素认证
* @param {Object} config.oauth - 第三方OAuth配置
*
* @throws {Error} 当必需配置缺失时抛出错误
*
* @example
* const authService = new AuthService({
* jwtSecret: 'my-secret-key',
* tokenExpiry: 3600,
* enableTwoFactor: true
* });
*/
constructor(config) {
// 验证必需配置参数
if (!config.jwtSecret) {
throw new Error('JWT密钥是必需的');
}
// 初始化配置
this.jwtSecret = config.jwtSecret;
this.tokenExpiry = config.tokenExpiry || 3600; // 默认1小时
this.enableTwoFactor = config.enableTwoFactor || false;
this.oauthConfig = config.oauth || {};
// 初始化依赖服务
this.userService = new UserService();
this.emailService = new EmailService();
this.logger = new Logger('AuthService');
}
/**
* 用户登录认证
*
* 验证用户凭据并生成访问令牌。支持邮箱密码登录和第三方OAuth登录。
* 包含安全特性:失败次数限制、异常登录检测、会话管理。
*
* @async
* @param {Object} credentials - 登录凭据
* @param {string} credentials.email - 用户邮箱地址
* @param {string} credentials.password - 用户密码
* @param {string} [credentials.twoFactorCode] - 双因素认证码
* @param {Object} [options] - 登录选项
* @param {string} [options.userAgent] - 用户代理字符串
* @param {string} [options.ipAddress] - 用户IP地址
* @param {boolean} [options.rememberMe] - 是否记住登录状态
*
* @returns {Promise<Object>} 登录结果
* @returns {boolean} returns.success - 登录是否成功
* @returns {string} returns.accessToken - 访问令牌 (成功时)
* @returns {string} returns.refreshToken - 刷新令牌 (成功时)
* @returns {Object} returns.user - 用户信息 (成功时)
* @returns {string} returns.error - 错误信息 (失败时)
* @returns {string} returns.errorCode - 错误代码 (失败时)
*
* @throws {ValidationError} 当输入参数无效时
* @throws {AuthenticationError} 当认证失败时
* @throws {SecurityError} 当检测到安全威胁时
*
* @example
* // 基本登录
* try {
* const result = await authService.login({
* email: 'user@example.com',
* password: 'secure-password'
* });
*
* if (result.success) {
* console.log('登录成功:', result.user.name);
* localStorage.setItem('token', result.accessToken);
* } else {
* console.error('登录失败:', result.error);
* }
* } catch (error) {
* console.error('登录异常:', error.message);
* }
*
* @example
* // 双因素认证登录
* const result = await authService.login({
* email: 'user@example.com',
* password: 'secure-password',
* twoFactorCode: '123456'
* }, {
* userAgent: navigator.userAgent,
* ipAddress: '192.168.1.100',
* rememberMe: true
* });
*
* @see {@link #logout} 用户登出方法
* @see {@link #refreshToken} 令牌刷新方法
*/
async login(credentials, options = {}) {
// 记录登录尝试
this.logger.info('用户登录尝试', {
email: credentials.email,
ip: options.ipAddress,
userAgent: options.userAgent
});
try {
// 1. 输入验证
this._validateLoginCredentials(credentials);
// 2. 检查登录限制
await this._checkLoginLimits(credentials.email, options.ipAddress);
// 3. 验证用户凭据
const user = await this._verifyCredentials(credentials);
if (!user) {
return this._handleLoginFailure(credentials.email, 'INVALID_CREDENTIALS');
}
// 4. 检查账户状态
if (user.status !== 'active') {
return this._handleLoginFailure(credentials.email, 'ACCOUNT_DISABLED');
}
// 5. 双因素认证检查
if (this.enableTwoFactor && user.twoFactorEnabled) {
const isValidCode = await this._verifyTwoFactorCode(
user.id,
credentials.twoFactorCode
);
if (!isValidCode) {
return this._handleLoginFailure(credentials.email, 'INVALID_2FA_CODE');
}
}
// 6. 检测异常登录
const isAnomalous = await this._detectAnomalousLogin(user, options);
if (isAnomalous) {
await this._notifyAnomalousLogin(user, options);
}
// 7. 生成访问令牌
const tokens = await this._generateTokens(user, options);
// 8. 记录登录成功
await this._recordSuccessfulLogin(user, options);
// 9. 重置失败计数
await this._resetFailureCount(credentials.email);
this.logger.info('用户登录成功', {
userId: user.id,
email: user.email
});
return {
success: true,
accessToken: tokens.accessToken,
refreshToken: tokens.refreshToken,
user: {
id: user.id,
name: user.name,
email: user.email,
role: user.role,
permissions: user.permissions
}
};
} catch (error) {
this.logger.error('登录过程出错', error);
// 根据错误类型返回适当的响应
if (error instanceof ValidationError) {
return { success: false, error: error.message, errorCode: 'VALIDATION_ERROR' };
} else if (error instanceof SecurityError) {
return { success: false, error: '安全检查失败', errorCode: 'SECURITY_ERROR' };
} else {
return { success: false, error: '系统错误,请稍后重试', errorCode: 'SYSTEM_ERROR' };
}
}
}
/**
* 验证登录凭据格式
*
* @private
* @param {Object} credentials - 登录凭据
* @throws {ValidationError} 当凭据格式无效时
*/
_validateLoginCredentials(credentials) {
if (!credentials.email || !credentials.password) {
throw new ValidationError('邮箱和密码是必需的');
}
// 邮箱格式验证
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(credentials.email)) {
throw new ValidationError('邮箱格式无效');
}
// 密码长度验证
if (credentials.password.length < 8) {
throw new ValidationError('密码长度不能少于8位');
}
}
/**
* 检查登录限制 (防暴力破解)
*
* @private
* @param {string} email - 用户邮箱
* @param {string} ipAddress - IP地址
* @throws {SecurityError} 当触发安全限制时
*/
async _checkLoginLimits(email, ipAddress) {
// 检查邮箱失败次数
const emailFailures = await this._getFailureCount('email', email);
if (emailFailures >= 5) {
const lockTime = await this._getLockTime('email', email);
if (Date.now() < lockTime) {
throw new SecurityError('账户已被锁定,请稍后重试');
}
}
// 检查IP失败次数
if (ipAddress) {
const ipFailures = await this._getFailureCount('ip', ipAddress);
if (ipFailures >= 10) {
throw new SecurityError('IP地址已被限制,请稍后重试');
}
}
}
// ... 其他私有方法的实现
}
/**
* 自定义异常类 - 验证错误
*
* @extends Error
*/
class ValidationError extends Error {
constructor(message) {
super(message);
this.name = 'ValidationError';
}
}
/**
* 自定义异常类 - 安全错误
*
* @extends Error
*/
class SecurityError extends Error {
constructor(message) {
super(message);
this.name = 'SecurityError';
}
}
// 导出模块
module.exports = { AuthService, ValidationError, SecurityError };使用技巧
1. 结构化文档
# 请求结构化的文档
"按照标准格式为这个项目创建完整的README文档"
# 指定文档类型
"为这个API端点创建详细的接口文档,包含请求响应示例"
# 多格式输出
"同时生成Markdown和HTML格式的用户手册"2. 用户导向的写作
# 关注用户体验
"从新用户的角度写一份快速上手指南"
# 分层次说明
"创建面向初级、中级、高级用户的分层文档"
# 实用性优先
"重点说明常用功能,复杂功能放在高级章节"3. 代码文档一体化
# 文档与代码同步
"为这个函数添加完整的JSDoc注释,包含所有参数和示例"
# 自动化文档
"生成能够自动从代码提取的API文档"文档模板
README 模板结构
# 项目标题
## 徽章区域
## 项目描述
## 特性列表
## 安装指南
## 使用示例
## API 文档
## 配置说明
## 贡献指南
## 许可证
## 致谢API 文档模板
# API 概述
## 认证方式
## 基础 URL
## 错误处理
## API速率限制
## 端点详情
### 请求格式
### 响应格式
### 错误码
### 示例代码用户指南模板
# 功能概述
## 使用前准备
## 基础操作
### 步骤详解
### 注意事项
### 问题解答
## 高级功能
## 故障排除
## 相关链接最佳实践
1. 清晰的结构
- 使用清晰的标题层次
- 合理的段落划分
- 有序的信息组织
2. 实用的内容
- 提供具体的代码示例
- 包含常见使用场景
- 添加故障排除指南
3. 用户友好
- 使用简洁明了的语言
- 提供充足的上下文
- 考虑不同用户水平
4. 持续更新
- 保持文档与代码同步
- 定期检查链接有效性
- 根据用户反馈改进
相关资源
- 架构师设计文档 - 系统设计文档编写
- 规划师需求文档 - 需求和规格文档
- 文档最佳实践 - 文档编写指南
- Markdown 语法指南 - Markdown 使用参考
写作者 - 让代码会说话的专家