DeepSeek 驱动的终端 UI 红队辅助工具 —— 哪吒之魔童降世角色人格
- 项目概述
- 核心特性
- 技术架构
- 依赖栈
- 安装指南
- 配置说明
- 使用指南
- 智能体系统
- 文件工具与项目创建
- 对话持久化
- DeepSeek API 集成
- 快捷键速查
- 项目结构
- 开发指南
- 故障排除
- 路线图
- 贡献指南
- 许可证
- 默认 Agent「哪吒」—— 魔丸降世,自称"小爷",口头禅"我是小妖怪,逍遥又自在"
- 纯中文输出,绝不说英文
- 按
Ctrl+1/2/3或Ctrl+Tab快速切换 Agent(哪吒 / 代码审计专家 / 威胁情报分析师)
- SSE 流式通信,逐 Token 渲染
- AI 思考中动画指示器("[哪吒] 正在思考...")
- 自动滚动到底部,手动上滚查看历史时不自动滚动
- 4 个本地文件操作工具:
write_file/read_file/create_directory/list_directory - AI 请求工具调用 → 弹出居中确认对话框 → 用户按
Y确认 /N拒绝 - 路径沙箱保护,禁止越界访问当前目录
read_file输出自动截断 200 行
- 基于
rusqlite内嵌 SQLite,无需系统安装 /save保存当前对话,/load <id>加载历史对话/history列出所有已保存对话- 退出时自动保存(可配置
auto_save偏好)
- 模糊搜索所有命令:
/model/theme/agent/save/load/history/new/close - 实时过滤,Enter 执行
- 实时 Token 计数(提示 / 生成 / 总计)
- 费用计算(基于 DeepSeek 定价 ¥2.0 / ¥8.0 每百万 Token)
- 侧边栏实时显示账户余额(¥)
- 分屏布局:左侧可折叠侧边栏 + 右侧聊天区
- 消息自动宽度换行,中文友好
- 两套内置主题:赛博暗色 + 日光亮色 (
/theme daylight) - 多标签页会话管理(
Ctrl+N)
用户按键 / API 事件 / Tick
│
▼
Action (mpsc 通道) ──► update() ──► 修改 App 状态
│
▼
render() 重绘界面
- Model:
App全局状态(标签页、Agent 配置、记忆库、余额、确认对话框) - Update:
update()处理 30+ Action 变体 - View: 9 个纯渲染函数
| 依赖 | 版本 | 用途 |
|---|---|---|
ratatui |
0.29 | 终端 UI 框架 |
crossterm |
0.28 | 终端控制 |
tokio |
1 | 异步运行时 |
reqwest |
0.12 | HTTP + SSE 流 |
rusqlite |
0.31 (bundled) | 对话持久化 |
serde + serde_json + serde_yaml |
1 / 1 / 0.9 | 序列化 |
uuid |
1 | 消息唯一标识 |
chrono |
0.4 | 时间戳 |
unicode-width |
0.2 | 中日韩字符宽度 |
dotenvy |
0.15 | .env 文件加载 |
总计 14 个直接依赖,编译为单一二进制文件。
- Rust toolchain(stable,2021 edition+):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - DeepSeek API Token(https://platform.deepseek.com)
git clone https://gitcode.com/ctkqiang_sr/nezha_cyber.git
cd nezha_cyber
echo 'DEEPSEEK_TOKEN=sk-你的token' > .env
cargo build --release
./target/release/nezha_cybercargo install --git https://gitcode.com/ctkqiang_sr/nezha_cyber.git| 方式 | 说明 |
|---|---|
.env 文件 |
项目根目录创建 .env → DEEPSEEK_TOKEN=sk-xxx |
export |
export DEEPSEEK_TOKEN=sk-xxx && nezha_cyber |
config.yaml |
YAML 配置文件中的 api_key 字段 |
优先级:.env → config.yaml → 环境变量。同时支持旧版 DEEPSEEK_API_KEY。
api_base: 'https://api.deepseek.com'
default_model: 'deepseek-v4-pro'
default_pricing:
prompt_price_per_m: 2.0
completion_price_per_m: 8.0agents:
- name: '自定义Agent'
description: '功能描述'
system_prompt: '系统提示词...'
model: 'deepseek-v4-pro'
tools: []- 在底部输入区键入消息
- 按
Enter发送 - AI 回复逐 Token 流式显示
- 左侧边栏查看 Token 用量、费用和余额
| 方式 | 操作 |
|---|---|
| 快捷键 | Ctrl+1 Ctrl+2 Ctrl+3 或 Ctrl+Tab 循环 |
| 命令面板 | Ctrl+K → /agent 哪吒 |
用户: "帮我写一个 Python FastAPI 项目"
→ 哪吒: 调用 list_directory 查看当前目录
→ 弹出确认对话框 ─ 按 Y 确认
→ 哪吒规划架构 → 调用 create_directory + write_file × N
→ 每次写入弹出确认 ─ 按 Y/N 决定是否落盘
→ 项目创建完成
| 命令 | 功能 |
|---|---|
/save |
保存当前对话 |
/load <id> |
加载历史对话 |
/history |
列出所有已保存对话 |
魔丸降世,性格叛逆又正义,嘴毒心软。自称"小爷",说话带少年痞气。红队高手。
源代码安全审查、漏洞分析、安全编码规范。
APT 攻击分析、恶意软件行为、攻击链追踪、IOC 提取。
- 端点:
POST https://api.deepseek.com/chat/completions - 余额查询:
GET https://api.deepseek.com/user/balance - 协议: SSE 流式传输
- 认证:
Bearer Token - 定价: 输入 ¥2.00 / 百万 Token,输出 ¥8.00 / 百万 Token
| 快捷键 | 功能 |
|---|---|
Ctrl+C |
退出 |
Ctrl+N |
新建标签页 |
Ctrl+K |
命令面板 |
Ctrl+B |
折叠侧边栏 |
Ctrl+1/2/3 |
切换 Agent |
Ctrl+Tab |
下一个 Agent |
Esc |
关闭面板/拒绝工具调用 |
| 快捷键 | 功能 |
|---|---|
Enter |
发送消息 |
Backspace |
删除字符 |
Up/Down |
滚动消息 |
PgUp/PgDn |
滚动 5 行 |
| 按键 | 操作 |
|---|---|
Y |
确认执行(写文件/读文件/建目录) |
N |
拒绝 |
Esc |
忽略(同拒绝) |
nezha_cyber/
├── Cargo.toml
├── .env # API Token(不入版本控制)
├── config.yaml # 应用配置(可选)
├── agents.yaml # 智能体定义(可选)
├── src/
│ ├── main.rs # 入口 + 事件循环 + 键盘处理
│ ├── action.rs # Action 枚举(30+ 变体)
│ ├── app.rs # App 全局状态 + update()
│ ├── api/
│ │ ├── types.rs # 数据结构(Message, Usage, Role 等)
│ │ └── deepseek.rs # DeepSeek SSE 流式客户端
│ ├── agent/
│ │ └── config.rs # YAML 配置解析 + AppConfig
│ ├── persistence/
│ │ ├── mod.rs
│ │ └── db.rs # SQLite CRUD(MemoryStore)
│ ├── tools/
│ │ ├── mod.rs
│ │ └── executor.rs # 文件工具本地执行器 + 路径沙箱
│ └── ui/
│ ├── layout.rs # 布局计算
│ ├── theme.rs # 2 套主题
│ └── render.rs # 9 个渲染函数
└── tests/
└── integration_test.rs
git clone https://gitcode.com/ctkqiang_sr/nezha_cyber.git
cd nezha_cyber
echo 'DEEPSEEK_TOKEN=sk-xxx' > .env
cargo build && cargo runcargo test # 107 passed, 0 failedcargo build --release- 检查
.env中的 Token 是否有效且以sk-开头 - 验证端点连通:
curl -H "Authorization: Bearer $DEEPSEEK_TOKEN" https://api.deepseek.com/user/balance - 确认 API Base 为
https://api.deepseek.com(无/v1)
- 未设置 Token 时显示"检查中…",设好 Token 后重启
- Token 过期/无效时侧边栏显示"余额不足"
- 调整窗口大小自动重排
- 极端情况按
Ctrl+C退出重进
- Elm Architecture 架构
- DeepSeek SSE 流式对话
- 哪吒角色人格注入
- SQLite 对话持久化(/save /load /history)
- 文件工具 + Claude Code 风格确认对话框
- 命令面板 Ctrl+K 模糊搜索
- Agent 切换(Ctrl+1/2/3 / Ctrl+Tab)
- 账户余额实时显示
- .env 文件支持
- 107 单元测试
- 多行输入支持(Ctrl+J 换行)
-
@文件附件自动补全 -
/compact/fork/export命令执行引擎 - 自定义工具插件系统
- 会话导出为 Markdown / JSON / HTML
- 鼠标支持:侧边栏点击,滚轮滚动
- 自定义主题 YAML 配置
- gRPC / WebSocket 替代传输
- 终端录屏与审计回放
- 跨平台 CI/CD 自动化发布
- Fork 仓库 → 从
main创建分支 - 遵循项目代码规范(见
.trae/rules/project.md) - 确保
cargo build零 warning,cargo test全绿 - 使用 Conventional Commits 格式提交
- 提交 Pull Request
MIT License — 详见 LICENSE
