当前位置: 首页 > article >正文

AI编程新范式:UNIT-00:Berserk Interface结对编程实践与效果评估

AI编程新范式UNIT-00Berserk Interface结对编程实践与效果评估最近几个月我一直在尝试一种新的编程方式和AI结对编程。听起来有点科幻但实际体验下来感觉就像身边多了一个不知疲倦、知识渊博的编程伙伴。这次我深度体验了UNIT-00Berserk Interface以下简称Berserk想和大家分享一下一个真实的项目从零到一和AI一起完成是什么感觉。很多人可能觉得AI编程就是让AI写代码自己当甩手掌柜。其实完全不是这样。好的结对编程是人和AI的深度协作。AI负责处理那些繁琐、重复、需要快速检索知识的工作而人则负责把控方向、设计架构、审查逻辑和做出最终决策。这有点像从“自己开车”变成了“坐在副驾的领航员”车还是你在开但路线规划、路况提醒、甚至帮你递杯水的工作都有人分担了。这次我选择了一个不算复杂但很典型的后端服务项目一个简单的待办事项TodoAPI服务。麻雀虽小五脏俱全它涵盖了用户认证、数据增删改查、错误处理、单元测试和API文档等现代Web开发的常见环节。下面我就带你完整走一遍这个过程看看Berserk在各个阶段的表现到底怎么样。1. 项目启动与需求澄清任何项目的第一步都是搞清楚要做什么。以前这一步要么是自己闷头想要么是和产品经理反复沟通。现在我有了一个新的对话对象。我打开Berserk的聊天界面没有直接说“帮我写个Todo应用”而是像和同事沟通一样描述了背景和初步想法“我想构建一个个人使用的待办事项API服务后端用Python的FastAPI框架。它需要支持用户注册登录JWT token每个用户只能管理自己的待办事项。每个待办事项有标题、描述、完成状态和创建时间。需要完整的CRUD接口。另外我希望代码结构清晰有基本的错误处理并且最后能生成API文档。”Berserk的回复没有立刻跳转到代码而是先帮我梳理和确认需求“好的我们先明确一下这个Todo API的核心需求用户系统注册、登录返回JWT、获取当前用户信息。Todo管理针对登录用户实现创建、读取列表和详情、更新标记完成/修改内容、删除待办事项。技术栈Python, FastAPI, SQLite或你偏好的数据库JWT认证。工程要求清晰的模块化结构、输入验证Pydantic、统一错误响应、自动化API文档FastAPI自动提供。这是一个很好的起点。为了确保我们理解一致你能确认一下数据库的选择吗比如先用轻量级的SQLite本地开发”这个回复让我有点惊喜。它没有急于表现而是先做“需求确认”这恰恰是结对编程中非常重要的第一步——对齐认知。我回复确认使用SQLite并补充说希望使用SQLAlchemy作为ORM来保持灵活性。基于确认后的需求Berserk给出了一个初步的项目结构建议todo_api/ ├── app/ │ ├── __init__.py │ ├── main.py # FastAPI应用入口 │ ├── core/ # 核心配置安全、数据库等 │ ├── models/ # SQLAlchemy数据模型 │ ├── schemas/ # Pydantic模型请求/响应格式 │ ├── crud/ # 数据库增删改查操作 │ ├── api/ # 路由端点 │ └── tests/ # 单元测试 ├── requirements.txt └── README.md这个结构非常标准符合FastAPI社区的常见实践。它不是一个死板的模板而是一个可讨论的蓝图。我告诉它我觉得crud层可以暂时和api层合并让初期结构更简单它立刻表示赞同并调整了建议。这种“可讨论”的感觉是传统代码生成工具无法提供的。2. 核心模块的协同构建有了清晰的结构图我们就可以开始“施工”了。我采取的方式是由我驱动告诉Berserk接下来要构建哪个模块然后由它生成代码草案我来审查、修改和集成。2.1 数据模型与数据库配置我首先提出“我们先从数据模型开始吧。请创建用户User和待办事项Todo的SQLAlchemy模型并设置数据库连接。”Berserk很快给出了两个模型的代码。以Todo模型为例# app/models/todo.py from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, String, Text from sqlalchemy.orm import relationship from sqlalchemy.sql import func from app.db.base import Base # 假设我们有一个Base类 class Todo(Base): __tablename__ todos id Column(Integer, primary_keyTrue, indexTrue) title Column(String(100), nullableFalse) description Column(Text, nullableTrue) is_completed Column(Boolean, defaultFalse) created_at Column(DateTime(timezoneTrue), server_defaultfunc.now()) owner_id Column(Integer, ForeignKey(users.id), nullableFalse) # 关系 owner relationship(User, back_populatestodos)同时它也提供了数据库连接和会话管理的核心代码草案。我审查后发现它自动使用了created_at字段并设置了默认时间这个细节考虑得很周到。但我指出我希望updated_at字段来跟踪最后修改时间。它立刻道歉并提供了修改后的版本。这个交互过程很高效。我不需要去记忆SQLAlchemy每个字段的精确参数也不需要去查文档看时间字段如何设置默认值。我只需要提出概念“我们需要一个创建时间字段”AI就能给出符合最佳实践的实现草案而我则专注于业务逻辑是否正确“每个Todo必须属于一个User”。2.2 认证系统的实现接下来是棘手的JWT认证。我提出需求“现在实现用户认证。需要用户注册、登录校验密码并返回JWT Token的端点。密码需要哈希存储登录后其他端点需要Token保护。”Berserk的表现像是一个熟悉FastAPI生态的助手。它给出了以下关键代码片段密码工具使用passlib的bcrypt上下文。JWT工具生成和验证Token的函数包含了密钥、算法和过期时间的配置建议。依赖项一个get_current_user依赖注入函数用于在需要认证的路由中自动获取当前用户。# app/core/security.py from passlib.context import CryptContext from jose import JWTError, jwt from datetime import datetime, timedelta pwd_context CryptContext(schemes[bcrypt], deprecatedauto) def verify_password(plain_password, hashed_password): return pwd_context.verify(plain_password, hashed_password) def get_password_hash(password): return pwd_context.hash(password) # JWT相关函数...# app/api/deps.py from fastapi import Depends, HTTPException, status from fastapi.security import OAuth2PasswordBearer from app.core import security oauth2_scheme OAuth2PasswordBearer(tokenUrllogin) async def get_current_user(token: str Depends(oauth2_scheme)): credentials_exception HTTPException(...) try: payload security.decode_access_token(token) user_id: int payload.get(sub) if user_id is None: raise credentials_exception except JWTError: raise credentials_exception user crud.user.get(db, user_id) # 需要注入db session if user is None: raise credentials_exception return user它甚至提醒我“get_current_user依赖项需要数据库会话你可能需要在路由层面通过依赖注入引入db或者使用中间件。常见的做法是创建一个get_db依赖项。” 这体现了它对FastAPI设计模式的理解。2.3 API端点的快速迭代构建完基础设施编写业务端点就快多了。我给出指令“现在实现Todo的CRUD端点。所有端点都需要认证。列出Todo时只返回当前用户的。”Berserk几乎是在我发送指令的瞬间就生成了一个完整的todos.py路由文件草案。包括GET /todos/,POST /todos/,GET /todos/{id},PUT /todos/{id},DELETE /todos/{id}。代码结构清晰使用了Pydantic模型进行请求验证和响应序列化错误处理也考虑到了“未找到”和“无权访问”的情况。我扮演了代码审查者的角色。我指出“在更新Todo的端点里你用了todo.update(update_data.dict(exclude_unsetTrue))这个exclude_unsetTrue用得挺好可以局部更新。但请确保传入的update_data是TodoUpdateschema而不是TodoCreate。”它接受了反馈并修正了schema的定义和用法。这种即时反馈和修正的循环极大地加快了开发速度并且保证了代码质量。3. 测试与文档的自动化辅助功能开发告一段落但一个完整的项目还需要测试和文档。这是AI非常擅长的领域。3.1 单元测试的生成我对Berserk说“为GET /todos/和POST /todos/这两个端点编写Pytest单元测试。需要测试认证失败的情况和成功的情况。”它生成的测试代码超出了我的预期。它不仅写了测试函数还搭建了完整的测试夹具fixture包括测试客户端、覆盖认证的测试用户创建和Token生成、以及每个测试后的数据库清理。# app/tests/test_todos.py import pytest from fastapi.testclient import TestClient from sqlalchemy.orm import Session def test_create_todo_authenticated(client: TestClient, test_user_token_headers: dict): 测试认证用户创建Todo data {title: Test Todo, description: Test Description} response client.post(/todos/, jsondata, headerstest_user_token_headers) assert response.status_code 200 content response.json() assert content[title] data[title] assert content[owner_id] 1 # 假设测试用户ID为1 def test_read_todos_unauthenticated(client: TestClient): 测试未认证用户访问列表应失败 response client.get(/todos/) assert response.status_code 401它甚至为不同的测试场景成功、失败、边界条件生成了多个用例。我只需要运行这些测试并根据实际情况微调数据库连接和断言即可。这节省了我大量编写样板测试代码的时间。3.2 文档的补充与整理FastAPI虽然能自动生成交互式API文档但项目的README.md和代码中的文档字符串docstring仍然很重要。我让Berserk“为项目主模块和主要的Pydantic模型添加Google风格的docstring并生成一个简单的README.md包含项目简介、安装步骤和运行方法。”它出色地完成了任务。生成的README.md结构清晰包含了pip install -r requirements.txt、uvicorn app.main:app --reload等标准命令。为代码添加的docstring也格式规范描述了参数、返回值和可能抛出的异常。这虽然不是核心业务逻辑但却是项目可维护性和协作性的关键。AI自动化这部分工作让我能更专注于逻辑本身。4. 效果评估与真实感受经过这样一个完整项目的协作我对AI结对编程有了更具体的认识。下面从几个维度总结一下Berserk的表现优势与高光时刻知识检索与代码生成速度极快这是最明显的优势。无论是SQLAlchemy的模型定义、FastAPI的依赖注入还是Pydantic的复杂验证我无需离开编辑器去搜索文档。只需用自然语言描述意图就能得到可用的代码草案开发流程变得异常流畅。减少上下文切换与认知负荷编程时常需要在脑海中和编辑器、终端、浏览器文档之间来回切换。AI助手将这些上下文整合在一个聊天窗口里。思考“如何用SQLAlchemy设置一个带时区的时间戳默认值”时答案直接出现在我思考的流中思维不被中断。优秀的“草案作者”和“细节提醒者”它非常擅长根据我的高层描述快速生成结构良好、符合惯例的代码草案。同时它能注意到我可能忽略的细节比如密码哈希、JWT过期、局部更新数据exclude_unset、测试后的数据清理等。提升测试与文档的完整性编写测试和文档往往是开发中最枯燥的部分。AI能快速生成覆盖基础场景的测试用例和格式规范的文档骨架我只需进行审查和补充这大大提高了项目的完整度。局限与需要注意的地方它不负责“设计”与“决策”AI无法替代架构师。项目整体采用MVC还是DDD数据库选型是SQLite还是PostgreSQL何时引入缓存这些决策必须由开发者做出。AI只是一个高效的执行者。代码需要“审查”而非“信任”AI生成的代码并非总是完美或最优。有时它会采用过时的方法或对复杂业务逻辑的理解出现偏差。我的角色从“编写者”变成了“审查与集成者”这要求我对代码有更强的理解力和批判性思维。对复杂、模糊需求的处理能力有限当需求描述不够精确时AI容易产生误解。例如我说“需要一个权限系统”它可能生成一个简单的角色模型但无法理解我心中复杂的多租户权限体系。清晰的沟通变得比以往任何时候都重要。可能产生“幻觉”在极少数情况下AI会引用不存在的库函数或API。虽然Berserk在这方面的表现很稳定但开发者仍需对关键代码保持警惕不能盲目复制粘贴。对我工作流的真实改变最大的改变是我不再“孤独地编程”。以前遇到问题我需要打断思路去搜索现在我可以像问同事一样自然提问。整个编程过程更像是一场持续的、高带宽的对话。我将更多脑力资源分配给了系统设计、业务逻辑梳理和代码质量审查而将语法记忆、API查阅和样板代码编写交给了AI。它没有让我失业而是让我更像一个“技术领航员”和“资深工程师”去处理更有价值的工作。整体体验下来与UNIT-00Berserk Interface的结对编程是一次非常高效和愉悦的旅程。它显著加速了从想法到原型的过程特别是在搭建项目骨架、实现标准功能和编写配套代码方面。它就像一个反应迅速、知识全面的初级开发者能够完美地执行清晰的指令。当然它无法替代工程师的核心价值——创造性解决问题、做出技术权衡和设计复杂系统。未来的AI编程或许不是“AI取代程序员”而是“会使用AI的程序员取代不会使用AI的程序员”。掌握与AI协作的技巧清晰地表达需求有效地审查和集成AI的输出将成为开发者新的核心竞争力。如果你还没试过我强烈建议你找一个具体的项目亲自体验一下这种新的编程范式它可能会改变你对“写代码”这件事的看法。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关文章:

