Skip to content

chat 命令

chat 命令启动交互式对话模式,允许您与 AI 助手进行多轮对话。

基本用法

bash
mydeskbot chat

选项

选项简写说明默认值
--model-m指定 AI 模型gpt-4
--temperature-t设置温度参数0.7
--system-s设置系统提示词-
--history-加载历史对话-
--no-stream-禁用流式输出false

交互式命令

在 chat 模式中,可以使用以下命令:

命令简写说明
/help/h显示帮助
/clear/c清空对话历史
/model <model>/m切换模型
/exit/q退出对话
/save <file>/s保存对话到文件
/load <file>/l从文件加载对话
/context <file>-添加上下文文件
/system <prompt>/sys设置系统提示词
/temperature <value>/t设置温度参数

使用示例

基本对话

bash
$ mydeskbot chat

> 你好!
你好!我是 MyDeskBot AI 助手,有什么可以帮助您的吗?

> 如何学习编程?
学习编程的建议:
1. 选择一门编程语言开始
2. 理解基本概念
3. 多动手实践
4. 阅读优秀代码
5. 参与开源项目

...

切换模型

bash
> /model gpt-3.5-turbo
已切换到 gpt-3.5-turbo

设置系统提示词

bash
> /system 你是一个专业的 Python 开发者,专注于数据分析
系统提示词已更新

添加上下文

bash
> /context data.csv
已添加 data.csv 作为上下文

> 分析这个 CSV 文件
[AI 会基于文件内容回答]

保存和加载

bash
> /save conversation.json
对话已保存到 conversation.json

> /clear
对话历史已清空

> /load conversation.json
已从 conversation.json 加载对话

高级功能

代码编写辅助

bash
> 我要创建一个 REST API
好的,我来帮您设计。您想使用什么技术栈?
> Python + FastAPI
很好!FastAPI 是一个现代、快速(高性能)的 Web 框架。

首先安装依赖:
pip install fastapi uvicorn

创建 main.py:
```python
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello World"}

需要我继续添加更多功能吗?


### 调试辅助

```bash
> /context app.py
> 我的代码报错了,请帮我看看

[粘贴错误信息]

让我分析一下错误。错误信息显示是 NameError,表示使用了未定义的变量。

问题在这行代码:
```python
result = calculate(x, y)

您使用了 calculate 函数,但代码中没有定义这个函数。

修复方法:

  1. 定义 calculate 函数
  2. 或者使用其他已存在的函数

### 学习辅导

```bash
> /system 你是一个耐心的编程导师
系统提示词已更新

> 我不理解递归
没问题,让我用简单的例子解释递归。

递归就是函数调用自己。想象一下:

```python
def countdown(n):
    if n <= 0:
        print("发射!")
    else:
        print(n)
        countdown(n - 1)

countdown(5)

这个函数会:

  1. 打印 5
  2. 调用 countdown(4)
  3. 打印 4
  4. 调用 countdown(3) ... 直到 n <= 0

关键是要有:

  1. 基准情况(停止条件)
  2. 递归情况(继续调用自己)

这样理解了吗?还有什么疑问吗?


## 多文件上下文

```bash
> /context models/user.py
> /context services/user_service.py
> /context controllers/user_controller.py
> 这些文件之间有什么关系?

分析这三个文件的关系:

1. models/user.py - 数据模型层
   - 定义 User 类的数据结构
   - 包含字段定义和验证

2. services/user_service.py - 业务逻辑层
   - 使用 User 模型
   - 实现业务规则
   - 处理数据验证

3. controllers/user_controller.py - 接口层
   - 调用 user_service
   - 处理 HTTP 请求
   - 返回响应

这是一个典型的三层架构,层次分明,职责清晰。

实时协作

代码审查对话

bash
> /context PR-description.md
> /context diff.txt
> 这个 PR 做了什么改动?

根据 PR 描述和代码差异,这个 PR 的主要改动是:

1. **新增功能**:用户认证
   - 添加了登录和注册端点
   - 实现了 JWT token 生成

2. **代码质量改进**
   - 提取了重复代码
   - 添加了错误处理
   - 增加了单元测试

3. **潜在问题**
   - 密码存储没有加密(应该使用 bcrypt)
   - 缺少速率限制

建议在合并前修复这些问题。需要我提供具体的修复代码吗?

配置对话模式

自定义提示词

bash
# 创建自定义系统提示词文件
cat > system-prompt.txt << EOF
你是一个资深的 DevOps 工程师,擅长:
- CI/CD 流程设计
- 容器化部署
- 云基础设施
- 监控和日志

回答时请:
1. 给出实用的解决方案
2. 包含代码示例
3. 说明最佳实践
EOF

# 使用自定义提示词
mydeskbot chat --system "$(cat system-prompt.txt)"

对话模板

bash
# 创建对话模板
cat > dev-chat.json << EOF
{
  "system": "你是一个全栈开发工程师",
  "model": "gpt-4",
  "temperature": 0.7,
  "messages": []
}
EOF

# 使用模板启动
mydeskbot chat --history dev-chat.json

高级技巧

1. 分步解决问题

bash
> 我需要实现一个博客系统
好的,让我们分步来实现。

第一步:设计数据模型
您需要哪些功能?
- 文章管理
- 用户系统
- 评论功能
- 分类和标签

您想从哪个功能开始?
> 先从文章管理开始
好的,我们来设计文章模型...

2. 代码迭代

bash
> 写一个排序函数
```python
def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr

优化这个函数,使用快速排序

python
def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr) // 2]
    left = [x for x in arr if x < pivot]
    middle = [x for x in arr if x == pivot]
    right = [x for x in arr if x > pivot]
    return quick_sort(left) + middle + quick_sort(right)

快速排序的平均时间复杂度是 O(n log n),比冒泡排序的 O(n²) 快得多。


### 3. 多语言对话

```bash
> 用 Python 写一个 Web 服务器
```python
from http.server import HTTPServer, BaseHTTPRequestHandler

class MyHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        self.wfile.write(b"Hello World!")

server = HTTPServer(('localhost', 8080), MyHandler)
server.serve_forever()

把这个代码翻译成 JavaScript (Node.js)

javascript
const http = require("http");

const server = http.createServer((req, res) => {
  res.writeHead(200, { "Content-Type": "text/html" });
  res.end("Hello World!");
});

server.listen(8080, () => {
  console.log("Server running on http://localhost:8080");
});

两种实现的功能相同,只是语法不同。


## 快捷键

| 快捷键 | 功能 |
|--------|------|
| `Ctrl+C` | 取消当前请求 |
| `Ctrl+L` | 清屏 |
| `Ctrl+D` | 退出对话 |
| `↑/↓` | 浏览历史消息 |

## 配置文件

在 `~/.mydeskbot/config.json` 中配置 chat 默认选项:

```json
{
  "chat": {
    "model": "gpt-4",
    "temperature": 0.7,
    "system_prompt": "你是一个有帮助的 AI 助手",
    "auto_save": true,
    "save_path": "~/.mydeskbot/chat_history"
  }
}

最佳实践

1. 明确表达意图

bash
# ❌ 不够明确
> 帮我写代码

# ✅ 明确意图
> 写一个 Python 函数,读取 CSV 文件并返回数据框

2. 提供上下文

bash
# 添加相关文件
> /context config.yaml
> /context main.go
> 为什么这个配置不能工作?

3. 分步提问

bash
# 复杂问题分步解决
> 第一步:设计数据库结构
[...]

> 第二步:生成迁移脚本
[...]

4. 使用系统提示词

bash
# 设置专业的角色
> /system 你是一个资深的 React 开发者

相关命令