From 6ae4c747f47077499a95496ecb9a9cc3e92ff847 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=9D=B0?= Date: Thu, 26 Mar 2026 09:29:12 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E5=8A=A0=E8=BD=BD=E5=85=A8=E5=B1=80?= =?UTF-8?q?=E9=85=8D=E7=BD=AE:=20=E9=A6=96=E5=85=88=E5=B0=9D=E8=AF=95?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=20~/.kimi/AGENTS.md=20=E6=88=96=20~/.kimi/ag?= =?UTF-8?q?ents.md=202.=20=E5=8A=A0=E8=BD=BD=E6=9C=AC=E5=9C=B0=E9=85=8D?= =?UTF-8?q?=E7=BD=AE:=20=E7=84=B6=E5=90=8E=E5=B0=9D=E8=AF=95=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E5=B7=A5=E4=BD=9C=E7=9B=AE=E5=BD=95=E7=9A=84=20AGENTS?= =?UTF-8?q?.md=20=E6=88=96=20agents.md=203.=20=E6=99=BA=E8=83=BD=E5=90=88?= =?UTF-8?q?=E5=B9=B6:=20=20=20=E2=80=A2=20=E5=A6=82=E6=9E=9C=E4=B8=A4?= =?UTF-8?q?=E8=80=85=E9=83=BD=E5=AD=98=E5=9C=A8=EF=BC=8C=E4=BC=9A=E5=90=88?= =?UTF-8?q?=E5=B9=B6=E5=86=85=E5=AE=B9=EF=BC=8C=E5=B9=B6=E7=94=A8=E6=A0=87?= =?UTF-8?q?=E9=A2=98=E5=8C=BA=E5=88=86=E6=9D=A5=E6=BA=90=EF=BC=9A=20=20=20?= =?UTF-8?q?=20=20#=20Global=20AGENTS.md=20(from=20~/.kimi/)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [全局规则内容] --- # Local AGENTS.md (from [工作目录]) [本地规则内容] • 如果只有其中一个存在,只返回那个的内容 • 如果都不存在,返回 None 使用方法 只需在 ~/.kimi/AGENTS.md 创建你的全局个人规则文件,CLI 启动时会自动加载: mkdir -p ~/.kimi echo "# 我的全局规则" > ~/.kimi/AGENTS.md 这样每次启动 Kimi CLI 时,无论在哪个工作目录,都会自动加载你的全局个人规则。 --- src/kimi_cli/soul/agent.py | 43 +++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/src/kimi_cli/soul/agent.py b/src/kimi_cli/soul/agent.py index 4c21e27fd..7aeb40011 100644 --- a/src/kimi_cli/soul/agent.py +++ b/src/kimi_cli/soul/agent.py @@ -61,15 +61,48 @@ class BuiltinSystemPromptArgs: async def load_agents_md(work_dir: KaosPath) -> str | None: - paths = [ + # Load global AGENTS.md from ~/.kimi/AGENTS.md + global_paths = [ + KaosPath.home() / ".kimi" / "AGENTS.md", + KaosPath.home() / ".kimi" / "agents.md", + ] + global_content: str | None = None + for path in global_paths: + if await path.is_file(): + logger.info("Loaded global agents.md: {path}", path=path) + global_content = (await path.read_text()).strip() + break + + # Load local AGENTS.md from work_dir + local_paths = [ work_dir / "AGENTS.md", work_dir / "agents.md", ] - for path in paths: + local_content: str | None = None + for path in local_paths: if await path.is_file(): - logger.info("Loaded agents.md: {path}", path=path) - return (await path.read_text()).strip() - logger.info("No AGENTS.md found in {work_dir}", work_dir=work_dir) + logger.info("Loaded local agents.md: {path}", path=path) + local_content = (await path.read_text()).strip() + break + + # Merge contents if both exist + if global_content and local_content: + merged = f"""# Global AGENTS.md (from ~/.kimi/) + +{global_content} + +--- + +# Local AGENTS.md (from {work_dir}) + +{local_content}""" + return merged + elif global_content: + return global_content + elif local_content: + return local_content + + logger.info("No AGENTS.md found in {work_dir} or ~/.kimi/", work_dir=work_dir) return None