Open Interpreter 的 /init 命令解析一条提示词如何自动生成 AGENTS.md 项目指南【免费下载链接】openinterpreterA coding agent for open models like Kimi K3 and GLM 5.3项目地址: https://gitcode.com/GitHub_Trending/op/openinterpreter本文解析 Open Interpretercodex-rs 代码库TUI 中/init斜杠命令的内置提示词模板prompt_for_init_command.md它的完整内容、逐条要求以及该提示词如何被include_str!编译进二进制、经slash_dispatch.rs提交给模型、最终生成一份可被自动加载的AGENTS.md。读完你能掌握如何在终端里一键生成项目贡献指南提示词模板的每条约束如何映射到生成行为以及生成的AGENTS.md会被 core 层怎样发现、拼接和截断。/init一条命令生成 AGENTS.md在 Open Interpreter 的 TUI 交互会话中输入/init即可让模型检查当前仓库结构并起草一份名为AGENTS.md的贡献者指南contributor guide。该命令在命令弹窗中的描述是“create an AGENTS.md file with instructions for Open Interpreter”见 slash_command.rs 中按产品名Codex / Open Interpreter动态切换的description()。命令枚举SlashCommand::Init定义于 slash_command.rs它有两个值得注意的行为属性不支持内联参数supports_inline_args()slash_command.rs中没有Init即/init只能裸写不能写/init 额外要求任务进行中不可用available_during_task()对SlashCommand::Init返回falseslash_command.rs若 Agent 正在跑任务dispatch 层会直接提示/init is disabled while a task is in progress.见 slash_dispatch.rs 的slash_command_blocked_by_active_task与拦截分支。提示词模板全文与逐条要求/init的全部“智能”都来自一个纯文本模板文件 prompt_for_init_command.md。它并不包含任何仓库特有信息而是一份通用的、面向任意仓库的元提示词meta-prompt核心内容如下总目标生成一个名为AGENTS.md的文件作为该仓库的贡献者指南。写入前必须先检查当前工作目录是否已存在AGENTS.md若存在则不得覆盖或修改。目标是产出标题清晰、描述具体、可执行actionable的文档并按需增删小节与本仓库相关的章节要加不适用的要删。文档硬性要求Document Requirements要求说明标题文档标题固定为 “Repository Guidelines”结构使用 Markdown 标题#、## 等组织篇幅保持简洁200–400 词为最优语气简短、直接、专业、教学式且必须针对本仓库示例在有帮助处给出示例命令、目录路径、命名模式推荐章节Recommended Sections模板给出了五个默认小节并允许自由扩展Project Structure Module Organization— 描述项目结构包括源码、测试、资源文件各自放在哪里Build, Test, and Development Commands— 列出构建、测试、本地运行的关键命令如npm test、make build并逐一简述命令作用Coding Style Naming Conventions— 缩进规则、语言风格偏好、命名模式以及项目使用的格式化/静态检查工具Testing Guidelines— 测试框架、覆盖率要求、测试命名规范与运行方式Commit Pull Request Guidelines— 从 Git 历史中归纳的提交信息约定以及 PR 要求描述、关联 issue、截图等。模板最后还留了一个可选扩展位如相关可追加 “Security Configuration Tips”、“Architecture Overview” 或 “Agent-Specific Instructions” 等章节。这份模板的设计意图很明确约束输出结构固定章节骨架 标题而放开输出内容一切以仓库实际情况为准并用“200–400 词”“不得覆盖已有文件”两条护栏防止模型生成臃肿文档或破坏用户已有配置。源码级调用链从 include_str! 到提交消息模板文件以编译期字符串的方式嵌入了 TUI 二进制。在 slash_dispatch.rs 中SlashCommand::Init { const INIT_PROMPT: str include_str!(../../prompt_for_init_command.md); self.submit_user_message(INIT_PROMPT.to_string().into()); }调用链可以概括为四步用户在 composer 输入/init并回车ChatComposer将其解析为InputResult::Command(SlashCommand::Init)ChatWidget::dispatch_commandslash_dispatch.rs先做三道准入检查side conversation 是否允许、review 模式下是否允许、任务是否进行中/init在此被拦截命中SlashCommand::Init分支后include_str!宏在编译期把 prompt_for_init_command.md 的全文读成static str常量注意宏内相对路径../../是相对slash_dispatch.rs源文件位置运行时不涉及文件 I/Osubmit_user_message把这段提示词当作一条普通用户消息投递给会话于是模型在后续 turn 中按提示词要求检查仓库读目录、看构建脚本、浏览 Git 历史并写出AGENTS.md。也就是说/init没有特殊的工具调用或后端接口它本质是把一段精心编写的系统级提示词伪装成用户输入——这也解释了为什么模板里要用第二人称祈使句“Generate a file named AGENTS.md...”这段文字是写给模型看的指令而不是展示给用户的界面文案。外层封装handle_slash_command_dispatchslash_dispatch.rs还会在 dispatch 之后记录本地历史条目使/init可以被方向键回查行为与普通提交一致。生成的 AGENTS.md 会被怎样加载/init的价值不止于生成一份文档而在于这份文档之后会被 core 层每个会话自动加载为模型可见的项目指令。加载逻辑集中在 agents_md.rs关键机制如下发现顺序先通过project_root_markers默认标记为.git从当前工作目录向上查找项目根然后收集**从项目根向下到当前工作目录含两端**路径上的每一个AGENTS.md按“根 → cwd”的顺序拼接且不会越过项目根向上继续查找见 agents_md.rs 的模块文档注释。多环境multi-environment场景下拼接文本会为每个环境单独标注for \environment_id with root[agents_md.rs](https://link.gitcode.com/i/e739a2fa15097c574a915f36f00abea6#L343-L386) 的environment_labeled_text。优先级与回退文件名每个目录上依次尝试的候选文件名由candidate_filenames决定agents_md.rs——AGENTS.override.md优先于AGENTS.md之后再是project_doc_fallback_filenames配置中列出的其他文件名。文档 docs/agents_md.md 还给出了全局层面的作用域表全局指令位于~/.openinterpreter/AGENTS.md可用~/.openinterpreter/AGENTS.override.md做临时覆盖删除即恢复。字节预算与截断所有项目指令合计受project_doc_max_bytes限制默认值为 32 KiB定义于 config_toml.rs 的DEFAULT_PROJECT_DOC_MAX_BYTES并经 config/mod.rs 落到运行时配置。read_agents_md按“根 → cwd”顺序消耗预算超出的文件会被truncate截断并打一条project doc exceeds remaining budget; truncating的 warningagents_md.rsproject_doc_max_bytes 0时直接跳过加载。截断测试见 agents_md_tests.rs。把这两段拼起来看/init提示词要求 “200–400 词” 并非随手写的数字——一份 400 词左右的英文 Markdown 约 2.5 KiB远低于 32 KiB 预算因此按模板生成的AGENTS.md几乎不可能触发截断这正是提示词约束与底层加载机制相互咬合的体现。本仓库就有一份现成产物本仓库根目录的 AGENTS.md 就是这类“仓库指南”文档的实例它按章节列出了 codex-rs 工作区的构建/测试入口Bazel 与 Cargo 双轨、目录职责等约定供 Agent 在此仓库工作时自动读取。配合 docs/agents_md.md 中的官方示例Commands / Conventions / Cautions 三段式结构可以看到实际落地的AGENTS.md与/init模板推荐的五个章节高度同构——命令、风格、测试、注意事项各占一栏篇幅短而具体。文档 docs/agents_md.md 给出的使用建议与模板要求互为印证“GoodAGENTS.mdfiles are short, specific, and durable. Put temporary task details in the prompt, not in project instructions.” 即把稳定规则沉淀进文件把一次性任务细节留在对话里。实践要点与适用边界何时使用新仓库、缺乏书面贡献指南的团队仓库或者你希望把常用命令/目录约定固化、避免每次在 prompt 里重复时。在 TUI 中直接输入/init等模型完成后人工审校生成的AGENTS.md删掉不适用的章节、修正错误命令再把它提交进版本库。不会覆盖模板第一条即要求检查已存在的AGENTS.md并跳过因此对已有指南的仓库重复执行/init是安全的前提是模型遵循了指令。时机限制Agent 正在执行任务期间/init会被禁用需等当前 turn 结束它也不接受内联参数需要额外要求时应等模型生成后再手动编辑文件。内容边界/init只生成当前工作目录视角的指南若仓库是 monorepocore 层会沿“项目根 → cwd”加载多层AGENTS.md因此更精细的做法是在子目录追加更局部的AGENTS.md利用“越靠近 cwd 越优先/越相关”的拼接顺序细化局部约定。版本前提以上行为以当前仓库的 TUI 实现为准——include_str!内嵌意味着提示词修改后需重新编译 TUI 才会生效它不受任何运行时配置文件影响。【免费下载链接】openinterpreterA coding agent for open models like Kimi K3 and GLM 5.3项目地址: https://gitcode.com/GitHub_Trending/op/openinterpreter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考