Skip to content

自定义提示词 ​

AiCode 的系统提示词可以自行修改。默认提示词随 App 内置、升级时自动更新;只需将需要修改或新增的片段放入自定义目录即可覆盖或扩展,无需修改 App 本体。

v1.12.0 起

本文的片段命名规则(<两位数字>-<名称>.md)、按数字新增片段、.no-builtin 完全禁用开关与 {{AICODE_*}} 变量自 v1.12.0 起支持。更早的版本只能放与默认片段完全同名的文件来覆盖,不支持按数字新增、.no-builtin 与变量。

在 App 里管理 ​

也可以不碰文件系统,直接在 设置 → 提示词 里管理:

  • 页面按编号列出实际生效的每个片段,右侧徽章标明这份内容来自哪一层:
    • 项目:当前工作区的 .aicode/prompts.custom/
    • 全局:~/.aicode/prompts.custom/
    • 本地:~/.aicode/prompts/(启动时从内置释放的副本)
    • 内置:App 自带的 assets/prompts/
  • 同一编号只生效优先级最高的一份,优先级 项目 > 全局 > 本地 > 内置,其余被遮挡。
  • 点一行编辑它的内容。保存默认写到该编号当前生效的层;「本地/内置」不可写,编辑后默认落到全局层,可在编辑页把作用域切到项目层(有工作区时)。
  • 所有片段都可左滑;项目/全局片段可删除当前覆盖,删掉后自动回退到下一层;本地/内置片段的删除按钮为灰色,不可删除。
  • 右上角「+」可用未占用的编号新增片段。编辑时摘要与正文分开填写;摘要显示在列表和预览页,不会注入 AI。手工编写文件时,开头的 <!-- 摘要 --> 同样会被识别为摘要,正文预览会隐藏这段注释。
  • 首次进入会自动弹出使用说明公告,右上角 Info 可随时重看。

编辑页会避让软键盘;摘要或正文较长时可以上下滚动,继续编辑末尾内容。

App 里的改动与手工放文件完全等价,两种方式可以混用。

目录结构 ​

提示词放在 AI 配置目录 ~/.aicode/ 下(本地模式容器内为 /root/.aicode/;远程模式为服务器用户 home 下的 .aicode/,读写以远端为准):

~/.aicode/
├── prompts/          默认提示词(App 启动时全量释放,升级自动覆盖)
│   ├── 00-identity.md
│   ├── 10-communication.md
│   ├── ...           顶层是「静态基线」片段,按两位数字前缀排序(内置最后一个为 99-runtime-context.md)
│   └── agent/        按需注入的片段(不进静态基线,用到时才读取)
│       ├── plan-mode.md           PLAN 模式提醒
│       ├── auto-mode.md           AUTO 模式提醒
│       ├── subagent-base.md       子代理基础运行规范
│       ├── subagent-context.md    子代理运行期上下文(身份/工作区/时间)
│       ├── compact-summary.md     长对话上下文压缩
│       ├── title-generator.md     会话标题生成
│       └── init.md                /init 命令的指令正文
├── prompts.custom/   你的自定义片段(覆盖或新增,升级不动这里)
│   ├── 50-我的安全规则.md
│   ├── 25-额外要求.md
│   └── agent/
│       └── plan-mode.md           覆盖按需片段
├── skills/
└── docs/

片段分两类,命名规则不同:

  • 静态基线(prompts/ 顶层):<两位数字>-<名称>.md,数字是它的身份,决定在系统提示词里的位置。
  • 按需片段(prompts/agent/):没有数字,用到时才读取(如切换模式、压缩上下文、派发子代理、生成标题)。

命名规则 ​

自定义片段放在 prompts.custom/:

  • 顶层文件必须是 <两位数字>-<名称>.md(如 05-开头.md、50-我的安全规则.md)。数字即身份:
    • 数字与某个内置静态基线片段相同(内置数字为 00、10、15、20、30、40、50、60、70、99)→ 覆盖该片段,尾部名称可任意取;
    • 数字不在上述集合里 → 作为新增片段,按数字大小插入基线的对应位置(如 05-开头.md 排在 00 与 10 之间)。
  • 不符合该格式的文件(如 notes.md、2024-备忘.md)会被忽略。
  • 同一数字有多个文件时只取文件名排最前的那个,其余忽略——请保持数字唯一。
  • agent/ 子目录里的片段没有数字身份,按精确同名覆盖(如 prompts.custom/agent/plan-mode.md)。

加载优先级 ​

顶层数字片段(<两位数字>-<名称>.md)按四级来源查找,同一编号只生效优先级最高的一份,找到即止:

  1. 项目:<工作区>/.aicode/prompts.custom/(远程模式下是 App 私有目录里对应的项目目录)
  2. 全局:~/.aicode/prompts.custom/
  3. 本地:~/.aicode/prompts/<同名文件> — 启动时释放的副本
  4. 内置:App 自带的 assets/prompts/

agent/ 下的按需片段(无编号)没有项目层,按「全局自定义(prompts.custom/agent/xxx.md)→ 本地 → 内置」三级查找。

所以你只需要放想修改或想新增的那几个片段,其余会自动使用默认版本。

修改方式 ​

  1. 在 ~/.aicode/prompts.custom/ 下(没有就手动创建)放入片段:覆盖内置片段用相同数字命名,新增片段用尚未占用的数字命名,子目录片段(如 agent/plan-mode.md)对应放到 prompts.custom/agent/ 下。
  2. 编辑内容。
  3. 保存后即时生效(无需重启 App)。

提示词片段即时生效

自定义提示词片段每次请求都会重新读取,改完直接生效,不用重启 App。注意:技能清单、记忆、子代理清单仍是新开会话才刷新。

