ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

第08篇-Workspace与上下文文件:AGENTS.md、SOUL.md、SKILL.md 的配置骨架与验证

第08篇-Workspace与上下文文件:AGENTS.md、SOUL.md、SKILL.md 的配置骨架与验证 1. 为什么你的 Agent 总是“答非所问”从 Workspace 上下文缺失说起很多人第一次用 OpenClaw 搭 Agent都会遇到一个很迷惑的现象明明项目里写了 TypeScript 严格模式Agent 却给你生成any满天飞的代码明明团队约定 API 统一返回{ success, data, error }它偏要返回裸数组。你以为是模型不行其实大概率是Workspace 上下文文件没被正确加载。OpenClaw 的 Workspace 可以理解成 Agent 的“办公桌”。桌面上放什么资料它就按什么资料干活。默认路径是~/.openclaw/workspace/里面最关键的三个文件是AGENTS.md、SOUL.md和skills/*/SKILL.md。它们分别回答三个问题这个项目是什么AGENTS.md、你该用什么风格说话SOUL.md、遇到具体任务该怎么做SKILL.md。三者协作才能让 Agent 从“通用聊天机器人”变成“懂你项目的助手”。这篇我会给你一套可直接复制的目录结构和文件骨架然后通过 TaoToken 统一 Key/API 通道接入用一次真实对话验证上下文到底有没有被加载。适合正在用 OpenClaw 做项目级 AI 约束的开发者也适合想把 ClawHub 技能接进自己工作流的运维同学。核心检索词就是 Workspace、AGENTS.md、SOUL.md、SKILL.md 和 ClawHub下面全部围绕它们展开。2. TaoToken 前置准备统一 Key 与 API 通道在验证上下文之前得先让 OpenClaw 能稳定调用模型。这里我用 TaoToken 作为统一入口好处是 Key 和 Base URL 一套走通不用在多个模型供应商之间来回切换配置。官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 这个不加 UTM直接填进配置。你需要先拿到一个 API Key。登录后进入控制台在 API Keys 页面创建一个新 Key复制出来备用。这个 Key 后面会写进 OpenClaw 的模型配置里。注意Key 只显示一次丢了就重新建一个别硬找。TaoToken 的接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 里面有各语言的调用示例。如果你只是想先验证模型通不通可以直接用模型对话页面 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 发一条消息试试。长期做编码和 Agent 任务的话Coding Plan 页面 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 会更合适额度模型和按量计费不一样。这里要强调一点TaoToken 是合规的 API 聚合通道不是所谓“中转”。你填的 Base URL 就是官方给的https://taotoken.net/api模型 ID 按文档里列出的写。OpenClaw 侧只需要改openclaw.json里的 provider 配置Workspace 文件完全不用动。这样上下文文件和模型通道解耦换模型不影响你的 AGENTS.md 和 SOUL.md。配置前先确认 OpenClaw 版本终端执行openclaw --version。如果命令不存在说明还没装先按官方安装步骤走一遍。装好后openclaw init会生成默认 Workspace路径就是~/.openclaw/workspace/。接下来我们在这个基础上改。3. 可复制配置目录结构、AGENTS.md、SOUL.md、SKILL.md 骨架先看完整目录结构你可以直接照着建~/.openclaw/workspace/ ├── AGENTS.md ├── SOUL.md ├── skills/ │ ├── bundled/ │ ├── managed/ │ └── my-custom-skill/ │ └── SKILL.md └── projects/AGENTS.md是项目级上下文每次对话自动注入 System Prompt。它写的是“这个项目是什么”。下面是我实测可用的骨架你按自己项目改# 项目说明 ## 项目概况 这是一个 TypeScript Express 的 REST API 服务对外提供订单和用户接口。 ## 技术栈 - Node.js 24 TypeScript 5.7 - Express 4 Prisma ORM - PostgreSQL 16 Redis 7 - Vitest 测试框架 ## 代码规范 - 使用 ESM 模块import/export - 严格模式strict: true - 变量命名用 camelCase - API 路径用 kebab-case ## 重要约定 - 所有 API 返回 { success, data, error } 格式 - 数据库迁移用 Prisma Migrate - 敏感配置从环境变量读取禁止硬编码SOUL.md定义 Agent 的人格和行为风格作用范围是全局的不随项目变。骨架如下# Agent 人格 你是我的个人助手风格特点 - 回答简洁直接不啰嗦 - 代码注释用中文 - 遇到不确定时先问不要猜测 - 给出可操作的方案而不是泛泛的理论 - 我说“继续审查”时换一个新维度深入分析SKILL.md放在skills/my-custom-skill/下描述一个具体技能怎么执行。比如一个“生成 Prisma 迁移检查清单”的技能# 技能Prisma 迁移检查 ## 触发条件 当用户提到“迁移”“migrate”“schema 变更”时启用。 ## 执行步骤 1. 检查 prisma/schema.prisma 是否有未提交变更 2. 确认迁移名称使用 kebab-case 3. 提醒用户先跑 npx prisma migrate dev --name name 4. 检查是否更新了对应的 seed 脚本 ## 输出格式 用有序列表返回检查结果每项标注 通过/待办。然后是 OpenClaw 的模型配置写进~/.openclaw/openclaw.json。这里把 provider 指向 TaoToken{ agents: { defaults: { workspace: /home/user/.openclaw/workspace, model: { provider: taotoken, baseUrl: https://taotoken.net/api, apiKey: sk-你的TaoToken密钥, modelId: 按文档填写的模型ID } } } }如果你有多个 Agent可以给不同 Agent 配不同 Workspace{ agents: { work: { workspace: /home/user/work-workspace }, personal: { workspace: /home/user/personal-workspace } } }三件套记牢Base URL 填https://taotoken.net/apiKey 填你创建的sk-开头密钥Model ID 按 TaoToken 文档里列出的写。这三个缺一个请求就会失败。配置改完保存重启 OpenClaw 让配置生效。4. 验证请求一次对话确认上下文被正确加载配置写好了不代表生效必须验证。我试过最直接的办法是让 Agent 复述项目约定看它能不能说出 AGENTS.md 里的内容。先启动 OpenClaw 交互模式openclaw chat然后发一条测试消息请说出当前项目的技术栈和 API 返回格式约定不要猜测。如果 AGENTS.md 被正确加载Agent 应该回答出 Node.js 24、TypeScript 5.7、Express 4、Prisma、PostgreSQL 16、Redis 7、Vitest以及{ success, data, error }格式。如果它答得含糊或者编造说明上下文没注入。再验证 SOUL.md。发用一句话介绍你自己并说明你的回答风格。正确加载时它会提到“简洁直接”“代码注释用中文”“不确定先问”这些点。如果它说“我是一个AI助手乐于助人”那就是 SOUL.md 没生效。最后验证 SKILL.md。发我要改 schema帮我做迁移检查。如果技能被识别它会按 SKILL.md 里的步骤返回检查清单而不是泛泛地说“请先备份数据库”。为了确认请求真的走了 TaoToken可以看 OpenClaw 的日志。启动时加--verboseopenclaw chat --verbose日志里会打印实际请求的 Base URL 和 model ID。确认是https://taotoken.net/api和你在配置里写的模型 ID。如果日志里出现别的地址说明配置没被读取检查openclaw.json路径对不对。还有一种验证方式是用 curl 直接打 TaoToken 的接口排除 OpenClaw 的干扰curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的密钥 \ -H Content-Type: application/json \ -d { model: 你的模型ID, messages: [{role: user, content: 回复 OK}] }返回里有choices字段且内容正常说明 Key 和通道没问题。这一步过了再回去查 OpenClaw 的 Workspace 加载逻辑。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth配置过程中最容易撞的几个报错我按真实遇到的整理一下。401 Unauthorized。这个基本是 Key 问题。先确认openclaw.json里apiKey填的是sk-开头的完整密钥没有多余空格。然后确认 Key 没被删除或过期。如果 Key 没问题检查 Base URL 是不是写成了https://taotoken.net/api/带尾斜杠有些客户端对尾斜杠敏感去掉试试。401 也可能是模型 ID 写错某些 provider 对模型名大小写敏感按文档原样复制。local proxy failed。这个报错通常出现在你本地配了代理但代理没起来或者端口不对。OpenClaw 会读取环境变量里的HTTP_PROXY/HTTPS_PROXY。如果你不需要代理直接unset HTTP_PROXY HTTPS_PROXY再启动。如果确实需要走本地代理确认代理进程在监听端口和配置一致。注意这里说的是本地开发环境的网络配置不是让你去搞什么特殊通道正常公司网络或家庭网络直连即可。reading choices 报错。典型信息是Cannot read properties of undefined (reading choices)。这说明请求发出去了但返回结构里没有choices字段。常见原因有三个一是 Base URL 写错请求打到了非兼容接口二是模型 ID 不存在服务端返回了错误对象三是请求体格式不对比如messages写成了字符串。排查时先用上面那条 curl 命令单独测确认接口返回结构正常再回来看 OpenClaw 的请求构造。OAuth 相关报错。如果你在配置里误开了 OAuth 模式但 TaoToken 用的是 API Key 鉴权就会冲突。检查openclaw.json里有没有authType: oauth之类的字段有就删掉改成apiKey方式。另外某些客户端会缓存旧的 OAuth token清一下~/.openclaw/cache/再重启。还有一个隐蔽的坑Workspace 路径写错。openclaw.json里workspace指向的目录如果不存在OpenClaw 会静默用默认路径你的 AGENTS.md 就白写了。启动时加--verbose看它实际加载的 Workspace 路径和你的预期对比。路径建议用绝对路径别用~有些版本不展开。如果 SKILL.md 没生效检查技能目录层级。skills/my-custom-skill/SKILL.md是对的skills/my-custom-skill/skill.md小写可能不被识别。文件名严格用SKILL.md。ClawHub 安装的技能在skills/managed/下不要手动改用openclaw skills update更新。6. 把上下文文件纳入版本管理让 Agent 行为可复现最后说一个实用习惯把AGENTS.md和SOUL.md提交进 Git。AGENTS.md 是项目级的团队共享谁改了约定大家都能看到。SOUL.md 是个人风格可以放全局 Workspace 或者单独仓库。SKILL.md 如果是团队通用技能也一起提交如果是个人实验性的放本地就行。这样做的价值是Agent 的行为不再依赖某个人的本地配置而是跟着代码仓库走。新人 clone 下来配好 TaoToken 的 Key 和 Base URL启动 OpenClaw 就能得到一致的上下文。换模型、换机器行为不变。如果你还没拿到 Key去 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 创建一个。接入细节看 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。想先试模型效果用 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。长期跑编码和 Agent 任务Coding Plan 在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。配置改完记得重启验证时先 curl 再 chat两步都过上下文加载就没问题了。
返回列表