codex添加spec coding的skill

github地址: 👉 https://github.com/grid-oaa/codex-skill-spec 一、Kiro 的 Spec 是什么? 在没有 Spec 的情况下,我们经常这样工作: 给一句模糊需求 → 各自理解 → AI 或开发开始干活 → 结果经常跑偏 有使用过 Kiro 的小伙伴会知道,Krio 的 Spec 模式,会依次会生成 requirements.md、design.md、tasks.md三个文档。 requirements.md 文档用来描述项目的具体需求,包括项目背景、目标、功能需求、预期成果等。 design.md 文档专注于项目的架构和技术设计方案。 tasks.md 文档是规划和跟踪项目开发过程中的各项任务。 有了 tasks.md 文档后,我们只需要点击 start task 即可开始执行任务了。 总结一下:Spec 的作用就是把: 「需要 AI 去猜的东西」→ 变成「AI 可以直接执行的文档信息」 二、Codex Skill是什么? 熟悉 Claude Code Skills 的小伙伴应该不会默认了,Skill 好比一个封装好的函数,可以反复调用。它可以按固定方式、稳定地完成某一类任务。 在 Codex 中输入$就可以查看到可使用的 Skill 了,选中某一个后就可以使用该Skill能力了。 三、Codex Skill Spec实战示例 从 Github 仓库(https://github.com/grid-oaa/codex-skill-spec)下载后,在 skills 目录下有 design、requirements、tasks 三个文件夹。 (code-review-pro 是我代码审查的 skill,感兴趣的也可以添加上。) ...

February 1, 2026 · 1 min · 128 words

SpringAI学习

一、简介 1.1 Spring AI 简介 定义与目标 SpringAI是一个基于Spring框架的开源项目,旨在简化人工智能(AI)技术在 Java 应用程序中的集成过程。 可以快速将大语言模型、自然语言处理、图像生成等 AI 功能融入到 Spring Boot 或其他 Spring 项目中。 核心目标在于降低 AI 技术的使用门槛,并提升 AI 应用开发效率 与 Spring 生态系统的关系 在架构层面,Spring AI 遵循 Spring 框架的依赖注入(DI)、控制反转(IoC)以及面向切面编程(AOP)等核心设计理念。 开发者可以像使用 Spring 其他组件一样,通过注解或 XML 配置的方式管理 AI 相关的 Bean,如模型客户端、提示工程处理器等,实现 AI 功能的灵活装配与扩展。 1.2 应用场景 自然语言处理 文本生成:利用 Spring AI 可轻松实现自动生成文章、故事、报告等内容。例如在新闻媒体行业,可基于模板和现有数据自动生成体育赛事、财经数据等方面的简短新闻报道。 情感分析:通过 Spring AI 可以对用户评论、社交媒体内容等文本进行情感分析,判断其情感倾向(积极、消极或中性)。电商平台可利用该功能分析用户对商品的评价,帮助商家了解消费者的满意度和需求,及时调整产品策略和服务质量。 图像生成 创意设计辅助:广告公司或设计团队可以使用 Spring AI 开发的应用,根据文字描述生成创意图像,为设计工作提供灵感和参考。 产品展示图生成:电商平台可以利用 Spring AI 自动生成产品的展示图片。 智能客服 自动问答:基于 Spring AI 开发的智能客服系统可以自动回答用户的常见问题,减轻客服人员的工作负担。 1.3 优势与特点 简化 AI 集成 Spring AI 为不同类型的 AI 模型(如语言模型、图像模型等)提供了统一的编程接口,开发者可以使用相同的方式调用不同的模型。 无论是调用 OpenAI 的 GPT 模型还是本地部署的 LLaMA 模型,都可以通过 Spring AI 提供的 ChatClient 接口进行操作。 多模型支持 Spring AI 支持多种主流的 AI 模型和服务提供商,具有良好的模型兼容性和扩展性。 与 Spring 框架的无缝结合 Spring AI 遵循 Spring 框架的编程模型,使用注解、依赖注入等特性,开发者可以使用熟悉的方式开发 AI 应用。 Spring AI 提供了 Spring Boot Starter 依赖,能够与 Spring Boot 无缝集成。通过自动配置和 Starter 机制,开发者可以快速搭建基于 Spring Boot 的 AI 应用。 二、快速入门 一、环境要求与支持版本 Spring Boot 版本:当前支持 Spring Boot 3.4.x,未来将支持 3.5.x。 JDK 版本:需使用与 Spring Boot 兼容的 JDK 版本(建议 JDK 17+)。 二、项目创建方式 Spring Initializr: 访问 start.spring.io。 在依赖选择中添加 AI 相关模块(如 AI Models、Vector Stores)。 手动创建:通过 Maven 或 Gradle 构建项目,添加对应依赖。 三、依赖管理与仓库配置 (一)稳定版本(1.0.0-M6 及以后) Maven 配置:无需额外仓库,直接从 Maven Central 拉取。 Gradle 配置:使用 mavenCentral() 仓库。 (二)快照版本(Snapshot) Maven 仓库配置: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <repositories> <repository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>https://repo.spring.io/snapshot</url> <releases><enabled>false</enabled></releases> </repository> <repository> <name>Central Portal Snapshots</name> <id>central-portal-snapshots</id> <url>https://central.sonatype.com/repository/maven-snapshots/</url> <snapshots><enabled>true</enabled></snapshots> </repository> </repositories> Gradle 仓库配置: 1 2 3 4 5 6 7 8 9 repositories { mavenCentral() maven { url 'https://repo.spring.io/milestone' } maven { url 'https://repo.spring.io/snapshot' } maven { name = 'Central Portal Snapshots' url = 'https://central.sonatype.com/repository/maven-snapshots/' } } Maven 镜像配置注意事项: 若 settings.xml 中存在通配符镜像(<mirrorOf>*</mirrorOf>),需排除 Spring 快照仓库: 1 2 3 4 5 <mirror> <id>my-mirror</id> <mirrorOf>*,!spring-snapshots,!central-portal-snapshots</mirrorOf> <url>https://my-company-repository.com/maven</url> </mirror> 四、引入 Spring AI BOM 作用:统一管理 Spring AI 依赖版本,避免版本冲突。 Maven 配置: 1 2 3 4 5 6 7 8 9 10 11 <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-bom</artifactId> <version>1.0.0-SNAPSHOT</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> Gradle 配置: 1 2 3 4 5 dependencies { implementation platform("org.springframework.ai:spring-ai-bom:1.0.0-SNAPSHOT") // 添加具体模块依赖(如 OpenAI 集成) implementation 'org.springframework.ai:spring-ai-openai' } 五、添加具体功能依赖 根据需求选择以下模块依赖: ...

