Skip to content

Repository files navigation

aiterm · AI 终端学习助手

把 AI 融入终端:你像平常一样在 真实 shell 里敲命令,命令执行后 AI 会给一句简洁提示; 也可以直接输入 ai 你的问题 向 AI 提问。适合在香橙派(arm64)等 Linux 设备上, 作为学习 Linux / 终端的小助手。

特性

  • 包裹真实 bash:用 pty 常驻一个交互式 bash,完整保留 cdexportalias、函数等状态。
  • 交互程序照常可用:命令执行期间双向透传,vim / top / less / python 等都能正常交互。
  • 命令后自动提示:解释命令作用与结果;出错时给出可能原因和修复建议。
  • 随时提问ai <问题>,并会带上最近几条命令作为上下文。
  • 零第三方依赖:仅用 Python 标准库(含流式请求),方便在 arm64 设备部署。
  • OpenAI 兼容:支持 OpenAI / DeepSeek / 通义千问兼容模式等任意兼容接口。

四大学习特性

  • 📚 系统学习模式:learn):给定一个主题,AI 生成课程大纲(目录),再按需逐章生成 「知识点 + 自测问答 + 动手 Lab」内容;Lab 可在真实 shell 中校验,进度自动落库。
  • 🏆 成就系统:ach):命令探索、技能徽章、纠错达人、学习里程碑、Lab 通关、连续学习、 专注时长等成就自动解锁;可选择将成就作为一笔带 memo 的交易上链到 Injective 测试网 作为不可篡改凭证(:chain)。
  • ☕ 休息模式:break):连续学习到阈值(默认 45 分钟)自动提醒休息,隐藏提示符、 AI 给出放松建议并倒计时,:resume 恢复。阈值可 :break config 调整。
  • 🎙️ 语音模式:voice):回合制语音对话(录音 → 转写 → LLM → 合成 → 播放), 语音识别/合成使用 阶跃星辰(StepFun),音频走系统默认设备(可搭配蓝牙耳机)。

学习/成就为纯本地 SQLite(~/.local/share/aiterm/aiterm.db,可用 AITERM_DATA_DIR 覆盖), 零第三方依赖;上链为可选 extra;语音依赖系统音频工具(arecord/aplay 等),无 Python 硬依赖。

环境要求

  • Linux / 类 Unix 系统(依赖 pty不支持 Windows 原生;可用 WSL 或 SSH 到 Linux)。
  • Python 3.8+
  • 系统中有 bash(默认 /bin/bash,可用环境变量 AITERM_SHELL 覆盖)。

安装与运行

把整个项目拷贝到目标设备(例如香橙派)后:

# 方式一:直接运行(无需安装)
python3 -m aiterm

# 方式二:安装为命令
pip install -e .
aiterm

首次运行若未配置 API,会弹出向导,填写 base_url / 模型 / API Key 即可。

配置

优先级:环境变量 > 配置文件 > 默认值。配置文件位于 ~/.config/aiterm/config.json (可用 AITERM_CONFIG 指定其它路径)。

环境变量:

export AITERM_API_KEY=sk-xxxx
export AITERM_BASE_URL=https://api.deepseek.com
export AITERM_MODEL=deepseek-chat

# 语音模式(阶跃星辰):也可写入配置文件 voice.api_key
export AITERM_STEP_API_KEY=your-stepfun-key
# 成就上链(Injective 测试网):私钥仅本地使用,绝不写入日志
export AITERM_INJECTIVE_PK=your-hex-private-key
# 数据目录(SQLite)覆盖
export AITERM_DATA_DIR=~/.local/share/aiterm

常见服务商示例:

服务商 base_url model
OpenAI https://api.openai.com/v1 gpt-4o-mini
DeepSeek https://api.deepseek.com deepseek-chat
通义千问 https://dashscope.aliyuncs.com/compatible-mode/v1 qwen-plus

也可参考 config.example.json

常用命令(在助手内输入)

<任意命令>                像平常一样执行
ai <问题>                 直接向 AI 提问

:learn                    查看当前课程与进度
:learn new [主题]         新建课程(生成大纲)
:learn list               列出课程
:learn open <序号>        切换课程
:learn next               进入下一个未完成章节
:learn chapter <n>        进入指定章节
:lab check                校验当前章节的动手 Lab

:ach                      查看成就列表与进度
:ach info <id>            成就详情
:ach chain <id>           将成就上链(Injective 测试网)
:ach sync                 补推所有待上链成就
:chain [on|off|auto|key]  查看/配置上链

:break                    立即休息
:break config             查看/设置休息阈值
:resume                   结束休息,继续学习

:voice                    进入回合制语音对话

:help                     帮助
:mode always|error|off    命令后自动提示模式(默认 always)
:model <名称>             切换模型
:config                   重新配置 API
:clear                    清空对话上下文
:quit                     退出(也可直接 exit)

上链(可选)

成就上链使用 injective-py,作为可选依赖:

pip install -e .[chain]          # 或:pip install aiterm[chain]
export AITERM_INJECTIVE_PK=...    # 测试网私钥(hex)
# 领取测试网 gas:https://testnet.faucet.injective.network/

在助手内 :chain on 开启、:chain auto on 开启自动上链;解锁成就后会以一笔 带 memo 的自转账交易记录到 Injective 测试网,:ach info <id> 可查看浏览器链接。 未安装 SDK 或未配私钥时,成就仍在本地正常记录,仅跳过上链。

语音模式(可选)

语音识别/合成走阶跃星辰(StepFun),对话仍复用主 LLM。需要:

  • 配置 AITERM_STEP_API_KEY(或配置文件 voice.api_key)。
  • 系统音频工具:录音 arecord/parec/pw-record/ffmpeg 之一,播放 aplay/paplay/ffplay 之一。
  • 蓝牙耳机请先用系统 BlueZ 配对,走系统默认设备即可;如需指定,可在配置文件设置 voice.record_cmd / voice.play_cmd

:voice 进入后按回车开始/结束说话,说“退出”或 Ctrl-C 结束。

已知限制

  • 提示符/行编辑由 Python readline 提供,不是 bash 自带的补全(命令仍由真实 bash 执行)。
  • 多行结构(heredoc、for ... do)可在续行中继续输入,但复杂粘贴场景可能不完美。
  • 自动提示每条命令都会调用一次 API,可用 :mode error 改为仅出错时提示以降低成本。

About

An AI terminal tutor #adventurex

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages