要让CodeBuddy智能体准确理解“你是谁、该做什么、在哪些场景下不能越界”,训练数据的质量至关重要。依赖零散对话远远不够,效率低下。我们需要结构清晰、语义精准、带有约束边界的四大类数据——这相当于为AI构建了一个完整的认知框架,而不是让它从杂乱无章的对话日志中自行摸索。

角色定义数据:明确身份与边界
首先,在skills/role_definition/目录下新建backend_engineer.md文件。这相当于给AI发放一本“员工手册”,使用YAML+Markdown混合格式声明角色身份、职责范围和硬性禁令。手册必须包含四个核心字段:role_name(角色名称)、scope(允许操作的文件类型与路径模式)、forbidden_actions(明确禁止的行为,例如执行rm -rf /、读取.env文件)、以及default_toolset(默认工具集)。需要特别注意:scope字段如果写成**/*.py而未限定根目录,会导致AI在任意嵌套层级遍历代码,很可能误触测试环境配置,这是实战中容易踩的坑。
接下来,为这个角色补充3到5条典型用户指令示例。每条示例都需要标注意图标签(intent)和应触发的技能模块名(expected_skill)。举个例子:用户说“请把UserService.java里所有硬编码的超时值改成可配置参数”,对应的意图标签是refactor_configurable_timeout,触发的技能模块是java-refactor-timeout。这样做的目的是让AI能够“对号入座”,精准调用正确的处理逻辑。
行为示范数据:真实任务执行轨迹
有了角色定义,还需要展示“怎么做”的完整过程。这里有两种方法。
方法一:人工录制高质量操作链
打开CodeBuddy IDE,启用Agent Trace Recorder插件,然后亲自动手执行一个完整闭环任务——比如“修复Spring Boot Controller中NPE异常”。关键在于,每一步操作都要包含工具调用、上下文切换、错误回退与最终验证。录制结束后导出.trace.jsonl文件,仔细检查几个关键点:tool_calls字段是否包含合法命令、file_context是否只加载了必要的文件、error_handling节点是否体现了重试逻辑。这就像给AI看一套“教学录像”,让它学得有模有样。
方法二:用CodeBuddy Code引擎自动生成带校验的示范
这个方法效率更高。调用codebuddy-code --mode=generate-trace --task="add pagination to Django ListView",自动生成10条任务执行轨迹。但别急着用——需要用trace-validator脚本过滤掉那些有问题的样本,比如包含未声明权限的shell_exec调用,或者read_file路径超出scope限制的。最终保留的每条轨迹必须通过context_minimality_score > 0.85的阈值。这个分数由AST节点覆盖率与无关行剔除率联合计算得出,简单说就是衡量AI是否“只说必要的话、只做必要的事”。
约束强化数据:越界行为负样本
光教AI怎么做还不够,还要教它“什么不能做”。这就像给孩子立规矩,需要准备一些“反面教材”。
第一步,构造三类典型越界指令:
① 权限越界型:“读取项目根目录下的secrets.yaml”;
② 工具滥用型:“用curl直接调用生产数据库API”;
③ 上下文污染型:“忽略当前打开的React组件文件,去修改webpack.config.js”。
第二步,为每条越界指令设计标准拒答响应模板。这里不是简单回复“我不能做”,而是有一套规范的输出流程:首句必须声明权限边界(例如“根据角色设定,我无权访问非src目录下的配置文件”);次句给出合规替代路径(例如“建议您将敏感配置通过环境变量注入,并在src/config/下新建env-loader.ts统一处理”);末句主动提供辅助动作(例如“需要我帮您生成该loader的TypeScript骨架代码吗?”)。
第三步,将拒答响应与原始越界指令配对,存入data/constraints/negative_samples/目录,文件命名格式为backend_engineer-001-v2.json,确保input与output字段严格对齐。这条规矩很重要:output中不能有任何模型自由发挥的内容,必须严格遵循模板规范。
领域知识注入数据:动态加载的上下文锚点
最后,在skills/java-springboot/references/下放置三类文件:
① architectural_constraints.md:明确项目采用分层架构,例如Controller层禁止直接调用DAO,Service层必须抛出业务异常而非RuntimeException;
② code_style_guide.json:规定Lombok注解的使用规则,比如@Data禁用于Entity类,@Builder必须配合@NoArgsConstructor;
③ common_patterns/子目录:存放5个高频模板文件,例如rest-api-error-handler.java。每个模板头部都用标记唯一ID,供技能匹配系统识别。
这步操作不做任何训练数据打包,而是确保文件物理存在且元数据可被CodeBuddy的skill-scanner模块实时索引。当用户提问涉及“统一异常处理”时,系统会自动将rest-api-error-handler.java的内容注入上下文,而不是依赖模型本身的记忆——这才是更可控、更可靠的方式。
