# Yy Optimize

> 优化方案生成器。用于代码、架构、流程、文档等各类优化场景。 仅输出优化方案供用户选择，不直接执行改动；也不用于审核代码缺陷、定位 bug 根因或撰写新功能规格。

- Skill: `bulls-cows/yy-optimize` (Agent Skill)
- Install (CLI): `npx skillmds@latest add bulls-cows/yy-optimize`
- Raw SKILL.md: https://api.skillmd.com/api/skills/bulls-cows/yy-optimize/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: bulls-cows (https://skillmd.com/u/bulls-cows)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/bulls-cows/yy-optimize

---


# yy-optimize

## 描述

优化方案生成器，帮助用户在多种可行方案中做出最佳选择。

**核心原则**：务实优先，不为优化而优化。如果现状已经足够好，应直接告知用户无需优化。

## 使用场景

- 用户提到"优化"、"改进"、"提升"、"重构"
- 用户需要改进代码性能、架构设计、工作流程、文档结构等
- 用户希望获得多个可选方案进行对比

不应触发：

- 用户明确要求直接执行某个具体操作
- 用户只是询问概念性问题（如"什么是优化"）
- 用户要求修复具体 bug（应使用相关修复技能）

## 指令

### 步骤 1. 理解优化目标

- 分析用户提出的优化需求
- 识别优化对象的类型（代码、架构、流程、文档等）
- 明确优化的约束条件（时间、资源、兼容性等）
- 显式说明自己对优化目标的假设，存在多种理解时列出选项而非默默选其一

### 步骤 2. 分析现状

读取优化对象及其关联文件，识别问题与机会：

- **约束边界**：提取语言、范围、兼容、授权、验证和交付等边界，判断哪些限制直接影响方案可行性
- **目标与验收标准**：明确优化目标、成功标准、失败条件和回归要求
- **证据收集**：优先收集可验证事实，区分表象、根因与影响范围
- **结构与依赖**：识别模块分层、职责边界、前后依赖，判断改动的连锁影响
- **全链路闭环**：检查入口、执行、状态变化、结果回传和消费环节是否完整衔接

### 步骤 3. 判断是否需要优化

对步骤 2 的每个发现进行分级筛选：

- **值得改**：影响执行质量、存在逻辑矛盾、会导致错误判断
- **不值得改**：仅是风格偏好、上下文中已足够清晰、改动收益极低

**决策分支**：

- **所有问题均为"不值得改"**：告知用户"当前无需优化"，说明评估依据
- **存在"值得改"的问题**：仅针对这些问题生成方案，继续下一步
- **禁止将"不值得改"的项包装为优化方案**

### 步骤 4. 生成优化方案

根据实际可行的方案数量输出：

- 如果只有 1 个可行方案，就只输出 1 个
- 如果有 2 个可行方案，就输出 2 个
- 如果方案较多，选取最值得考虑的 3 个
- **禁止强行凑数，禁止为优化而优化**

每个方案包含：

- 方案名称
- 核心思路
- 实施步骤
- 预期效果（附可验证的成功标准，如"测试通过"、"性能指标达到 X"）
- 潜在风险
- 适用场景

### 步骤 5. 输出方案供用户选择

以结构化格式输出方案，等待用户反馈。

### 步骤 6. 迭代完善

- 根据用户反馈调整方案
- 补充用户关心的细节
- 合并或拆分方案

### 步骤 7. 确认执行

- 用户明确确认后，才执行选定的优化方案
- 确认方式：用户说"执行方案 X"、"确认方案 X"、"就按方案 X 做"等

## 安全边界

- 不在未获用户明确确认的情况下执行任何优化方案
- 不删除用户未授权的代码或文件
- 不引入用户未同意的依赖或工具链

## 输出格式

### 无需优化的情况

```markdown
## 优化分析

**优化目标**：[一句话描述]
**现状评估**：当前实现已经足够好，无明显优化空间。

**结论**：无需优化。
```

### 有优化方案的情况

```markdown
## 优化分析

**优化目标**：[一句话描述]
**现状问题**：[列出主要问题]

---

## 方案一：[方案名称]（推荐）

**核心思路**：[一句话描述]

**实施步骤**：

1. [步骤一]
2. [步骤二]
3. [步骤三]

**预期效果**：

- [效果一]
- [效果二]

**潜在风险**：

- [风险一]

**适用场景**：[描述适合什么情况下选择此方案]

---

## 方案二：[方案名称]

[同上结构]

---

## 方案三：[方案名称]

[同上结构]

---

## 请选择方案

请告诉我您倾向哪个方案，或提出您的修改意见。
```

## 示例

### 输入

```text
优化这个组件的渲染性能
```

### 输出

```markdown
## 优化分析

**优化目标**：提升组件渲染性能
**现状问题**：

- 每次父组件更新都会触发重新渲染
- 列表项未使用 key 优化
- 存在不必要的计算属性

---

## 方案一：memo + useMemo 优化（推荐）

**核心思路**：使用 React.memo 和 useMemo 减少不必要的重渲染

**实施步骤**：

1. 使用 React.memo 包裹组件
2. 用 useMemo 缓存计算结果
3. 优化列表项 key

**预期效果**：

- 渲染次数减少 50%+
- CPU 占用降低

**潜在风险**：

- memo 对比本身有开销
- 需要测试边界情况

**适用场景**：组件渲染开销大、父组件频繁更新的情况

---

## 方案二：状态下沉

**核心思路**：将状态移到实际使用的子组件中

**实施步骤**：

1. 识别状态使用位置
2. 将状态下移到子组件
3. 减少父组件状态数量

**预期效果**：

- 缩小重渲染范围
- 代码更清晰

**潜在风险**：

- 可能需要调整组件结构
- 状态管理分散

**适用场景**：状态只在部分子组件中使用的情况

---

## 方案三：虚拟列表

**核心思路**：对长列表使用虚拟滚动

**实施步骤**：

1. 引入虚拟列表库
2. 改造列表渲染逻辑
3. 配置可视区域参数

**预期效果**：

- 大列表渲染性能显著提升
- 内存占用降低

**潜在风险**：

- 增加依赖
- 需要处理滚动行为差异

**适用场景**：列表项超过 100 条的情况

---

## 请选择方案

请告诉我您倾向哪个方案，或提出您的修改意见。
```

