名称: sop-维护 描述: 用于更新、版本控制、弃用或维护现有标准操作程序时使用。涵盖保持SOP的准确性、相关性和与实现变化的同步性。 允许工具:
- Read
- Write
- Edit
- Bash
- Grep
- Glob
SOP 维护
SOP需要持续维护以保持准确性和实用性。本技能涵盖保持SOP最新、管理版本以及确保SOP随系统演变的策略。
关键概念
SOP 生命周期
- 创建: 初始SOP开发
- 活跃使用: SOP定期执行
- 更新: 修改以反映变化
- 弃用: SOP已过时但仍被引用
- 归档/移除: SOP不再需要
SOP 变得过时的原因
- 技术变化: 工具、框架或语言更新
- 流程演进: 工作流程改进或变化
- 环境变化: 基础设施或部署变化
- 发现: 通过经验找到更好方法
- 外部依赖: 第三方服务更改API
最佳实践
SOP 的版本控制
将SOP视为代码:
# 将SOP存储在git仓库中
my-sops/
├── .git/
├── deployment/
│ ├── deploy-web-app.sop.md
│ └── rollback-deployment.sop.md
├── development/
│ ├── code-review.sop.md
│ └── feature-implementation.sop.md
└── README.md
提交消息:
git commit -m "feat(deployment): 在deploy-web-app.sop中添加健康检查步骤"
git commit -m "fix(code-review): 更正安全检查清单项"
git commit -m "docs(development): 使用新测试框架更新feature-implementation"
SOP 版本控制
在SOP元数据中包含版本信息:
# 部署应用到生产
**版本**: 2.1.0
**最后更新**: 2025-12-05
**作者**: DevOps团队
**状态**: 活跃
## 变更日志
### v2.1.0 (2025-12-05)
- 添加自动回滚触发器
- 更新健康检查阈值
### v2.0.0 (2025-11-15)
- 从Docker Swarm迁移到Kubernetes
- 添加金丝雀部署步骤
### v1.0.0 (2025-09-01)
- 初始部署SOP
保持SOP最新
定期审查计划:
## SOP 维护计划
- **每月**: 审查高频使用SOP(部署、事件响应)
- **每季度**: 审查所有活跃SOP的准确性
- **重大变化后**: 系统变化时更新SOP
- **事件后**: 根据经验教训更新SOP
维护清单:
## SOP 审查清单
- [ ] 先决条件仍准确
- [ ] 工具/版本当前
- [ ] 步骤反映实际流程
- [ ] 参数仍相关
- [ ] 成功标准可测量
- [ ] 错误处理覆盖常见问题
- [ ] 相关SOP仍有效
- [ ] 示例使用当前语法
弃用SOP
当SOP过时时:
# ⚠️ 弃用: 使用Docker Swarm部署
**状态**: 自2025-11-15起弃用
**替代**: deploy-kubernetes.sop.md
**原因**: 基础设施从Docker Swarm迁移到Kubernetes
## 迁移指南
如果需要从此SOP迁移:
1. 查看新的Kubernetes部署SOP
2. 了解部署过程的关键差异
3. 更新CI/CD管道以使用新SOP
4. 归档Docker Swarm配置
## 原始SOP(仅供参考)
[保留原始内容以供历史参考]
管理SOP集合
目录组织:
sops/
├── active/ # 当前使用的SOP
│ ├── deployment/
│ ├── development/
│ └── operations/
├── deprecated/ # 过时但可能被引用
│ └── legacy-deployments/
└── templates/ # 创建新SOP的模板
├── analysis.template.sop.md
├── implementation.template.sop.md
└── deployment.template.sop.md
索引文件:
# SOP 索引
## 活跃SOP
### 部署
- [deploy-web-app.sop.md](active/deployment/deploy-web-app.sop.md) - v2.1.0 - 部署Web应用到生产
- [rollback-deployment.sop.md](active/deployment/rollback-deployment.sop.md) - v1.5.0 - 回滚失败部署
### 开发
- [code-review.sop.md](active/development/code-review.sop.md) - v3.0.0 - 审查代码变更
- [tdd-implementation.sop.md](active/development/tdd-implementation.sop.md) - v2.2.0 - 使用TDD实现功能
## 弃用SOP
- [deploy-docker-swarm.sop.md](deprecated/deploy-docker-swarm.sop.md) - 弃用 - 使用deploy-web-app.sop.md代替
示例
示例1: 为工具变更更新SOP
之前(使用旧测试框架):
# 运行测试套件
## 步骤
1. 使用Mocha运行测试
```bash
npm run test
-
使用Istanbul检查覆盖率
npm run coverage
**之后(更新为Vitest):**
```markdown
# 运行测试套件
**版本**: 2.0.0
**最后更新**: 2025-12-05
**变更**: 从Mocha迁移到Vitest
## 步骤
1. 使用Vitest运行测试
```bash
npm run test
-
检查覆盖率(内置Vitest)
npm run test:coverage
迁移说明
如果从v1.x(Mocha)迁移:
- Vitest对大多数断言使用相同语法
- 覆盖率内置(无需单独Istanbul步骤)
- 测试运行显著更快
### 示例2: 添加环境变量支持
**更新SOP以支持环境变量:**
```markdown
# 配置SOP路径
## 概述
使用环境变量或配置文件配置自定义SOP路径。
这允许团队在维护内置SOP的同时维护组织特定的SOP。
## 参数
- **SOP路径**: {sop_paths} - 冒号分隔的目录路径
## 方法
### 方法1: 环境变量(推荐)
设置`AGENT_SOP_PATHS`环境变量:
```bash
# 在~/.zshrc或~/.bashrc中
export AGENT_SOP_PATHS="~/my-team-sops:~/project-sops"
# 或单次使用内联
AGENT_SOP_PATHS="~/my-sops" strands-agents-sops mcp
方法2: 命令行参数
直接传递路径到MCP服务器:
strands-agents-sops mcp --sop-paths ~/my-sops:~/team-sops
方法3: 配置文件
添加到Claude Code设置:
{
"mcpServers": {
"agent-sops": {
"command": "strands-agents-sops",
"args": ["mcp"],
"env": {
"AGENT_SOP_PATHS": "~/my-sops:~/team-sops"
}
}
}
}
优先级
- 命令行
--sop-paths(最高优先级) AGENT_SOP_PATHS环境变量- 默认路径(仅内置SOP)
自定义SOP覆盖具有匹配名称的内置SOP。
### 示例3: 事件后SOP更新
**基于生产事件添加错误处理:**
```markdown
# 部署应用到生产
**版本**: 2.2.0
**最后更新**: 2025-12-05
**变更**: 事件#1234后添加数据库连接池检查
## 变更日志
### v2.2.0 (2025-12-05)
- 添加数据库连接池验证步骤
- 更新连接失败的错误处理
- 添加监控告警验证
*原因: 生产事件#1234由连接池耗尽引起*
## 步骤
1. 部署前验证
- 验证暂存部署健康
- 检查数据库迁移就绪
- **新**: 验证数据库连接池配置
```bash
# 检查池设置
kubectl get configmap db-config -o yaml | grep -A5 pool
# 验证池大小匹配预期负载
# 必须 ≥ (预期连接数 * 1.5)
```
2. 部署应用
[... 现有步骤 ...]
3. 部署后验证
- 运行冒烟测试
- 监控错误率
- **新**: 验证数据库连接池指标
```bash
# 检查活跃连接
# 必须 < 池大小的80%
curl https://monitoring.example.com/metrics/db-pool
```
## 错误处理
### 新: 错误: 数据库连接池耗尽
**症状**: 应用无法获取数据库连接,请求超时
**原因**: 池大小不足以负载,连接泄漏,或慢查询
**解决**:
1. 立即: 扩大连接池大小
```bash
kubectl patch configmap db-config --patch '{"data":{"pool_size":"100"}}'
kubectl rollout restart deployment app
- 监控连接使用5分钟
- 如果问题持续,执行回滚
- 事件后: 审查慢查询日志并优化
## 常见模式
### SOP 更新模板
```markdown
# {SOP标题}
**版本**: {新版本}
**最后更新**: {日期}
**变更**: {变更摘要}
## 变更日志
### v{新版本} ({日期})
- {变更1}
- {变更2}
- {变更3}
*原因: {为什么进行这些变更}*
### v{前一版本} ({日期})
[先前变更]
## [SOP其余内容]
弃用通知模板
# ⚠️ 弃用: {旧SOP标题}
**状态**: 自{日期}起弃用
**替代**: {新SOP文件.sop.md}
**原因**: {为什么弃用}
**支持结束日期**: {何时将被移除}
## 迁移指南
从此SOP迁移到{新SOP}:
1. **关键差异**:
- {差异1}
- {差异2}
2. **迁移步骤**:
- {步骤1}
- {步骤2}
3. **破坏性变更**:
- {破坏性变更1}
- {破坏性变更2}
## 参考
- 新SOP: [{新SOP标题}]({新SOP文件.sop.md})
- 迁移指南: [链接]
- 公告: [链接到公告]
---
## 原始SOP(供历史参考)
[在此行下方保留原始内容]
反模式
避免这些维护错误:
-
无版本跟踪
- ❌ 更新SOP而不跟踪变更
- ✅ 使用版本号和变更日志
-
忽略弃用SOP
- ❌ 留下过时SOP而无弃用通知
- ✅ 清晰标记弃用SOP并提供替代方案
-
无通知的破坏性变更
- ❌ 静默更改SOP行为
- ✅ 版本提升和破坏性变更的迁移指南
-
无审查计划
- ❌ 仅在SOP中断时更新
- ✅ 所有SOP的定期审查计划
-
差劲的变更沟通
- ❌ 更新SOP而不通知用户
- ✅ 向团队宣布重大SOP变更
维护工作流
常规维护
## 每月SOP维护
1. 审查高频SOP
- 检查执行日志中的失败
- 审查任何报告的问题
- 基于用户反馈更新
2. 验证SOP准确性
- 手动运行关键SOP
- 验证工具/版本当前
- 测试示例仍有效
3. 更新文档
- 修复发现的任何不准确
- 在需要处添加澄清
- 更新相关SOP
4. 提交和沟通变更
- 用描述性消息提交更新
- 在团队频道中宣布变更
- 更新SOP索引
变更后维护
## 系统变更后
当基础设施、工具或流程变化时:
1. 识别受影响的SOP
```bash
# 搜索提及变更组件的SOP
grep -r "docker" sops/*.sop.md
-
更新每个受影响的SOP
- 更新版本号
- 添加变更日志条目
- 修改受影响的步骤
- 更新示例
-
测试更新的SOP
- 运行新工作流
- 验证所有步骤有效
- 检查成功标准仍有效
-
审查依赖项
- 检查相关SOP是否需要更新
- 更新SOP索引
- 通知团队变更
## 相关技能
- **sop-authoring**: 以高质量创建新SOP
- **sop-structure**: 有效组织SOP
- **sop-rfc2119**: 使用精确的需求关键词