CodeWiz:coding-agent harness的全栈应用构建平台(next.js+go+python)
CodeWiz:AI 全栈应用构建平台
不用写一行代码,用日常语言描述需求,AI 自动生成完整可运行项目。支持 14 种开发工具,覆盖从代码编写到启动预览的全流程。
一、项目简介
在日常开发中,重复性的代码工作占据了大量时间——CRUD 页面、API 对接、配置文件,这些工作模式固定但耗时。
CodeWiz 正是为解决这个痛点而生:用户只需要用自然语言描述需求,AI 就能自动分析、生成、运行完整的项目代码。
比如,输入"帮我写一个待办事项应用,要求支持添加、完成、删除操作,数据保存在本地",AI 会:
- 创建完整的项目结构
- 生成所有代码文件
- 自动启动开发服务器
- 返回一个可访问的预览链接
整个过程,用户只需要说一句话。

此项目前端根据 https://github.com/freestyle-sh/Adorable 的前端界面,后端使用go+python重构。同时通过学习 https://github.com/shareAI-lab/learn-claude-code 来构建coding-agent harness。感谢大佬们开源。本项目作者遵守开源协议,仅用于学习与交流。
二、核心功能
2.1 自然语言对话生成
用户在对话界面输入需求描述,AI 自动解析并生成代码。前端使用 Vercel AI SDK 与后端通信,支持流式响应(逐字展示 AI 的思考过程)。
2.2 实时预览
代码生成后自动启动开发服务器,用户可以立即看到运行效果。预览 URL 实时返回,无需手动刷新。
2.3 14 种开发工具
Agent 在生成代码的过程中,会自主调用多种工具完成实际工作:
| 工具类型 | 具体能力 |
|---|---|
| 文件读写 | 读取文件、写入/覆盖文件、替换文件中指定文本 |
| 目录操作 | 列出目录内容、搜索文件内容、创建目录、移动/重命名、删除 |
| 终端命令 | 执行 bash/shell 命令 |
| 开发服务器 | 启动 dev server、获取预览 URL、检查应用状态、读取运行日志 |
| Git 操作 | 自动 commit 代码更改 |
2.4 安全沙箱隔离
每个项目运行在独立的沙箱进程中,通过确定性哈希算法将项目 ID 映射到固定端口,重启后端口保持一致,避免冲突。

