Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

first_model_shell - 第一层大模型交互Shell

一个极简的大模型交互Shell,使用文件系统记录所有交互历史,实现上下文管理。

设计理念

file is all:所有交互状态都通过文件记录和管理。初始化设定、用户输入、模型输出均保存为文件,下次交互时拼接历史文件和最新输入实现上下文。通过编辑文件即可编辑上下文。

项目原则

  • 简单交互:只实现最基础的交互功能
  • 零抽象:禁止任何抽象、方法抽取调用,整个脚本一目了然
  • 专注基础:高级功能(会话管理、上下文工具、子代理、任务规划等)不在此层实现,请使用其他高级工具

依赖要求

  • Ollama - 本地大模型运行环境

快速开始

# 简单对话
bash ./chat.sh "你好,介绍一下这个项目"

# 带命令执行的对话
bash ./command.sh "创建一个test.txt文件"

# 归档当前会话
bash ./log_archive.sh

目录结构

目录 说明
init_log_chat/ 简单对话会话的初始化模板
init_log_command/ 带命令执行对话会话的初始化模板
log_chat/ 当前进行的简单对话会话(自动创建)
log_command/ 当前进行的带命令执行对话会话(自动创建)
zzz/ 会话归档目录,按时间戳存放历史会话

命令说明

chat.sh - 简单对话

# 开始新对话或继续现有对话
./chat.sh "用户消息内容"

# 无参数时继续现有对话
./chat.sh

功能

  • 如果 log_chat 目录不存在,从 init_log_chat 复制模板创建新会话
  • 记录用户输入到时间戳命名的 .msg 文件
  • 合并所有历史消息发送给Ollama模型(使用 qwen2.5:7b
  • 保存模型输出到 .model_output 文件并追加到消息文件

command.sh - 带命令执行的对话

# 开始新命令会话或继续现有会话
./command.sh "执行一个Linux命令"

# 无参数时继续现有会话  
./command.sh

功能

  • 如果 log_command 目录不存在,从 init_log_command 复制模板创建新会话
  • chat.sh 相同的对话记录功能
  • 额外功能:解析模型输出中的命令块并执行
  • 命令块格式:
    MCCB_model_call_command_blocks_start
    # 命令内容(如:echo "Hello World")
    MCCB_model_call_command_blocks_end
    
  • 包含安全机制:检查危险操作(如 rm -rf)需要用户确认

log_archive.sh - 会话归档

# 将当前会话归档到zzz目录
./log_archive.sh

功能

  • log_chatlog_command 目录移动到 zzz/ 目录下
  • 按时间戳重命名(格式:log_chat_YYYYMMDD_HHMMSS
  • 归档后可以开始新的会话

使用示例

示例1:简单对话

$ ./chat.sh "你好"
会话开始
用户: 你好
model: 你好!有什么我可以帮助你的吗?

$ ./chat.sh "介绍一下Linux"
用户: 介绍一下Linux
model: Linux是一种开源的操作系统内核,由林纳斯·托瓦兹于1991年首次发布...

示例2:带命令执行的对话

$ ./command.sh "创建一个hello.txt文件"
会话开始
用户: 创建一个hello.txt文件
model: 我来帮你创建一个hello.txt文件。
MCCB_model_call_command_blocks_start
echo "Hello World" > hello.txt
MCCB_model_call_command_blocks_end
脚本执行结果:
Hello World
脚本退出状态: 0

示例3:归档会话

$ ./log_archive.sh
# log_chat和log_command目录被移动到zzz/log_chat_20260404_161609等目录

文件格式说明

  • .msg 文件:纯文本格式,包含完整的对话历史
  • .model_output 文件:模型原始输出
  • .model_output_command.sh 文件:从模型输出提取的可执行脚本

注意事项

  1. 安全警告command.sh 会执行模型生成的命令,请谨慎使用
  2. 模型要求:默认使用 qwen2.5:7b 模型,确保已通过 ollama pull qwen2.5:7b 下载
  3. 会话管理:长时间对话可能产生大量文件,定期使用 log_archive.sh 归档
  4. 自定义模型:修改脚本中的 ollama run qwen2.5:7b 部分可使用其他模型

工作原理

用户输入 → 保存到.msg文件 → 拼接所有历史.msg文件 → 发送给模型
          ↑                                      ↓
    上下文维护 ← 模型输出保存到.msg文件 ← 接收模型输出

通过编辑历史 .msg 文件,可以手动修改对话上下文,实现精确的上下文控制。

About

第一层大模型交互Shell 一个极简的大模型交互Shell,使用文件系统记录所有交互历史,实现上下文管理。

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages