MindSpore CLI — an AI infrastructure agent with a terminal UI.
- Go 1.24.2+ (see
go.mod)
Build:
go build -o ms-cli ./appRun demo mode:
go run ./app --demo
# or
./ms-cli --demoRun real mode:
go run ./app
# or
./ms-cliIn TUI input, use slash commands:
/roadmap status [path](default:roadmap.yaml)/weekly status [path](default:weekly.md)
Any non-slash input is treated as a normal task prompt and routed to the engine.
| Key | Action |
|---|---|
enter |
Send input |
pgup / pgdn |
Scroll chat |
up / down |
Scroll chat |
home / end |
Jump to top / bottom |
/ |
Start a slash command |
ctrl+c |
Quit |
Roadmap status engine:
internal/project/roadmap.go- Parses roadmap YAML, validates schema, and computes phase + overall progress.
Weekly update parser (Markdown + YAML front matter):
internal/project/weekly.go- Template:
docs/updates/WEEKLY_TEMPLATE.md
Public roadmap page:
docs/roadmap/ROADMAP.md
Project reports:
docs/updates/(see latest*-report.md)
ms-cli/
├── app/ # entry point + wiring
│ ├── main.go
│ ├── bootstrap.go
│ ├── wire.go
│ ├── run.go
│ └── commands.go
├── agent/
│ ├── loop/ # engine, task/event types, permissions
│ ├── context/ # budget, compaction, context manager
│ └── memory/ # policy, store, retrieve
├── executor/
│ └── runner.go # pluggable task executor
├── integrations/
│ ├── domain/ # external domain client + schema
│ └── skills/ # skill invocation + repo
├── internal/
│ └── project/
│ ├── roadmap.go
│ └── weekly.go
├── tools/
│ ├── fs/ # filesystem operations
│ └── shell/ # shell command runner
├── trace/
│ └── writer.go # execution trace logging
├── report/
│ └── summary.go # report generation
├── ui/
│ ├── app.go # root Bubble Tea model
│ ├── model/model.go # shared state types
│ ├── components/ # spinner, textinput, viewport
│ └── panels/ # topbar, chat, hintbar
├── docs/
│ ├── roadmap/ROADMAP.md
│ └── updates/
├── go.mod
└── README.md
- The real-mode engine flow is still minimal/stub-oriented.
- Running Bubble Tea in non-interactive shells may fail with
/dev/ttyerrors.
UI listens to events; agent loop emits events; executor/tools do not depend on UI.