三、技术架构
3.1 三语言微服务架构
项目同时使用 TypeScript、Go、Python 三种语言,每种语言负责最适合的场景:
| 语言 | 职责 | 框架/工具 |
|---|---|---|
| TypeScript | 前端界面,紧跟 React 生态 | Next.js 16 + Tailwind CSS 4 + AI SDK |
| Go | 高并发 API 请求处理 | Gin + GORM + JWT |
| Python | AI/ML 逻辑,异步 LLM 调用 | FastAPI + LangChain |
3.2 系统架构图
┌─────────────────────────────────────────────────────────────────────┐
│ Nginx (反向代理/SSL) │
│ 端口: 80 / 443 │
└─────────────────────────────┬───────────────────────────────────────┘
│
┌────────────────────┼────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Frontend │ │ Backend │ │ AI Service │
│ Next.js 16 │ │ Go + Gin │ │ FastAPI │
│ 端口 3000 │ │ 端口 8080 │ │ 端口 8000 │
│ │ │ │ │ │
│ • App Router │ │ • JWT 认证 │ │ • LLM 流式调用 │
│ • AI SDK │ │ • REST API │ │ • Agent 执行循环│
│ • 实时预览 │ │ • GORM ORM │ │ • 工具系统 │
│ • Tailwind 4 │ │ • PostgreSQL │ │ • 沙箱管理 │
└─────────────────┘ └────────┬────────┘ └────────┬────────┘
│ │
└─────────┬──────────┘
▼
┌─────────────────────┐
│ PostgreSQL │
│ 端口 5432 │
└─────────────────────┘
│
┌─────────┴─────────┐
▼ ▼
┌──────────────┐ ┌──────────────┐
│ 项目A 沙箱 │ │ 项目B 沙箱 │
│ :31000 │ │ :31001 │
└──────────────┘ └──────────────┘
3.3 技术选型理由
| 服务 | 技术 | 选型原因 |
|---|---|---|
| 前端 | Next.js 16 | App Router + Server Actions,减少客户端 JS 体积,SSR 对 SEO 友好 |
| 后端 | Go + Gin | goroutine 处理高并发请求,中间件设计简洁,GORM 操作数据库很方便 |
| AI 服务 | FastAPI | 原生异步支持,与 Python AI 生态无缝集成,流式响应性能优秀 |
| 数据库 | PostgreSQL | JSONB 字段存储工具调用记录,兼顾结构化查询和灵活扩展 |
| LLM | 硅基流动 | 国产优质 API,支持多种模型,按 token 计费 |
| 网关 | Nginx | 成熟的反向代理方案,支持 SSL 终结和负载均衡 |
四、核心模块详解
4.1 前端(Next.js)
frontend/
├── app/
│ ├── assistant.tsx # AI 对话核心组件
│ ├── layout.tsx # 根布局
│ ├── page.tsx # 首页
│ ├── auth/login/ # 登录页
│ ├── auth/register/ # 注册页
│ └── [repoId]/ # 动态路由(项目工作区)
│ └── [conversationId]/ # 会话详情
├── components/
│ └── assistant-ui/ # 对话 UI 组件库
└── lib/
├── auth-context.tsx # 认证上下文
└── repos-context.tsx # 项目上下文
前端使用 @assistant-ui/react 构建对话界面,通过 Vercel AI SDK 的 useChat hook 处理 SSE 流式响应,Zustand 做轻量状态管理。
4.2 后端(Go + Gin)
backend/
├── cmd/server/main.go # 程序入口
├── internal/
│ ├── config/config.go # 配置管理(环境变量映射)
│ ├── router/router.go # Gin 路由注册
│ ├── middleware/auth.go # JWT 鉴权中间件
│ ├── handlers/ # HTTP 处理器
│ │ ├── auth_handler.go # 登录/注册/登出
│ │ ├── project_handler.go # 项目 CRUD
│ │ └── conversation_handler.go
│ ├── services/ # 业务逻辑层
│ └── repositories/ # 数据访问层(GORM)
└── pkg/response/response.go # 统一 API 响应格式
采用分层架构:Handler → Service → Repository → Database。GORM AutoMigrate 负责数据库迁移,启动时自动创建/更新表结构。
4.3 AI 服务(FastAPI)
ai-service/
├── app/
│ ├── main.py # FastAPI 应用入口
│ ├── api/
│ │ ├── chat.py # 流式对话 API(SSE)
│ │ ├── conversation.py # 会话管理
│ │ ├── auth.py # 用户认证
│ │ └── sandbox.py # 沙箱管理
│ ├── harness/
│ │ ├── agent.py # LangChain Agent 执行循环
│ │ ├── tools.py # 14 个工具定义
│ │ └── sandbox_manager.py # 项目沙箱管理器
│ └── llm/
│ └── silicon_flow.py # 硅基流动 LLM 客户端
└── requirements.txt
Agent 执行循环的核心逻辑:
llm = llm.bind_tools(tools) # 绑定 14 个工具
while iteration < max_iterations:
response = await llm.ainvoke(messages)
if response.tool_calls: # LLM 决定调用工具
for tool_call in response.tool_calls:
result = dispatch_tool(tool_call.name, tool_call.args)
messages.append(ToolMessage(content=str(result), tool_call_id=tool_call.id))
else: # 无工具调用,输出最终结果
yield StreamEvent(type="finish", content=response.content)
return
五、技术亮点
5.1 JWT 跨服务认证
Go Backend 和 Python AI Service 都需要验证用户身份。为避免 JWT 库差异导致的问题,AI 服务验证 JWT 时回调 Go Backend 的接口,由后端统一处理。
用户登录 → Go Backend 生成 JWT(HS256, 7天有效期)
↓
前端存储 Token,每次请求携带 Bearer Token
↓
AI 服务需要验证时,回调 Backend 的 /auth/verify 接口
5.2 确定性沙箱端口映射
每个项目通过 FNV 哈希算法映射到固定端口,同一项目 ID 始终映射到相同端口,重启后不变:
def _project_id_hash_port(project_id: str) -> int:
h = 2166136261
for ch in project_id.encode():
h ^= ch
h = (h * 16777619) & 0xFFFFFFFF
return SANDBOX_PORT_START + (h % SANDBOX_PORT_COUNT)
5.3 SSE 流式响应
LLM 响应通过 Server-Sent Events 实时推送,前端逐字展示:
async def chat(request: ChatRequest):
async def generate():
async for event in agent.run(messages):
if event.type == "content":
yield f"data: {json.dumps({'type': 'text', 'content': event.content})}\n\n"
return StreamingResponse(generate(), media_type="text/event-stream")
六、Docker Compose 一键部署
项目通过 Docker Compose 实现容器化部署,所有服务一键启动:
# 1. 克隆项目
git clone https://github.com/codewiz/codewiz.git
cd CodeWiz
# 2. 配置环境变量
cp .env.example .env
# 编辑 .env 填入必要配置
# 3. 启动所有服务
docker-compose up -d --build
# 4. 验证服务状态
docker-compose ps
# 5. 访问应用
open http://localhost
环境变量说明
| 变量名 | 必填 | 说明 |
|---|---|---|
DATABASE_URL |
✅ | PostgreSQL 连接地址 |
JWT_SECRET |
✅ | JWT 签名密钥 |
SILICON_FLOW_API_KEY |
✅ | 硅基流动 API Key |
LLM_MODEL |
模型名称,默认 Qwen/Qwen2.5-7B-Instruct |
七、项目成果
| 功能 | 状态 |
|---|---|
| 用户认证体系(注册/登录/JWT) | ✅ 已完成 |
| 流式对话(SSE + Agent) | ✅ 已完成 |
| 14 个开发工具 | ✅ 已完成 |
| Docker Compose 一键部署 | ✅ 已完成 |
| 实时预览 | ✅ 已完成 |
| GitHub 仓库导入 | ✅ 已完成 |
八、未来规划
- 向量数据库 + RAG 知识增强
- WebSocket 双向实时通信
- 多租户隔离(企业版)
- 支持更多 LLM 提供商(OpenAI、Anthropic 等)
- 团队协作(多人实时编辑)
- 项目模板市场
九、项目地址
https://github.com/codewiz/codewiz
如果你觉得这个项目有帮助,欢迎点个 ⭐ 支持一下。有问题或想法?欢迎提 Issue 和 PR,一起探索 AI 开发工具的更多可能性。
技术栈:Next.js 16 + Go + Gin + FastAPI + PostgreSQL + Docker
许可证:MIT
更多推荐


所有评论(0)