# Adnify-Cli **Repository Path**: adnaan/adnify-cli ## Basic Information - **Project Name**: Adnify-Cli - **Description**: Adnify-Cli 是一个面向未来的 CLI AI 编程助手,融合 Bun 的速度、Ink 的交互力与 DDD 的结构美学,为终端开发带来更稳、更快、更聪明的协作体验 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-04-13 - **Last Updated**: 2026-08-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: Cli, claude, AI, Agent ## README
# 🦦 Adnify-Cli **你的终端。你的模型。你的代码。** 一个跑在终端里的 AI 编程搭档——不是聊天框搬进终端,而是真正能读你的代码、改你的文件、跑你的命令,同时每一步都等你点头。 本地运行,数据不出你的机器。支持 OpenAI / Anthropic / Google / 任意 OpenAI 兼容接口,不绑定任何平台。 [📚 English Documentation](./README.md) · [🗄️ Storage & Configuration](./docs/storage-configuration.md) · [🗄️ 存储与配置](./docs/storage-configuration.zh-CN.md) [快速开始](#-快速开始) · [为什么选 Adnify-Cli](#-为什么选-adnify-cli) · [工具与审批](#️-工具与审批) · [配置](#-配置) · [架构](#-架构) Adnify-Cli 终端界面 Adnify-Cli 终端界面
--- ## 🔑 为什么选 Adnify-Cli | 你关心的 | Adnify-Cli 怎么做 | |---|---| | **隐私** | 本地运行,API Key 和会话数据只存在你的磁盘上,不经过任何中间服务器 | | **不绑定平台** | OpenAI、Anthropic、Google、Ollama、DeepSeek、零一万物……只要是 OpenAI 兼容接口就能接 | | **AI 别乱动我代码** | 每次写文件、跑命令前都会弹出审批面板,你按 `y` 才落盘,按 `n` 直接拒绝 | | **改坏了能撤销** | `:undo` 一键回滚,文件级快照不依赖 Git——就算没仓库也能恢复 | | **别每次从头解释项目** | `:memory` 跨会话记住项目约定、架构决策、踩过的坑,下次自动带上 | | **token 别偷偷用完** | `:context` 实时显示消息数、token 估算和健康度,上下文快炸了会告诉你 | | **工具不够用** | 内置 8 个工具 + MCP 协议支持,接你自己的工具服务器无限扩展 | | **提示词想自己改** | 所有系统提示词、工具定义都是 `prompts/` 目录下的 Markdown,改文件就能定制 | | **中文体验** | 中英双语界面,`Ctrl+O` 全屏审计记录,`PgUp/PgDn` 滚动长会话 | --- ## ✨ 功能特性 ### 三种工作模式 | 模式 | 说明 | |---|---| | **Chat** | 日常问答与代码讨论 | | **Agent** | 多轮工具调用,自动读写文件、执行命令、搜索代码,最多 20 轮自主循环 | | **Plan** | 先规划再执行,适合复杂任务 | ### 核心能力 - **流式响应** — 实时输出,终端渲染稳定低抖动 - **会话持久化** — 每个工作区独立保存,启动自动恢复上次会话,关了终端不丢上下文 - **工具调用闭环** — 8 个内置工具 + 动态 MCP 工具,过程与结果实时回流会话区 - **并行研究子代理** — `explore` / `review` / `test` / `general` 专职角色,隔离上下文并安全使用只读代码工具 - **写入后即时诊断** — TypeScript 错误在文件落盘当刻即被捕获并回传模型,同一轮对话内自动修复 - **容错补丁匹配** — `oldText` 精确匹配失败时自动回退空白/缩进容错定位,不再盲目失败;歧义命中依然拒绝 - **实时待办面板** — 模型通过 `todo-write` 维护持久进度清单,当前项、完成态、剩余步骤始终可见 - **项目指令自动加载** — 支持 `.adnify/instructions.md`、`AGENTS.md` 与排序后的 `.rules/*.md` - **风险分级审批** — 写文件和执行命令前暂停等待用户确认,模型说了不算,你说了算 - **跨会话项目记忆** — `:memory` 保存项目知识,后续会话自动注入 - **检查点与撤销** — `:checkpoint` / `:undo` / `:restore`,文件级快照不依赖 Git - **上下文窗口诊断** — `:context` 实时查看消息数、token 估算和健康度 - **中英双语** — 界面语言自由切换 - **Prompt Pack** — 系统提示词、工具定义、命令定义全在 `prompts/` 下,改文件就能定制 - **原生 tool calling** — 优先使用 provider 原生函数调用,不支持时自动回退到文本解析 - **全屏审计记录** — `Ctrl+O` 展开完整的工具输入、输出和耗时,普通视图折叠噪音 --- ## 🎮 终端交互 | 按键 | 行为 | |---|---| | `Ctrl+O` | 打开 / 关闭全屏会话记录 | | `PgUp / PgDn` | 按屏滚动长会话 | | `Esc` | 执行中优先中止;浏览历史时回到底部;底部时退出全屏记录 | | `Tab / Enter` | 命令面板中先填入命令,不直接执行 | - 普通会话只展示工具摘要,完整输入、输出和耗时在全屏记录中查看 - 审批或配置向导出现时自动退出全屏记录,保证关键操作始终可见 --- ## 🛠️ 工具与审批 ### 内置工具 | 工具 | 能力 | 风险 | |---|---|---| | `workspace-read` | 读取工作区摘要 | 🟢 safe | | `search-index` | 基于 ripgrep 的代码检索(无 rg 时回退到内置扫描) | 🟢 safe | | `glob-search` | 基于通配符的文件匹配 | 🟢 safe | | `file-ops` | `read` / `list` / `write` / `update` / `patch` / `multi-patch`(原子多段替换) | 🟢 读取 safe · 🟡 写入 careful | | `shell-runner` | 白名单命令执行 | 🟢 只读 safe · 🟡 验证类 careful | | `web-search` | 基于 DuckDuckGo 的公开网络搜索(无需 API key) | 🟡 careful | | `web-fetch` | 获取并提取 URL 页面的文本内容 | 🟡 careful | | `task` | 并行派发最多 8 个子任务,进度回传会话区 | 🟡 careful | | `mcp__*` | 调用已连接 MCP 服务器提供的工具 | 🟡 careful | ### 审批机制 写入文件和执行验证命令不由模型自行决定。执行会在真正落盘 / 执行前暂停,终端弹出审批面板,展示工具名、风险级别、操作摘要和目标路径: | 按键 | 行为 | |---|---| | `y` | 批准这一次 | | `n` | 拒绝;拒绝原因回给模型,模型据此调整方案 | | `a` | 本次会话内始终允许该工具 | > 工具描述里的 `allowWrite: true` 只是模型的自我声明,模型多打几个字就能绕过——真正的权限边界必须落在用户按键上。 --- ## ⚡ 快速开始 ### 安装 ```bash # 通过 npm 全局安装 npm install -g adnify-cli # 更新已有安装 npm install -g adnify-cli@latest # 运行 adnify ``` > 需要 Node.js 20 或更高版本。Bun 仅用于本地开发。 ### 开发 ```bash # 安装依赖 bun install # 开发运行 bun run dev # 构建 bun run build # 测试 bun test # 提交前验证(测试 + 类型检查 + 构建) bun run verify ``` --- ## ⚙️ 配置 ### 环境变量 | 变量 | 说明 | |---|---| | `ADNIFY_PROVIDER` | 模型提供商 | | `ADNIFY_API_KEY` | API 密钥 | | `ADNIFY_BASE_URL` | 自定义 API 地址 | | `ADNIFY_MODEL` | 模型名称 | | `ADNIFY_LOCALE` | 界面语言,支持 `zh-CN` 和 `en` | | `ADNIFY_ANIMATION_LEVEL` | 动效级别,支持 `off`、`minimal` 和 `full`(默认) | | `ADNIFY_HOME` | 应用数据目录(优先级最高) | ### 推荐配置命令 ``` :config :config init :config set provider [model] :config set model :config set api-key :config set base-url :config clear api-key :language :animation ``` `:config init` 会进入临时输入面板配置模式;供应商和模型支持上下键选择、回车确认,也保留数字快捷选择。配置对话不会写进会话区。 --- ## 💾 数据存储 **所有数据只存在你的本地磁盘上**——会话记录、配置、记忆,没有任何云同步,没有任何遥测。 ### 默认路径 | 平台 | 路径 | |---|---| | **Windows** | `%APPDATA%\Adnify-Cli\settings.json` · `%LOCALAPPDATA%\Adnify-Cli` | | **macOS** | `~/Library/Application Support/Adnify-Cli` | | **Linux** | `$XDG_CONFIG_HOME/adnify-cli` · `$XDG_DATA_HOME/adnify-cli` | ### 数据目录结构 ``` Adnify-Cli/ ├── config.json ├── sessions/ │ └── .json └── memories/ └── .json ``` 文件级写入快照存放在工作区的 `.adnify/checkpoints/`,不依赖 Git。 ### 自定义数据目录 不想放 C 盘?随便迁: ``` :storage # 查看当前数据目录 :storage set # 迁移到新目录(自动迁移 config 和 sessions) :storage reset # 重置为系统默认路径 ``` --- ## 📋 命令一览 ### 会话与记忆 ``` :session # 当前会话信息 :sessions # 列出所有会话 :resume [index|id] # 恢复指定会话 :memory [content] # 保存项目记忆 :memory list # 查看记忆 :memory clear # 清空记忆 :context # 上下文窗口诊断 :clear # 清空当前会话 :exit # 退出 ``` ### 模式与工具 ``` :mode chat | agent | plan :workspace # 当前工作区信息 :status # 运行状态 :tools # 可用工具列表 :model [provider] [model] ``` ### 检查点与撤销 ``` :checkpoint [message] # 创建检查点 :undo # 撤销最近检查点 :restore [id|index] # 恢复文件级快照 ``` ### 其他 ``` :help # 帮助 :doctor # 环境诊断 :diff # 查看变更 :review # 代码审查 :mcp # MCP 服务器管理 :skill [name|list] # 技能管理 ``` --- ## 🏗️ 架构 ### 技术栈 | 层 | 选型 | |---|---| | Runtime | Bun | | Language | TypeScript | | Terminal UI | [Ink](https://github.com/vadimdemedes/ink) + React | | AI SDK | [Vercel AI SDK](https://sdk.vercel.ai/) | | Architecture | DDD 风格分层架构 | ### 分层结构 ``` src/ ├── domain/ # 领域模型、聚合根、值对象、领域行为 ├── application/ # 用例编排、端口定义、DTO、国际化 ├── infrastructure/ # 模型网关、配置读写、存储、Prompt 加载、工具执行 └── presentation/ # Ink UI、交互控制器、终端布局、视图组件 ``` ### 设计原则 - **高性能** — 终端渲染稳定,流式输出减少抖动与重复渲染 - **低耦合** — 领域、应用、基础设施、展示层职责清晰 - **高内聚** — 会话、配置、存储、提示词、命令系统各自独立演进 - **高复用** — 端口、用例、Prompt Pack、存储解析和 UI 组件均可复用 - **可扩展** — 已具备有界并行 Agent 编排、多轮执行和插件能力的清晰入口 ### 开发规范 仓库内置 `.rules/` 目录,约束协作方式、架构边界和交付质量: - [.rules/README.md](./.rules/README.md) - [.rules/00-core.md](./.rules/00-core.md) - [.rules/10-architecture.md](./.rules/10-architecture.md) - [.rules/20-coding-style.md](./.rules/20-coding-style.md) - [.rules/30-delivery-workflow.md](./.rules/30-delivery-workflow.md) - [.rules/40-ai-collaboration.md](./.rules/40-ai-collaboration.md) --- ## 📈 里程碑 | 代号 | 目标 | 状态 | |---|---|---| | **M1** | 会话持久化与启动恢复 | ✅ 已完成 | | **M2** | 工具调用与 Agent 能力(8 内置工具 + MCP + 20 轮 Agent 循环) | ✅ 已完成 | | **M3** | 审批 / 权限 / UI 打磨与产品化收口(原子 multi-patch、写入后诊断、待办面板、存储文档) | ✅ 已完成 | --- ## 📄 License [MIT](./LICENSE) © 2026 adnaan ---
Made with 🦦 by **adnaan**