
很多团队把 Agent 配置写进代码常量:系统提示硬编码,工具列表写死在初始化函数,换一个客户就要 fork 一份部署。更可持续的做法,是把「定义」落成工作区文件,让同一套 Harness 逻辑携带不同的人格、技能和工具面。
AgentScope 一类文档把这件事说得很直白:AGENTS.md、skills、tools.json、MEMORY.md 各管一块;文件与 API 等价,但文件天然适合多租户覆盖。
AGENTS.md:常驻行为。人格、项目约定、禁止事项、输出格式。它几乎每轮都在场,所以要短、要稳、要可审计。
skills/:可复用能力包。每个子目录一份 SKILL.md,必要时带 references 和 scripts。启动只暴露目录,命中再加载。
tools.json:工具白名单与 MCP server。它回答「模型现在被允许看见哪些工具」,不是「模型听说过哪些技能」。
MEMORY.md 与 memory/:跨会话仍成立的事实。进度、偏好、已确认结论。它不是把聊天记录再存一遍。
混放的代价很大:把工具权限写进 AGENTS.md,靠模型自觉遵守;把长期记忆塞进 skill,技能一卸载记忆也没了。
第一,可覆盖。用户级、租户级目录覆盖同一套 agent 逻辑,不必多套代码分支。
第二,可评审。改 AGENTS.md 或 tools.json 能走 PR、diff、回滚,行为变更看得见。
第三,可投影进沙箱。静态资产按内容哈希注入容器,脚本在隔离环境跑,工作区既是配置源也是执行边界。
AGENTS.md 编译进系统提示或常驻上下文。
skills 编译成「名称 + 描述」清单,真正正文按 load 进入。
tools.json 编译成工具注册表;MCP server 在此声明,不在聊天里临时发明。
MEMORY.md 在压缩后仍保留;完整轨迹另存,不和契约文件抢位置。
一条实用规则:换模型后仍必须保留的约束,写进 AGENTS.md 或 tools.json;仅对某类任务有用的流程,写进 skill。
五项里有两项答不上来,说明你还在「提示词工程」,还没进入「契约工程」。
Harness 不只是循环代码,它还是一套关于「什么常驻、什么按需、什么允许、什么记住」的边界声明。把工作区当成契约,Agent 才能在多租户、可评审、可回滚的轨道上长大;否则每接一个客户,都像重新发明一次运行时。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。