113、【Agent】【OpenCode】项目配置(package.json)

113、【Agent】【OpenCode】项目配置(package.json) 【声明】本博客所有内容均为个人业余时间创作所述技术案例均来自公开开源项目如GithubApache基金会不涉及任何企业机密或未公开技术如有侵权请联系删除背景上篇 blog【Agent】【OpenCode】Skill 工具提示词分析了最后一个工具 SkillSkill 工具可以加载一个专门的技能所谓的技能可以提供特定领域的指令和工作流其唯一的必选参数name用来描述要加载的技能名称其描述文本为动态加载当list.length 0时也就是当前没有 SkillOpenCode 客户端会告知当前没有可用技能而当list.length 0时客户端就会拼接出一段结构严谨的说明文本告知触发条件和预期结果并遵循渐进式披露规则只有当 AI 决定使用某个技能并真正调用 Skill 工具之后详细的指令才会被注入进来实现按需加载否则只展示技能名字和简介下面继续分析OpenCode之前 blog【Agent】【OpenCode】源码构建依赖安装【Agent】【OpenCode】源码构建项目构建在分析源码构建的时候略微有提到package.json下面涉及到项目配置来详细分析下这个文件package.json是Node.js 和前端项目的身份证和核心配置文件OpenCode 客户端相对于 AI 大模型来说也可以理解为前端该文件位于项目根目录有如下作用记录项目的基本信息比如项目名称name版本号version作者入口文件index.jsmain等元数据信息管理依赖包最核心的功能之一把项目需要的第三方库分类地记录下来防止生产环境误装开发工具有两种依赖类型dependencies生产依赖项目运行时必须的包部署上线时也要带上devDependencies开发依赖只在本地开发和构建阶段用的工具上线时不需要配置快捷脚本命令scripts可以把复杂的命令行操作变成一键执行的快捷方式比如在里面配置了bun run script/build.ts后面在终端里只需要输入bun run build就能完成打包工作不用再输入一长串命令提供其他工程化配置很多现代前端工具也会把自定义配置直接写在里面比如浏览器兼容范围browserlistESLint 规则eslintConfig等新建项目的时候在终端运行npm init会一步步问问题或者npm init -y直接跳过问答用默认配置生成就能自动创建一个基础的package.json骨架另外package.json既可以由开发者手动更新也会被包管理器比如npmbun等自动更新开发者可能会发现在执行bun install时package.json被 modified 修改了这就是因为 Bun 在整理或规范化这个文件开发者手动更新可以直接用编辑器打开添加依赖修改版本号或者编写脚本命令行自动更新当执行类似bun add或者npm install等命令时包管理器会自动把新包写入dependencies字段中单纯运行bun install没有指定新包理论上来说应该去读取依赖并安装如果发现package.json还是被改了大概原因是因为JSON 格式化与键值排序比如Bun 作为一个追求极致性能和高标准的现代工具在读取package.json后会按照自己内部的规范对 JOSN 结构进行重新排版比如把dependencies里的包名按字母顺序重新排列或者调整某些字段的先后顺序这种操作不会改变项目的实际逻辑但在 Git 看来文件内容确实发生了变化最后再提醒下虽然package.json可以手动修改但项目中另一个伴随文件对 Bun 来说是bun.lock对 Npm 来说是package-lock.json是绝对禁止修改的这俩文件是共生协作的关系package.json定义了项目允许安装的版本范围提供灵活性Lock 文件则锁定了实际安装的精确版本和依赖树确保团队环境的一致性所以 Bun 在后台做的那些代码格式化或结构优化只要程序能正常构建运行这种修改是无害的如果觉得这种 Git 报的 modified 变动看不过去可以在确认无误后直接提交OK本篇先到这里如有疑问欢迎评论区留言讨论祝各位功力大涨技术更上一层楼更多内容见下篇 blog【Agent】【OpenCode】项目配置package.json 和 bun.lock