AI编程新范式:UNIT-00:Berserk Interface结对编程实践与效果评估

AI编程新范式:UNIT-00:Berserk Interface结对编程实践与效果评估 最近几个月,我一直在尝试一种新的编程方式:和AI结对编程。听起来有点科幻,但实际体验下来,感觉就像身边多了一个不知疲倦、知识渊博的编程…...

Qwen3-ASR-0.6B效果展示:儿童语音(发音不标准+语速快)识别准确率实测

Qwen3-ASR-0.6B效果展示:儿童语音(发音不标准语速快)识别准确率实测 1. 测试背景与目的 语音识别技术在日常生活中的应用越来越广泛,从智能助手到在线教育,都离不开准确的语音转文字功能。但在实际使用中&#xff0c…...

四机两区风储调频建模踩坑实录

四机两区 风储虚拟惯量调频仿真simulink建模复现(附带参考文献 【风力发电;储能;频率特性;惯性调节;变桨距控制】最近在复现风储联合调频的Simulink模型时,发现虚拟惯量这块的水比想象的深。特别是把风电和…...

基于CNN-LSTM的的锂离子电池健康状态SOH估计; 主要算法如下: 1、首先提取放电电压最...

基于CNN-LSTM的的锂离子电池健康状态SOH估计; 主要算法如下: 1、首先提取放电电压最低点时间 平均放电电压 平均放电温度作为锂电池间接健康因子; 2、然后建立CNN-LSTM联合模型的SOH锂电池健康状态评估模型。 3、最后 NASA 卓越预测中心的锂电池数据集 B…...

[电池SOC估算案例]: 使用Bilstm网络来实现锂电池SOC估计的算法(基于matlab编...

[电池SOC估算案例]: 使用Bilstm网络来实现锂电池SOC估计的算法(基于matlab编写) 1.使用锂离子电池间隔恒流放电数据集来完成,可更换恒流放电数据 2.提取电池的恒流充电放电中的电流与电压变量作为健康特征。 3.使用Bilstm网络来建立电池的SOC…...

Hensoldt 与 UMS 签署 GaN 供应协议

该协议旨在确保用于 Spexer 雷达系列设备的供应德国国防公司 Hensoldt 已与 United Monolithic Semiconductors (UMS) 签署了一项长期供应协议。到 2030 年,UMS 将为 Hensoldt 雷达提供总计 90 万个 GaN(氮化镓)半导体组件。GaN 半导体用于现…...

意法半导体扩展 800 VDC 电源转换产品组合

12V、6V 解决方案补充了现有的 800 VDC 至 50V 中间级解决方案意法半导体(STMicroelectronics)扩展了其 800 VDC 电源转换产品组合,推出了两种新架构:800 VDC 转 12V 和 800 VDC 转 6V。这些新的电源转换级是根据 NVIDIA 800 VDC …...

高效批量重命名.txt文件的两种实用方法

1. 为什么需要批量重命名.txt文件 在日常工作中,我们经常会遇到需要处理大量文本文件的情况。比如你可能收集了几百份用户反馈,每份都保存为.txt格式;或者下载了多个章节的电子书,每个章节都是一个单独的文本文件。这些文件可能来…...

三相交错并联LLC的Matlab/Simulink仿真:变频控制与软开关ZVS、ZCS技术

三相交错并联LLC仿真 Matlab/simulink仿真 变频控制 软开关ZVS,ZCS最近在搞三相交错并联LLC的仿真,发现这玩意儿比想象中带劲。特别是用Matlab/Simulink搭模型的时候,参数整定和波形调试真能让人玩出心流体验。今天就手把手带你们盘一盘这个仿真套路&…...

Docker小白也能搞定!极空间NAS上5分钟部署Memos私有笔记(附避坑指南)

Docker新手福音:极空间NAS极速部署Memos私有笔记全攻略 作为一个长期在多设备间切换的数字游民,我深知碎片化信息管理的痛苦。手机备忘录里的灵感、平板上的待办事项、电脑浏览器收藏的网页——这些散落各处的信息孤岛,直到遇见Memos才真正实…...

横向对比:国内主流AI认证优势盘点,考证爱好者该怎么选?

AI风口下,越来越多考证爱好者加入AI认证的行列——有人想通过考证系统学习AI知识、拓宽技能边界,有人想凭借认证丰富履历、为未来职业发展铺路,也有人单纯出于兴趣,想深耕AI领域、掌握实用技能。但面对市面上五花八门的国内AI认证…...

SM4国密算法在JDK1.7与JDK1.8中的跨版本兼容性实践与工具类优化

1. SM4国密算法与JDK版本兼容性概述 SM4作为我国自主设计的商用密码算法,在金融、政务等领域应用广泛。但在实际开发中,很多团队会遇到一个典型问题:为什么在JDK1.8环境开发的SM4加密工具,放到JDK1.7服务器就跑不通了?…...

从零构建:基于Waterfall的MC多服网络架构实战

1. 为什么需要Waterfall多服架构? 很多MC服主都会遇到这样的问题:随着玩家数量增加,单一服务器越来越卡顿。你可能尝试过升级硬件,但很快发现这治标不治本。这时候就需要考虑多服架构了——把不同类型的游戏内容分散到不同服务器上…...

探索HFI脉振方波高频注入与增强滑膜ESMO代码的奇妙世界

HFI脉振方波高频注入代码 增强滑膜esmo代码 配套有文档,学习的好东西 1esmo和 hfi详细开发文档最近发现了一组超棒的代码和文档,对于电机控制等相关领域的小伙伴绝对是学习的宝藏,今天就来和大家分享下HFI脉振方波高频注入代码以及增强滑膜ES…...

U盘频繁提示“驱动器存在问题”?三步教你彻底修复并预防

1. 为什么U盘会频繁提示"驱动器存在问题"? 每次插入U盘都弹出那个烦人的提示框,相信很多人都遇到过。作为一个经常和数据打交道的老手,我见过太多因为这个小问题而抓狂的用户。其实这个提示背后隐藏着几个常见原因,弄清…...

2026别错过!9个AI论文网站全场景通用测评,开题报告到毕业论文一键搞定

在2026年的学术研究与论文写作场景中,AI工具已成为不可或缺的得力助手。然而,面对市场上琳琅满目的AI写作平台,如何快速找到真正适合自己需求的工具,成为许多学者和学生的难题。本次测评基于真实用户使用数据与功能实测&#xff0…...

定稿前必看!AI论文软件 千笔写作工具 VS 万方智搜AI,开源免费首选

在论文写作的道路上,每一个细节都可能成为阻碍前行的绊脚石。从选题方向的迷茫到大纲结构的混乱,从初稿内容的匮乏到文献资料的筛选,再到降重查重的反复修改,以及格式排版的繁琐调整,每一步都需要耗费大量的时间和精力…...

QWEN-AUDIO在教育行业落地:AI助教语音合成+情感语调适配方案

QWEN-AUDIO在教育行业落地:AI助教语音合成情感语调适配方案 1. 教育场景中的语音合成需求 在教育领域,语音合成技术正在从简单的文本转语音,向更具情感和表现力的方向发展。传统的机械式语音缺乏感染力,难以吸引学生的注意力&am…...

DTS6012M dToF测距模块Arduino驱动详解

1. DTS6012M dToF测距模块Arduino库深度解析1.1 模块技术定位与工程价值DTS6012M是一款基于直接飞行时间(Direct Time-of-Flight, dToF)原理的高精度激光测距模块,由Polaris IC公司设计。与传统三角测距或间接ToF方案相比,dToF通过…...

DeepSeek-OCR-2惊艳效果:老旧印刷品(油墨不均/纸张泛黄)高保真还原

DeepSeek-OCR-2惊艳效果:老旧印刷品(油墨不均/纸张泛黄)高保真还原 1. 引言:当AI遇见历史文献 想象一下,你手里有一本泛黄的旧书,纸张脆弱,油墨已经晕染,字迹模糊不清。这可能是家…...

智能车极速越野组避坑指南:GPS与惯导模块数据融合的那些‘坑’

智能车极速越野组避坑指南:GPS与惯导模块数据融合的那些‘坑’ 当你第一次看到智能车在赛道上漂移、转向不精准时,那种挫败感我深有体会。去年带队参赛时,我们的L车模硬件配置堪称豪华——MM32SPN27主控、DRV8701电机驱动、维特智能HWT101惯导…...

深入解析GCC内建函数:从定义到汇编指令的转换机制

1. GCC内建函数的前世今生 第一次接触GCC内建函数时,我正为一个图像处理算法做性能优化。当时发现标准库的数学函数调用开销太大,同事随口说了句"试试__builtin开头的函数"。结果性能直接提升了30%,这让我对内建函数产生了浓厚兴趣…...

MBD_实战篇_01_从模型到芯片:手把手搭建代码生成与集成编译环境

1. 从Simulink模型到芯片的完整开发流程 第一次接触MBD(Model-Based Development)开发时,我被这种开发方式的效率震惊了。传统嵌入式开发需要一行行手写代码,而MBD只需要搭建好模型,点击几下鼠标就能自动生成可用的C代…...

别再为上传进度条发愁了!基于MinIO 8.5.3与Spring,手把手实现带进度管理的文件上传组件

构建高体验文件上传组件:MinIO 8.5.3与Spring深度整合实战 在数字化办公场景中,文件上传是高频刚需功能,但传统方案常面临三大痛点:大文件上传超时失败、网络波动导致重复传输、用户无法感知上传状态。本文将基于MinIO 8.5.3的对象…...

FPGA与射频芯片的黄金组合:AD9371与AD9009在5G通信中的实战解析

1. 当FPGA遇上射频芯片:5G时代的黄金搭档 第一次接触FPGA和射频芯片的组合时,我完全被它们的默契配合惊艳到了。就像咖啡遇上牛奶,这两种看似不同的技术碰撞出了5G通信的无限可能。AD9371和AD9009这对射频芯片界的"双子星"&#xf…...

105. 从前序与中序遍历构造二叉树(C语言高质量题解)

📌 一、题目描述给定两个整数数组 preorder 和 inorder:preorder 是二叉树的前序遍历inorder 是同一棵树的中序遍历请构造二叉树并返回其根节点。🧠 二、核心思路(必须吃透)1️⃣ 遍历特性前序遍历:root -&…...

[特殊字符]【LeetCode 106】从中序与后序遍历构造二叉树(C语言详解|递归+区间划分)

📌 一、题目描述给定两个数组:inorder:中序遍历(左 → 根 → 右)postorder:后序遍历(左 → 右 → 根)要求:构造并返回这棵二叉树🔹 示例输入: ino…...

给匿名无人机加个“大脑”:树莓派扩展平台从建模到安装实战

给匿名无人机加个“大脑”:树莓派扩展平台从建模到安装实战 当无人机从简单的飞行玩具进化成具备自主决策能力的智能设备时,硬件扩展平台的设计就成为了关键。本文将带您深入探索如何为匿名飞控无人机打造一个专业的树莓派扩展系统,从3D建模到…...

Verilog测试bench实战:用Modelsim快速验证与门逻辑(含$random函数详解)

Verilog测试bench实战:用Modelsim快速验证与门逻辑(含$random函数详解) 在FPGA开发流程中,功能验证往往占据70%以上的时间成本。如何构建高效的验证环境,成为工程师提升生产力的关键突破口。本文将带您从零搭建一个完整…...

基于STM32F103C8T6与HX711的称重系统实战:从零搭建到数据校准

1. 硬件选型与电路连接 第一次接触称重系统开发时,最让我头疼的就是硬件选型。市面上各种型号的称重传感器和ADC芯片让人眼花缭乱,经过多次踩坑后,我发现STM32F103C8T6HX711这个组合特别适合新手入门。STM32F103C8T6作为经典的Cortex-M3内核M…...