| name | feat-docs-principles |
| description | Feat 框架文档编写原则与规范。定义 Feat 技术文档的写作风格、结构规范、代码示例标准,确保文档一致性和高质量。仅针对 pages/src/content/docs 目录下的文档编写时调用。 |
Feat 文档编写原则
角色定位
Feat 文档编写规范专家,负责确保所有 Feat 技术文档保持一致的风格、清晰的结构和高质量的代码示例。
核心使命:通过统一的文档规范,让开发者能够快速理解 Feat 的功能,降低学习成本,提升开发体验。
适用场景
何时调用此 Skill:
- 编写新的 Feat 技术文档
- 审查现有文档的规范性
- 统一文档风格和术语
- 创建文档模板
不适用场景:
- 微信公众号文章(请使用
feat-wechat-tech 或 feat-wechat-release)
- 生成插图(请使用
feat-illustrator)
文档编写负面清单
❌ 不要引入代码仓库本地链接
错误示例:
完整示例代码请参考 [AsyncHttpDemo.java](../../feat-core/src/test/java/tech/smartboot/feat/core/server/AsyncHttpDemo.java)
原因:
- 代码仓库链接不会随文档发布
- 发布后链接会失效
- 读者无法访问
正确做法:
- 将关键代码直接嵌入文档
- 提供可复制的完整代码块
- 如需引用,使用文字说明而非链接
❌ 不要写无意义的开篇
错误示例:
本文介绍 Feat AI 的功能和使用方法。
Feat AI 是一个强大的 AI 工具,可以帮助开发者快速构建 AI 应用...
原因:
- 没有说明读者能获得什么
- 浪费读者时间
- 缺乏行动导向
正确做法:
这篇指南的目标只有一个:让你在最短时间内看到模型返回的文本。
不会涉及任何进阶配置,先把链路跑通。
❌ 不要过度理论化
错误示例:
## 什么是异步
异步编程是一种编程范式,它允许程序在等待某些操作完成时继续执行其他任务...
[长篇理论介绍,500字以上]
## 为什么需要异步
[又一段理论]
原因:
- 开发者更关心"怎么用"
- 理论堆砌增加阅读负担
- 偏离实际使用场景
正确做法:
- 先给可运行的代码
- 代码后简要说明原理
- 理论服务于实践
❌ 不要回避局限性和边界
错误示例:
Session 是一个强大的状态管理工具,适合所有场景使用...
原因:
正确做法:
## 一个更重要的问题:你真的需要 Session 吗
如果你的应用已经开始走向下面这些方向:
- 前后端分离
- Token 认证
- 多端登录
那你通常应该更谨慎地使用 Session。
❌ 不要使用过长的代码示例
错误示例:
public class ChatService {
private ChatModel model;
private Logger logger = LoggerFactory.getLogger(ChatService.class);
private Config config;
private ExecutorService executor;
public ChatService() {
this.config = loadConfig();
this.executor = Executors.newFixedThreadPool(10);
this.model = FeatAI.chatModel(opts -> opts
.baseUrl(config.getBaseUrl())
.model(config.getModel())
.temperature(config.getTemperature())
.maxTokens(config.getMaxTokens())
.timeout(config.getTimeout())
);
}
public void chat(String message) {
logger.info("收到消息: {}", message);
model.chat(message, response -> {
logger.info("收到响应: {}", response.getContent());
System.out.println(response.getContent());
executor.submit(() -> {
saveToHistory(message, response);
});
});
}
private Config loadConfig() { }
private void saveToHistory(String msg, ChatResponse rsp) { }
}
原因:
- 淹没核心逻辑
- 读者难以找到重点
- 复制后无法直接运行(依赖其他类)
正确做法:
ChatModel model = FeatAI.chatModel(opts -> opts
.model("qwen2.5:7b"));
model.chatStream("你好", content -> System.out.print(content));
❌ 不要写无意义的注释
错误示例:
ChatModel model = FeatAI.chatModel(opts -> opts
.model("qwen2.5:7b")
);
model.chat("你好", response -> {
System.out.println(response.getContent());
});
原因:
正确做法:
model.chatStream("你好", content -> System.out.print(content));
❌ 不要使用无意义的标题
错误示例:
## 介绍
## 说明
## 使用方法
## 注意事项
原因:
正确做法:
## 添加依赖
## 配置数据库连接
## 处理异步响应
## 什么时候不该用异步
❌ 不要在代码中使用无意义命名
错误示例:
public void foo(String a, int b) {
String c = a + b;
System.out.println(c);
}
原因:
正确做法:
public void greet(String name, int times) {
String message = "Hello " + name + ", count: " + times;
System.out.println(message);
}
❌ 不要创建过宽的表格
错误示例:
| 配置项 | 说明 | 类型 | 必填 | 默认值 | 示例 | 版本 |
|--------|------|------|------|--------|------|------|
原因:
正确做法:
| 配置项 | 说明 | 默认值 |
|--------|------|--------|
| `model(...)` | 模型名称 | 必填 |
| `system(...)` | 系统提示词 | `null` |
快速开始
---
### ❌ 不要使用翻译腔
**错误示例:**
```markdown
本节将会向您介绍如何使用 Feat AI 来进行对话模型的创建和配置...
原因:
正确做法:
这篇指南的目标只有一个:让你在最短时间内看到模型返回的文本。
❌ 不要在文档中写 TODO
错误示例:
## 高级用法
TODO: 补充高级配置说明
## 性能优化
[待完善]
原因:
正确做法:
- 完成后再发布
- 或删除该章节
- 或明确说明"即将推出"
❌ 不要使用"下一步"引导
错误示例:
## 下一步
- 如果你还没学对话模型,先回到 [对话模型](/feat/ai/chat/)
- 如果你准备让模型调用工具,去看 [Agent 工具](/feat/ai/agent/)
原因:
- 后续内容增减会导致引导错误
- 维护困难,容易遗漏更新
- 读者可能已经在该页面,引导造成困惑
❌ 不要过度使用 Aside
错误示例:
正文内容...
<Aside type="tip">
提示1
</Aside>
正文继续...
<Aside type="caution">
警告1
</Aside>
正文继续...
<Aside type="tip">
提示2
</Aside>
原因:
正确做法:
- 只在关键位置使用
- 每页不超过 2-3 个
- 真正重要的才用 caution/danger
❌ 不要在文档中硬编码版本号
错误示例:
当前最新版本是 2.0.0,建议使用此版本...
原因:
正确做法:
使用 `${feat.version}` 或查看最新版本...
术语规范
统一术语表
| 术语 | 正确写法 | 避免使用 |
|---|
| Feat | Feat | feat、FEAT |
| Feat AI | Feat AI | FeatAI、feat-ai、FeatAi |
| Feat Cloud | Feat Cloud | FeatCloud、feat-cloud |
| Feat Core | Feat Core | FeatCore、feat-core |
| Controller | Controller | controller、控制器类 |
| RequestMapping | RequestMapping | requestMapping、@requestMapping |
代码中的类名/方法名
- 保持原样,不翻译
- 使用正确的驼峰命名
- 注解保留
@ 符号
文档审查清单
发布前检查以下项目:
内容检查
格式检查
语言检查