编辑方式有三种:在终端里用 vi / nano 直接修改;交由 AI 代写(其文件工具能直接读写这个目录);或用文件管理器访问 App 私有目录。

完全禁用内置提示词 ​

在 prompts.custom/ 下新建一个名为 .no-builtin 的文件(内容随意,存在即生效),即可让主代理的系统提示词只由你在 prompts.custom/ 顶层写好的数字片段组成:

  • 不再注入任何内置片段,也不再自动附加技能清单、子代理清单、记忆、项目规则、工作区与当前时间;
  • 需要哪些动态内容,就在你自己的片段里用下面的变量按需取回;
  • 只作用于主代理,子代理仍按各自定义注入内置片段;
  • prompts.custom/ 里没有可识别的数字片段时系统提示词会为空,请确保至少有 NN-xxx.md。

这是"完全接管"

启用后 AI 的行事规则完全由你写的片段决定,务必自备身份、工具说明与安全边界等内容,否则 AI 会缺少必要上下文。

可用变量 ​

在片段正文里写这些占位符,运行时会替换成真实内容;清单为空时替换为空字符串:

变量替换为
{{AICODE_SKILLS}}可用技能列表(每行一项)
{{AICODE_SUBAGENTS}}可用子代理列表(每行一项)
{{AICODE_MEMORY_GLOBAL}}全局记忆列表(每行一项)
{{AICODE_MEMORY_PROJECT}}项目记忆列表(每行一项)
{{AICODE_PROJECT_RULES_GLOBAL}}全局项目规则正文(~/.aicode 下的 AGENTS.md / CLAUDE.md)
{{AICODE_PROJECT_RULES_PROJECT}}工作区项目规则正文(项目根目录下的 AGENTS.md / CLAUDE.md)
{{AICODE_PROJECT_RULES}}等价于 {{AICODE_PROJECT_RULES_PROJECT}},为兼容旧片段保留
{{AICODE_WORKSPACE}}项目根目录(~/workspace,未选工作区时为提示文本)
{{AICODE_ENVIRONMENT}}当前运行环境(本地容器(PRoot) / 远程 SSH 服务器)
{{AICODE_DATE}}当前日期(yyyy-MM-dd)
{{AICODE_SUBAGENT_NAME}}当前子代理名称(仅子代理提示词渲染时有值)

变量在任意片段处就地展开

系统提示词里的技能、子代理、记忆、项目规则、工作区与当前时间,默认由内置片段 99-runtime-context.md 用这些变量承载;你也可以在自己的片段里写变量,同样会在该处替换成真实内容。想改变这些内容的位置或顺序,编辑或覆盖 99-runtime-context.md 即可。 变量只替换为纯数据(列表行、文件正文、路径、日期),像「可用技能:」这样的标题与引导语都写在片段文件里,随片段一起编辑。

prompts.custom/ 里没有 99-runtime-context.md 的覆盖时,运行期上下文照常由内置版本注入;若你覆盖了它却没写变量,对应内容就不会出现。

其它占位符(如压缩提示词用的 {{INSTRUCTION}})不受影响。

升级时的行为 ​

  • prompts/ 目录每次启动都会被内置版本全量覆盖,所以默认提示词会随 App 升级自动更新。
  • prompts.custom/ 目录 App 永远不会自动写入或删除,你的自定义在升级后完整保留。

请勿直接修改 prompts/ 目录

prompts/ 目录中的内容在每次启动时都会被全量重置,手动修改的内容在 App 升级或重启后会被覆盖。如需持久自定义,请务必保存在 prompts.custom/ 目录中。

片段说明 ​

文件名内容
00-identity.mdAI 身份与角色定义
10-communication.md沟通与回复风格
15-project-rules.md项目规则加载约定(AGENTS.md / CLAUDE.md),详见 记忆与项目规则
20-coding-discipline.md编码纪律
30-comments.md代码注释规范
40-approach.md工作方式与流程
50-safety.md安全与可信边界
60-tools-and-paths.md工具说明与路径约定
70-skills-and-mcp.md技能与 MCP 说明
99-runtime-context.md运行期上下文:技能、子代理、记忆、项目规则、工作区与当前时间(用变量承载)
agent/plan-mode.mdPLAN 模式提醒(按需注入)
agent/auto-mode.mdAUTO 模式提醒(按需注入)
agent/subagent-base.md子代理基础运行规范(按需注入)
agent/subagent-context.md子代理运行期上下文:身份、工作区与时间(按需注入)
agent/compact-summary.md长对话上下文压缩的提示词
agent/title-generator.md会话标题生成的提示词
agent/init.md/init 命令的指令正文(分析代码库并生成/改进 AGENTS.md),可在对话输入框用 /init 触发

恢复默认 ​

删掉 ~/.aicode/prompts.custom/ 下对应的文件,那个片段就恢复默认版本;删掉整个 prompts.custom/ 目录则全部恢复(.no-builtin 一并删除后内置提示词重新启用)。

注意 ​

  • 旧版把 80-plan-mode.md、81-auto-mode.md、90-subagent-base.md 放在 prompts/ 顶层,v1.12.0 起已移到 prompts/agent/ 且去掉编号;对应的自定义覆盖请改用 prompts.custom/agent/plan-mode.md 等路径。
  • 60-tools-and-paths.md 这类片段会随工具变更而更新。如果你覆盖了它,App 升级后不会自动获得新版工具说明,AI 看到的工具定义可能和实际不一致。需要更新时手动同步,或删掉你的自定义版本让默认版本重新生效。

基于 GPL-3.0 协议开源