Install
openclaw skills install @ysh2ldd/link-skillsLink 产品全链路开发技能,覆盖需求分析、方案设计(技术方案/数据库设计/接口设计)、 编码开发(基于 link 标准)、测试部署上线、后续运维的完整生命周期。 适用于工作目录 D:\develop\code\cdfai 下的 link CRM+AI 微服务系统。 当用户需要为 link 项目开发新功能、设计接口、修改代码、排查问题、部署上线或进行运维操作时触发此技能。 关键词:link开发、link接口、link部署、link运维、CRM开发、AI助手开发、知识库开发、企微同步、微服务开发。
openclaw skills install @ysh2ldd/link-skills本技能为 link CRM+AI 企业级微服务系统提供全生命周期开发指导。link 系统基于 Java 8 + Spring Boot 2.1 + Spring Cloud Greenwich 构建,包含 8 个微服务模块,覆盖 CRM 业务、AI 助手、认证授权、API 网关等核心能力。
| 维度 | 内容 |
|---|---|
| 工作目录 | D:\develop\code\cdfai |
| 技术栈 | Java 8 + Spring Boot 2.1.2 + Spring Cloud Greenwich |
| 微服务模块 | link-ai、link-base、link-auth、link-gateway、link-config、link-log、link-login、link-register |
| 数据库 | MySQL 8.0.30(linkbase + linkadmin)、ClickHouse(linkloyalty)、Redis、ES 7.16.3 |
| ORM | MyBatis(link-core 封装 BasicMapper) |
| API 网关 | Spring Cloud Gateway,前缀 /linkcrm/ |
| 配置中心 | Apollo(AppID: cdfai-link-ai) |
| 部署 | Docker + Kubernetes + Helm |
| 私有框架 | link-core 1.5.95-RELEASE(BasicController/BasicService/BasicModel) |
收到 link 开发需求后,按以下五阶段顺序执行。每个阶段产出作为下一阶段输入。
目标:明确需求边界、验收标准和影响范围。
执行步骤:
产出:需求分析摘要(需求描述 + 验收标准 + 影响范围 + 约束条件)
参考文档:加载 references/project-architecture.md 了解模块划分和技术栈
目标:完成技术方案、数据库设计和接口设计。
参考文档:加载 references/project-architecture.md 了解架构细节
LNK_ 前缀 + 大写下划线(如 LNK_KB_DOCUMENT)DOCUMENT_NAME、CREATE_TIME)ID(主键)、CREATED_BY、CREATION_DATE、LAST_UPDATED_BY、LAST_UPDATE_DATE、OBJECT_VERSION_NUMBER(乐观锁)BasicMapper<T>)和 XML 映射文件特殊模式 — 数据中转:link-ai 知识库模块不落本地库,Service 层直接代理第三方 API。如需求涉及知识库,参考此模式。
参考文档:加载 references/database-guide.md 了解数据库设计规范和 MyBatis 模式
/link/{module}/{resource}/{action}(如 /link/aiAssistant/kbDocument/queryPage)/linkcrm/{module}/{resource}/{action}(网关 StripPrefix=1)@RequestMapping(不限定 method),参数用 @JsonParam 接收 JSON 请求体{
"success": true,
"code": "200",
"result": {},
"rows": [],
"total": 100,
"detailMessage": ""
}
references/api-design-guide.md 中的错误码体系@Api(tags={"xxx接口"}) 注解参考文档:加载 references/api-design-guide.md 了解完整接口设计规范
产出:方案设计文档(技术方案 + 表结构 DDL + 接口契约 + 文件清单)
目标:基于 link 标准编写代码,通过 Checkstyle 校验。
每个业务域严格三层分包:
src/main/java/com/link/{module}/{domain}/
├── controller/ # XxxController extends BasicController<Xxx>
├── service/ # XxxService(接口) + XxxServiceImpl extends BasicServiceImpl<Xxx>
├── dao/mybatis/
│ ├── mapper/ # XxxMapper extends BasicMapper<Xxx>
│ └── sqlMap/ # XxxMapper.xml + XxxMapperMySql.xml
└── model/ # Xxx extends BasicModel
使用 assets/templates/ 下的模板创建新文件:
Controller.java → 复制为 {Name}Controller.javaService.java → 复制为 {Name}Service.javaServiceImpl.java → 复制为 {Name}ServiceImpl.javaMapper.java → 复制为 {Name}Mapper.javaMapperMySql.xml → 复制为 {Name}MapperMySql.xmlModel.java → 复制为 {Name}.java模板中使用 {Name}、{name}、{module}、{domain}、{table} 作为占位符,替换为实际值。
加载 references/coding-standards.md 获取完整规范。关键红线:
| 规则 | 要求 |
|---|---|
| Java 版本 | 1.8(禁止使用 Java 9+ 语法) |
| 缩进 | 4 空格,禁止 Tab |
| 行长度 | ≤ 150 字符 |
| 大括号 | 必须使用(即使单行 if/else) |
| switch | 必须有 default 分支 |
| import | 禁止未使用的 import |
| 空 catch | 异常变量名必须为 expected |
| 包名 | 全小写 com.link.{module}.{domain}.{layer} |
| 表名 | LNK_ 前缀 + 大写下划线 |
| Controller | 继承 BasicController<T>,用 @Controller + @ResponseBody |
| Service | 接口 + Impl 分离,Impl 继承 BasicServiceImpl<T> |
| Mapper | 继承 BasicMapper<T>,XML 含 MySql 变体 |
| Model | 继承 BasicModel,用 Lombok @Data |
AI 对话集成(Coze):
com.link.coze 包结构火山引擎 HiAgent:
com.link.hiagent 包结构WebSocket 实时通信:
/websocket/ai企微集成:
com.link.base.tencent.corpwx 包结构知识库数据中转:
com.link.base.knowledge 包结构参考文档:加载 references/coding-standards.md 获取完整编码规范和代码模式
代码编写完成后执行以下检查:
references/coding-standards.md 中的 Checkstyle 规则@Resource 注入 Service,禁止 @Autowired(link 约定)@Api + @ApiOperation 完整产出:代码文件清单 + 一致性自检报告
目标:验证功能正确性,完成部署上线。
link 项目测试现状:单元测试极少(maven-surefire-plugin skip=true),主要依赖手动测试。
测试策略:
references/testing-guide.md 中的签名头配置logs/ 目录下的应用日志/swagger-ui.html 确认接口注册参考文档:加载 references/testing-guide.md 了解测试方法和签名绕过方案
# 进入对应模块目录
cd D:\develop\code\cdfai\link-ai # 或其他模块
# Maven 打包(跳过测试)
mvn clean package -DskipTests
注意:需要配置 settings.xml(阿里云镜像 + 内部 Nexus 仓库认证),link-core 等私有依赖从内部 Nexus 拉取。
# 多阶段构建
docker build -f Dockerfile -t cdfai/link-{module}:{version} .
Dockerfile 模式:Stage 1 Maven 构建 → Stage 2 运行时(基于 choerodon-tools/javabase:0.8.0)
charts/link-{module}/values.yaml)helm upgrade --install link-{module} ./charts/link-{module} -n {namespace}
参考文档:加载 references/deployment-guide.md 了解完整部署流程
产出:测试报告 + 部署确认 + 上线验证清单
目标:保障系统稳定运行,快速响应线上问题。
加载 references/troubleshooting.md 获取已知问题和解决方案。
常见问题快速索引:
| 问题 | 原因 | 解决方案 |
|---|---|---|
| curl 返回 475 | link 框架入站签名校验失败 | 通过网关访问或配置签名头 |
| Maven 编译失败 | link-core 不在本地 .m2 | 配置 settings.xml 指向内部 Nexus |
| 接口返回 412 | 乐观锁冲突(OBJECT_VERSION_NUMBER) | 重试或检查并发更新 |
| MyBatis SQL 注入 | ${} 拼接排序字段 | 改用 #{} 或白名单校验 |
| 大文件下载 OOM | Range 解析脆弱 | 使用流式写入 + 分片处理 |
| Fastjson 漏洞 | 1.2.83 版本历史漏洞 | 评估升级到 Fastjson2 或替换 Jackson |
${} 使用产出:运维操作记录 + 故障排查报告 + 优化建议
| 文档 | 路径 | 用途 |
|---|---|---|
| 项目架构 | references/project-architecture.md | 模块划分、技术栈、服务间关系 |
| 编码规范 | references/coding-standards.md | Checkstyle 规则、命名约定、代码模式 |
| 接口设计 | references/api-design-guide.md | API 模式、响应格式、错误码、网关路由 |
| 数据库指南 | references/database-guide.md | 表设计、MyBatis 模式、多数据源 |
| 部署指南 | references/deployment-guide.md | Docker、K8s、Helm、Apollo |
| 测试指南 | references/testing-guide.md | 测试方法、签名绕过、冒烟测试 |
| 故障排查 | references/troubleshooting.md | 已知问题、环境限制、解决方案 |
| 模板 | 路径 | 用途 |
|---|---|---|
| Controller | assets/templates/Controller.java | 控制器模板 |
| Service | assets/templates/Service.java | 服务接口模板 |
| ServiceImpl | assets/templates/ServiceImpl.java | 服务实现模板 |
| Mapper | assets/templates/Mapper.java | MyBatis Mapper 接口模板 |
| MapperMySql | assets/templates/MapperMySql.xml | MyBatis XML 映射模板 |
| Model | assets/templates/Model.java | 实体模型模板 |