January 31, 2026 · 13 min · 2767 words

GitHub、Gitee、Gitlab共用一个SSH密钥配置

参考文章链接 一、说明 由于我的Github、Gitee用的邮箱不同,而且公司用的Gitlab还用的是公司邮箱,网上找了很多资料,有的很复杂,有的呢又不是我想要的,因此自己研究了一下啊,搞出来了个比较间的的配置所以Git仓库共用的的ssh。 这里简单说下原理: 第一步,设置全局邮箱和用户名,这个没什么好说的 第二步,生产ssh,我下面给的命令没有 -C 指定邮箱这项,原因就是我三个git仓库的邮箱都不同,如果加上-C的话就要生成三个ssh,这不是我想要的,所以我就想到了不指定邮箱,这样一试,果然成了。 我们看生产的ssh密钥最后面,其实还是自动指定了邮箱:xingyiteng@xiaoxinpro-16,这个xiaoxinpro-16是我的设备名称,这样这一个ssh就能在所有的git仓库中使用了,如果使用-C指定了邮箱,那么生产的ssh密钥最后的邮箱就是你指定的,但同时这个ssh密钥只能用于你指定的邮箱的仓库。 二、配置SSH 1.设置全局邮箱和用户名 1 2 3 4 5 6 7 8 9 10 11 # 设置全局邮箱,这里的邮箱仅仅表明你的身份,与github、gitee上注册的邮箱可以不一样 git config --global user.email "your email" # 设置全局用户名,可以随意填写 git config --global user.name "your name" #配置完后,可通过如下命令查看用户名、邮箱 git config user.name git config user.emal # 这两个命令在Git中唯一标识了你这台主机系统,因此可以在系统的任何地方进行git操作 2.生成全局ssh 1 2 # 生产ssh密钥,一直回车即可 ssh-keygen -t rsa 可以看到,默认的ssh文件路径为C:\用户\Lenovo\.ssh,在下面有两个文件:id_rsa和id_rsa.pub,id_rsa.pub里面就是我们要的ssh密钥 三、Github、Gitee配置ssh 配置完成后,进行验证 ...

January 25, 2026 · 1 min · 67 words

GitFlow教程

