Ink
English | 简体中文
一个开源的终端 AI 助手与 agent 运行框架。可以用 Ink 做研究、写作、分析、软件开发, 以及其他需要工具辅助的任务。从零构建,设计灵感来自 pi。

让 Ink 适应你的工作流,而不是反过来:通过扩展、 技能、具名子代理和 MCP 服务器来扩展它——内置的 示例(扩展、子代理、技能各一)展示了用法。
快速开始
在你希望它工作的目录里安装并运行:
npm install -g ink-agent@latest
cd /path/to/project
ink
用非交互方式验证安装是否成功:ink --version(输出 Ink <版本号>)或
ink --help;脚本化的一次性调用用 ink -p "问题",打印答案后退出。
npm 包安装时不运行任何生命周期脚本。卸载用 npm uninstall -g ink-agent。
也可以让 npm 从明确的包名推断出唯一的 ink 可执行文件:
npm exec -- ink-agent@latest --help
登录:启动后用 /login——选择提供商并输入 API key(存储到
~/.ink/auth.json,优先于环境变量);ChatGPT 套餐走 OAuth 设备码流程。
也可以在启动前设环境变量(如 export ANTHROPIC_API_KEY=sk-ant-...;
全部提供商与凭据方式见提供商文档)。接着给 Ink
一个任务。完整的入门介绍请从文档的主题地图开始。
从源码检出运行:
npm install # installs dependencies and builds (prepare script)
npm start # launches the interactive REPL
更新源码检出时,不要复制凭据、迁移状态或发布;正常安装请用上面的 npm 包。
Ink 只读取 ~/.ink 和 INK_* 配置,从不触碰历史的 .imp 状态——
见 docs/cli.md。
内部构成
一个带交互终端界面、持久会话和可扩展工具的完整助手:
- 交互式 TUI(流式输出、单行工具状态、排队的转向指令和后续追问),外加
打印模式(
ink -p "...")和管道 stdin 输入 - Agent 循环:流式 LLM 调用 + 工具执行,支持中断、参数校验、错误反馈、 转向钩子和压缩钩子
- 会话:仅追加的 JSONL 消息树(
~/.ink/sessions/),--continue/--resume <id>/ink sessions,/tree导航器,/fork分叉 - 自动压缩:接近上下文窗口时,较早的对话轮次会被 LLM 摘要成一个检查点; 最近的轮次和磁盘上的完整历史都会保留
- 工具:
bash(超时、截断)、read(offset/limit、图片)、edit(精确匹配的多处编辑)、write、grep(ripgrep)、find(fd)、ls、task(子代理)——搜索工具遵循 .gitignore - 提供商:Anthropic、OpenAI(API key 或 ChatGPT 套餐 OAuth)、智谱 Z.AI(GLM)、
DeepSeek、月之暗面 Kimi(国际与国内端点)——凭据来自环境变量或
/login - 扩展、技能、具名子代理、MCP 服务器、markdown 快捷命令,以及自定义系统提示 (SYSTEM.md)
路线图和历史实现台账在 PROJECT_PLAN.md;每个功能的设计文档与评审记录在
docs/design/(不随 npm 包发布)。
一屏看完交互模式
不带参数运行 ink,进入围绕同一份会话与共享对话的交互界面。普通行发送给
模型;Ink 工作期间输入的行会排队(回车以 steer: 发送、alt+回车以
follow-up: 发送——alt+上箭头可以找回它们)。Ctrl+C 中断当前轮次(按两次
退出);Ctrl+D 退出;Ctrl+O 展开所有折叠;Ctrl+L 打开模型选择器;
Shift+Tab 切换思考档位;Ctrl+T 隐藏推理轨迹。
斜杠命令:/help、/exit、/new、/fork <n>、/tree、/sessions、
/resume <id>、/model [id]、/think [level]、/compact、/status、
/copy、/name、/trust、/worktrees、/login、/logout、/mcp、
/settings。未知命令会得到提示而不是发给模型;行首加一个空格可发送字面
斜杠开头的文本。细节见 sessions.md。
alt 系列快捷键的终端说明:iTerm2、Ghostty、Kitty 和较新的 VS Code 终端
开箱即用。WezTerm 默认把 Option+回车绑成全屏,Alacritty 可能发送普通
回车——把它们映射为 \x1b[13;3u,或改用 esc+p。
文档
完整文档在 docs/index.md——主题地图从这里开始。 同一套文档也发布为站点:fishinsalt.github.io/ink/zh:
- CLI 参考——安装、打印模式、管道、全部命令行参数与环境变量
- 提供商与模型——登录、模型家族、
/model、pi.dev 模型目录 - 会话——JSONL 树、
/tree、/fork、压缩、转向与 后续追问 - 设置——settings.json 的键、SYSTEM.md、markdown 快捷命令
- 扩展——工具、命令、事件门控、配色、内置示例
- 技能——SKILL.md 包、发现层级
- MCP——stdio 与 Streamable HTTP 服务器、配置发现
- 子代理——
task工具、具名 agent、worktree 隔离 - 图片——视觉模型、粘贴、缩放阶梯
npm 包会随包发布这些文档;agent 会把自己的问题路由到文档里。内置的 示例——扩展、一个具名子代理、一个技能——随包安装。
平台支持
- macOS——开发平台;功能最先在这里验证。
- Linux——支持:CI 在
ubuntu-latest上跑完整门禁(typecheck、lint、 build、测试),覆盖精确的 Node 22.19.0 下限和 Node 24。CI 强制安装rg和fd,搜索工具测试无法静默跳过。 - Windows——暂不支持。原生 Windows 存在已知阻塞(
bash工具固定 启动/bin/bash;MCP 服务器启动时缺少.cmd/ shell 解析)且没有 CI 覆盖。WSL 可用——在 WSL 里 Ink 就是普通的 Linux 程序。
外部工具是可选的且依平台而定:rg / fd 支撑 grep / find 工具
(缺失时给出安装提示;Ink 其余功能不受影响);剪贴板图片粘贴在 macOS 用
osascript,在 Linux 用 wl-paste / xclip。
开发
npm run build # tsc
npm run dev # tsx src/cli.ts (no build)
npm run typecheck # tsc --noEmit (both configs)
npm run lint # biome + script syntax checks
npm test # vitest run
设计档案:每个功能的设计文档与评审记录在 docs/design/
(不随 npm 包发布)。RELEASING.md 记录发布流程。仓库曾从
FishInSalt/imp 改名而来;GitHub 会重定向旧 URL,历史发布与设计记录保留
原名。