一个受 Claude Code 启发的智能命令行助手。
想了解更多背景?参见 产品介绍。
想了解文档驱动开发在本项目中的实践?参见 Showcase 说明。
- 单次模式:直接执行单次任务,无上下文保留
- REPL 模式:持续对话,支持上下文和输入历史(上下键切换)
- 工具调用:读文件、写文件、编辑、搜索、执行 Shell、向用户提问
- 内置 Skills:
/init、/loop、/commit等快捷命令 - 流式 TUI:基于 Ink 的终端交互界面
# 全局安装 npm install -g @boltdoggy/boli # 单次模式 boli "帮我写一个快速排序" # 单次模式,不注入项目上下文 boli --no-context "帮我写一个快速排序" # REPL 模式 boli
不想全局安装时,也可以用 npx:
npx @boltdoggy/boli "帮我写一个快速排序"# 安装依赖 pnpm install # 从源码直接运行(无需构建) bun run src/cmd/cli.ts "帮我写一个快速排序" # 构建产物 pnpm run build # 用 pnpm 链接本地包进行测试 pnpm link --global boli "帮我写一个快速排序"
src/
├── cmd/ # CLI 入口与参数解析
├── domain/ # 核心领域模型(message、session、skill、tool)
├── infra/ # 基础设施(LLM、文件系统、Shell、配置、持久化)
├── interactive/ # Ink 交互界面(REPL、用户输入、流式渲染)
└── skills/ # 内置 skill 实现
- domain 层:纯业务逻辑,无框架依赖
- infra 层:对接外部系统,隔离实现细节
- interactive 层:负责所有终端交互
# 从源码直接运行(无需构建) bun run src/cmd/cli.ts "帮我写一个快速排序" # 开发运行 REPL 模式 pnpm run dev # 类型检查 pnpm exec tsc --noEmit # 构建 pnpm run build
- 在
src/domain/skill.ts中定义 Skill 接口与元数据 - 在
src/skills/下实现具体逻辑 - 在
src/agent/skill-registry.ts中注册
| 文档 | 说明 |
|---|---|
| docs/guides/product.md | 产品定位与核心能力介绍 |
| docs/guides/showcase.md | 文档驱动开发实践说明 |
| docs/requirements/cli-tool-requirements.md | CLI 工具需求文档 |
| docs/design/cli-tool-design.md | CLI 工具架构设计 |
| docs/adr/ | 架构决策记录 |
| 功能/变更 | 状态 |
|---|---|
| CLI 工具 MVP(单次/REPL 模式、基础工具调用) | ✅ 已完成 |
P1 增强(/init、/loop、输入历史) |
✅ 已完成 |
| 测试框架引入 | ⬜ 待进行 |
| 打包分发 | ⬜ 待进行 |
本仓库遵循严格的文档驱动开发流程,详见 CLAUDE.md 与 docs/guides/showcase.md。