Files
rules-skills/rules/common/token-efficiency.md
T
2026-06-24 18:32:50 +08:00

106 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Token 效率规范
## 规则
1. **精简输出**
- 默认输出控制在必要最小范围内,优先提供关键信息而非完整内容。
- 避免冗余解释,用户已知的背景信息不再重复。
- 单次回复总长度建议控制在 2000 字以内,复杂任务可分步输出。
2. **代码输出优化**
- 只输出修改相关的代码片段,禁止输出完整文件内容。
- 使用 `// ...` 或注释省略未修改部分,保留必要的上下文(通常前后 3-5 行)。
- 多文件修改时,逐个文件展示,每个文件只展示变更部分。
3. **避免重复**
- 不重复用户已提供的信息或上下文。
- 不重复解释同一概念,首次提及即可。
- 列表或表格中避免重复字段,使用引用或缩写。
4. **结构化压缩**
- 优先使用列表、表格替代段落描述,减少连接词和过渡句。
- 使用符号(如 `→``⇒`)替代文字表达因果关系。
- 技术术语使用标准缩写(如 API、DB、UI),避免全称重复。
5. **智能省略**
- 通用代码模板(如 import 语句、标准配置)可省略,必要时提供链接或提示。
- 错误堆栈只保留关键帧,过滤框架内部调用。
- 日志输出只保留与问题相关的行,使用 `...` 省略无关内容。
6. **分步响应**
- 复杂任务先给出概要方案和关键步骤,确认后再展开细节。
- 多步骤任务每步只输出当前步骤内容,不预输出后续步骤。
## 与现有规则的关联
| 关联规则 | 说明 |
|---------|------|
| `output-format.md` 第 2 条"简洁优先" | 本规则是对"简洁优先"的具体化和量化补充,侧重 Token 层面的优化 |
| `output-format.md` 第 8 条"代码输出" | 本规则第 2 条是对该条的扩展,增加了具体的代码省略策略 |
## 示例
### 代码输出(优化前)
```java
package com.example.service;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
@Autowired
private OrderRepository orderRepository;
// ... 其他代码 ...
public User getUserById(Long id) {
return userRepository.findById(id).orElse(null);
}
// ... 其他代码 ...
}
```
### 代码输出(优化后)
```java
// UserService.java
public User getUserById(Long id) {
return userRepository.findById(id).orElse(null);
}
```
### 日志输出(优化前)
```
2024-01-01 10:00:01 INFO [main] Starting application...
2024-01-01 10:00:02 INFO [main] Loading configuration...
2024-01-01 10:00:03 ERROR [main] Failed to connect to database
java.sql.SQLException: Connection refused
at com.mysql.jdbc.Connection.createNewIO(Connection.java:1234)
at com.mysql.jdbc.Connection.<init>(Connection.java:567)
at com.mysql.jdbc.Driver.connect(Driver.java:89)
at java.sql.DriverManager.getConnection(DriverManager.java:123)
at com.example.config.DatabaseConfig.init(DatabaseConfig.java:45)
... 省略 20 行框架内部调用
```
### 日志输出(优化后)
```
ERROR: Failed to connect to database (Connection refused)
at DatabaseConfig.init(DatabaseConfig.java:45)
```
## 适用范围
- 所有代码和技术内容输出
- 日志和错误信息展示
- 多步骤任务的分步回复