需用“身份-材料-任务-格式-兜底”五要素精准约束AI:明确角色与权限、限定输入文件范围、动词开头定义动作并用“只…不…”锚定边界、强制纯代码输出格式、设置失效兜底条件。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你想让码上飞AI只按你设定的规则生成代码,不擅自添加功能、不改技术栈、不乱用第三方库,就得在提问时就把它“关进笼子”。模糊说“写个登录接口”,它可能给你带OAuth2、JWT、Redis缓存、短信双因素的一整套微服务方案——而你项目里连Node.js都没上,只用原生PHP写了个表单提交。
用“身份-材料-任务-格式-兜底”五要素锁定需求边界
第一步:明确告诉AI它的角色和你的身份。例如“你是一名熟悉Laravel 10的后端工程师,我是一名刚接手遗留系统的初级开发,系统禁用任何Composer新包”——这一步直接封死AI调用外部依赖的冲动。
第二步:限定输入材料范围。“只基于我提供的3个文件:routes/web.php、app/Http/Controllers/AuthController.php、resources/views/login.blade.php”——【AI若读取未提供的文件或凭空虚构路由名,输出即失效】。
第三步:动词开头定义动作。“在AuthController.php中新增validateLoginRequest方法,只校验email格式与password长度(6-20位),不连接数据库,不调用任何Service类”——这里用“只…不…”句式双重锚定行为边界。
第四步:强制输出格式。“返回纯PHP代码块,不加解释,不加注释,不包含use语句,首行以
第五步:设定兜底规则。“若blade模板中无csrf_token字段,不自行补全,直接报错提示‘缺失CSRF防护’”——这步让AI放弃“好心办坏事”,把问题显性化交还给你判断。
三类高频越界行为及对应约束写法
方法一:防技术栈漂移
错误提问:“写个用户注册接口”
正确约束:“用ThinkPHP 6.1原生验证器实现,禁止使用Traits、Event、Command,所有逻辑写在app/controller/User.php的register方法内”——【ThinkPHP 6.1不支持模型事件监听,AI若写onUserRegistered会被执行失败】。
方法二:防功能冗余
错误提问:“生成Excel导出功能”
正确约束:“仅输出一个downloadReport()函数,接收$id参数,调用Db::name('order')->where('id',$id)->select()获取数据,用PhpSpreadsheet 1.24.0基础Writer写入.xlsx,不压缩、不分页、不加样式、不触发下载头”——排除项比包含项更管用。
方法三:防隐性假设
错误提问:“处理上传图片”
正确约束:“上传路径固定为/public/uploads/temp/,文件名用md5(原始名+时间戳),不校验MIME类型,不重命名扩展名,不生成缩略图,不检查磁盘空间”——把AI默认会做的“安全加固”全部踩住刹车。
实操检验:用测试用例反向约束AI输出
在提示词末尾追加一句:“以下是你必须通过的测试用例:①传入['name'=>'张三','age'=>25],返回['code'=>0,'msg'=>'success'];②传入['name'=>'','age'=>0],返回['code'=>1,'msg'=>'参数错误'];③传入['name'=>'李四'],返回['code'=>1,'msg'=>'缺少age字段']。不满足任一用例则重写。”
这一步把验收标准前置,AI会自动对齐你项目的错误码体系和字段必填逻辑,而不是按它记忆里的RESTful规范胡编。
复制完整提示词到码上飞AI对话框,点击发送。