五大分支 主分支(main/master) 作用:存放稳定、可随时部署到生产环境的代码。 特点: 分支上的每一个提交都对应一个正式的发布版本。 不允许直接在此分支上开发。 通常会被打上版本标签(如v1.0.0,v1.0.1) 开发分支(develop)锅 作用:存放最新开发成果的集成分支,是功能开发的集线器。 特点: 当develop分支上的代码达到稳定状态并准备发布时,会合并到main分支。 所有功能分支、发布分支都从develop分支拉取。 功能分支(feature/*)自己的碗 来源:develop 合并到:develop 命名惯例:feature/user-authentication,feature/payment-integration 作用:开发新功能。 生命周期: 从develop分支拉取。 开发完成后,合并回develop分支。 合并后,该功能分支通常被删除。 1 2 3 4 // 删除本地 git branch -d feature/user-authentication // 删除远程 git push origin --delete feature/user-authentication Bash 发布分支(release/*) 来源:develop 合并到:develop 和 main 命名惯例:release/1.2.0,release/2024-spring 作用:为发布新版本做准备。在此分支上只做Bug修复、生成版本号、整理文档等发布准备工作,不 再添加新功能。 生命周期: 当develop分支的功能足够进行一次发布时,从develop拉出release分支。 在此分支上进行最后的测试和修复。 准备就绪后,将release分支合并到main分支并打上版本标签。 同时,还必须合并回develop分支,因为release分支上的修复可能在develop分支上不存在。 热修复分支(hotfix/*) 来源:main 合并到:main 和 develop 命名惯例:hotfix/critical-security-patch,hotfix/1.2.1 作用:快速修复生产环境(main分支)上的紧急Bug。 生命周期: 从main分支上出现Bug的提交点(通常是最近的标签)拉取。 修复完成后,合并回main分支并打上新的版本标签(如v1.0.1), 同时,还必须合并回develop分支,确保修复在后续开发中也生效。 代码回退(重要) 工作区有改动,无add无commit无push 执行rollback ...

January 1, 2026 · 1 min · 131 words

Github Action自动化部署

2核2G 40G空间的服务器,不推荐使用Jenkins 尽量别在服务器 npm build、mvn package,还是走镜像 安装git 1 sudo apt-get update && sudo apt-get install -y git 方案一:GitHub Actions + deploy. sh push 到 GitHub GitHub Actions 自动: build 后端镜像 build 前端镜像 push 到 GHCR / Docker Hub 并SSH到服务器,并执行部署脚本deploy. sh : docker compose pull docker compose up -d ✅ 优点:服务器不吃资源(2核2G非常适合) ✅ 部署快、稳定、可回滚(tag) 详细操作 前端Dockerfile(已废弃,前端build后手动上传到nginx目录下) 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 # frontend/Dockerfile FROM node:20-alpine AS build WORKDIR /app # 1. 先拷贝依赖描述,利用缓存 COPY package*.json ./ RUN npm ci # 2. 再拷贝全部源码(包含 public/drawio) COPY . . # 3. Vue CLI 构建(public 目录会原样拷贝进 dist) RUN npm run build # 4. 运行阶段:Nginx FROM nginx:alpine # 用我们自己的 nginx 配置 COPY nginx.conf /etc/nginx/conf.d/default.conf # 拷贝构建产物 COPY --from=build /app/dist /usr/share/nginx/html EXPOSE 80 nginx.conf 放到和Dockerfile同一目录下,示例: ...

December 30, 2025 · 3 min · 589 words

docker操作手册

基础概念 镜像(Image) 作用:容器的模板,只读。 容器(Container) 作用:镜像运行后的实例,可读写。 数据卷(Volume) 作用:数据持久化存储。 网络(Network) 作用:容器之间通信。 镜像操作 查看镜像 1 docker images 1 docker image ls 拉取镜像 1 docker pull nginx 1 docker pull nginx:1.25 参数说明: nginx:1.25 → 指定版本 tag(默认 latest) 删除镜像 1 docker rmi nginx 1 docker rmi -f nginx 1 docker image prune -f 参数说明: -f → 强制删除 prune → 删除未使用镜像 构建镜像 1 docker build -t myapp:1.0 . 参数说明: ...

December 2, 2025 · 3 min · 450 words

Linux常用操作

操作命令 ls:list ls -lh:human-readable,必须要搭配l才能展示出文件大小 ls /:查看/目录下的内容 mv move(重命名) mv test.txt test01.txt:改名的作用 rm remove rm -r:删除文件夹的 rm -f:不需要删除提示 rm 文件1 文件2 文件3:支持删除多个 find(查找文件) find / -name “test.txt”:从/目录下查找,文件名为"test.txt"的,支持通配符* grep(查找文件内容) grep test test.txt:从test.txt内容中过滤出test ll | grep test:ll的输出结果,作为grep test的输入,相当于从ll的结果中过滤出test。 注意:任何能输出内容的命令,都可以通过管道符与grep配合过滤 egrep 比grep多了正则匹配 例如:tail -20 test.txt | egrep “aaa|bbb”:查询包含aaa和bbb的 >和» 将左侧命令的输出内容,覆盖、追加到右侧的文件中 :覆盖 :追加 ll > test.txt tail tail -f -20 test.txt:实时查看test.txt最后的20行,默认10行 vim chmod:修改文件的读写执行权限 chmod u=rwx,g=rw,o=r hello.txt ...

November 2, 2025 · 1 min · 198 words

nginx指南

Nginx 操作手册 一、安装与启动 安装(Ubuntu) 1 sudo apt update 1 sudo apt install nginx -y 启动 / 停止 / 重启 1 sudo systemctl start nginx 1 sudo systemctl stop nginx 1 sudo systemctl restart nginx 1 sudo systemctl reload nginx 开机自启 1 sudo systemctl enable nginx 二、状态查看 查看运行状态 1 sudo systemctl status nginx 查看端口占用 1 lsof -i:80 1 ss -lntp | grep 80 三、配置文件结构 1 /etc/nginx/nginx.conf 1 /etc/nginx/conf.d/ 1 /etc/nginx/sites-enabled/ 1 /var/log/nginx/ 四、常用配置 基础 server 1 2 3 4 5 6 7 8 9 server { listen 80; server_name example.com; location / { root /usr/share/nginx/html; index index.html; } } 反向代理 1 2 3 location /api/ { proxy_pass http://127.0.0.1:8080; } 1 2 3 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 负载均衡 1 2 3 4 upstream backend { server 192.168.1.10:8080; server 192.168.1.11:8080; } 1 2 3 location / { proxy_pass http://backend; } HTTPS 1 2 3 4 5 6 7 8 9 10 11 server { listen 443 ssl; server_name example.com; ssl_certificate /etc/nginx/ssl/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/privkey.pem; location / { root /usr/share/nginx/html; } } 1 2 3 4 5 server { listen 80; server_name example.com; return 301 https://$host$request_uri; } 五、配置测试 1 nginx -t 1 nginx -s reload 六、日志 1 /var/log/nginx/access.log 1 /var/log/nginx/error.log 1 tail -f /var/log/nginx/access.log 1 tail -f /var/log/nginx/error.log 七、性能优化 1 2 gzip on; gzip_types text/plain text/css application/json application/javascript; 1 2 worker_processes auto; worker_connections 10240; 八、常见排查 1 lsof -i:80 1 nginx -t 1 pkill -9 nginx 九、生产建议 1 user nginx; 1 client_max_body_size 20m; 1 server_tokens off; 1 autoindex off; 十、Docker 中运行 1 docker run -d --name nginx -p 80:80 nginx 1 docker run -d -p 80:80 -v /host/nginx.conf:/etc/nginx/nginx.conf nginx 1 docker logs nginx

October 2, 2025 · 2 min · 272 words

docker从入门到入土

Docker介绍(重点) Docker初识 1 2 3 * 一款产品(软件)至少经过:开发、上线二套环境 开发人员:写好的代码本机可以运行 运维人员:部署代码时却无法运行 Docker概念 1 2 3 4 - Docker是一个开源的应用容器引擎,官网:https://www.docker.com - 诞生于2013年初,基于Go语言实现, dotCloud公司出品(后改名为Docker Inc) - Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上。 - 容器是完全使用沙箱机制,相互隔离。 Docker架构(重点) 1 2 3 4 5 6 7 8 9 10 11 12 13 * 仓库(Repository): - 仓库是集中存放镜像文件的场所。 - 仓库分为公开仓库(Public)和私有仓库(Private)两种形式。 * 镜像(Image) - 就是一个只读模板,比如:一个镜像可以包含一个完整的CentOS,里面仅安装jdk或用户的其他应用。 - 镜像可以用来创建docker容器。 * 容器(Container): - 镜像和容器的关系,就像是Java中的类和对象一样。 - 容器是从镜像创建的运行实例,它可以被启动、停止、 删除。 - 每个容器都是相互隔离的、保证安全的平台。 - 可以把容器看做是一个简易版的Linux 环境(包括root用户权限、进程空间、用户空间)和运行在其中的应用程序。 ==程序—->在容器中—–>由镜像创建出来的—->仓库下载过来的== ...

March 6, 2025 · 5 min · 1016 words

SpringSecurity学习

SpringSecurity从入门到精通 简介 ​ Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。 ​ 一般来说中大型的项目都是使用SpringSecurity 来做安全框架。小项目有Shiro的比较多,因为相比与SpringSecurity,Shiro的上手更加的简单。 ​ 一般Web应用的需要进行认证和授权。 ​ 认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户 ​ 授权:经过认证后判断当前用户是否有权限进行某个操作 ​ 而认证和授权也是SpringSecurity作为安全框架的核心功能。 快速入门 准备工作 ​ 我们先要搭建一个简单的SpringBoot工程 ① 设置父工程 添加依赖 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.0</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional>// true表示其他模块不会引入该依赖,避免依赖冲突;不设置optional或者optional是false,表示传递依赖。 </dependency> </dependencies> ② 创建启动类 ...

March 1, 2025 · 26 min · 5362 words