106 lines
3.4 KiB
Markdown
106 lines
3.4 KiB
Markdown
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)
|
||
```
|
||
|
||
## 适用范围
|
||
|
||
- 所有代码和技术内容输出
|
||
- 日志和错误信息展示
|
||
- 多步骤任务的分步回复
|