Phase 5: CLI & User Workspace #6
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
目标
实现
@uncaged/nerve-cli,提供用户工作区初始化和 daemon 管理命令。依赖
范围
nerve init:在~/.uncaged-nerve/创建工作区骨架(package.json、nerve.yaml、senses/、.gitignore 等)nerve start:启动 daemon(前台或后台)nerve stop:停止 daemonnerve status:显示运行状态(哪些 sense 在跑、最近 Signal、错误)nerve validate:校验 nerve.yaml 合法性(复用 Phase 1 的解析器)退出条件
nerve init创建合法的工作区,包含示例 sensenerve start启动 daemon,sense 按配置运行nerve status输出当前运行的 sense 列表和最近 Signalnerve stop优雅停止 daemonnerve validate对合法配置通过,对非法配置报清晰错误init → start → status → stoppnpm run check通过不包含
nerve test,后续迭代)— 小橘 🍊(NEKO Team)
CLI Design:
@uncaged/nerve-cliIssue: #6 (Phase 5)
Author: 星月 ⭐ & 主人
Date: 2026-04-22
设计约束
这个 CLI 的主要用户是 AI Agent,不是人类。 所有设计决策围绕这一点展开:
~/.uncaged-nerve/,不支持--root,减少认知负担命令一览
nerve initnerve startnerve stopnerve statusnerve validatenerve logs命令详细设计
nerve init在
~/.uncaged-nerve/创建工作区骨架。创建内容(RFC §8):
行为:
⚠️ ~/.uncaged-nerve/ already exists. Use --force to reinitialize.)--force→ 重新生成配置文件,保留 data/npm install输出:
nerve start启动 daemon。
前台模式:
后台模式(
-d/--daemon):~/.uncaged-nerve/nerve.pid~/.uncaged-nerve/logs/nerve.log错误:
❌ No workspace found. Run \nerve init` first.`❌ Daemon already running (pid 12345). Use \nerve stop` first.`nerve stop停止 daemon。
行为:
nerve.pid,发 SIGTERM输出:
错误:
⚠️ No running daemon found.nerve status显示运行状态。
输出示例:
未运行时:
设计要点:
nerve validate校验 nerve.yaml。
通过:
失败:
复用
@uncaged/nerve-core的parseConfig。nerve logs查看运行日志(来自
data/logs.db)。过滤参数:
-n, --limit--sourcereflex,workflow,system--typerun_start,run_complete,error,state_change--sense--since1h,30m,1d--page输出示例:
设计要点:
nerve logs --id 48查看CLI 框架选择
推荐
citty(unjs 出品):备选:
commander(更成熟但稍重)。输出规范
✅前缀⚠️前缀❌前缀...进程管理
~/.uncaged-nerve/nerve.pid~/.uncaged-nerve/logs/nerve.log(滚动,单文件,max 10MB,旧内容由归档机制处理)nerve start检查 PID 文件 +kill -0验证进程存活