# Sman — 别再自己踩别人踩过的坑了

---

昨天你花一下午定位一个 bug，最后发现半年前有人已经踩过，当时还跟同事聊过——但没人告诉你。

这种事天天发生。

---

## 先说几个你一定遇到过的事

**入职第二天，让你改一个老项目的接口。**

你打开代码，满脑子问号。这个字段为什么叫这个名字？这个逻辑为什么绕了三圈？注释只有一句"TODO: 优化"——写于 2021 年。你问周围的人，没人说得清。你硬着头皮改了，上线出了事，背锅的是你。

**你花两天查出来的 bug，其实两个月前有人查过。**

就在隔壁工位，就在同一份代码。他当时在企微群里说了结论，消息早就沉了。你踩的是同一个坑，费的是同样的时间。

**同事离职了，他负责的模块成了黑洞。**

没人敢动，没人懂。新来的人接手，纯靠读代码猜。猜对了算运气，猜错了出事故。

**每周五的项目报告，你抄上周的改改数字交上去。**

没人认真看，但你不交不行。这种纯体力活，每周吃你半小时。

---

## Sman 想解决的就是这些破事

它是一个桌面应用，打开以后选你的项目目录，就能跟 AI 对话。

但和 ChatGPT 不一样的是——**它不是聊完就忘的**。

你和它讨论过的业务逻辑、踩过的坑、做过的设计决策，它都会记住。下次打开，它还记得。你同事打开，它也知道。

---

## 说几个实际场景

### 接手别人的代码

你刚入职，被分到一个项目。以前的负责人走了。

```
你: 这个退款流程，库存锁什么时候释放？

Sman: 订单完成或取消的时候释放。但有个例外——如果订单状态是
      "部分发货"，锁不会放。这是去年为了防超卖加的。
      代码在 RefundService.ts 第 142 行。
```

这些是你前任半年前和 Sman 讨论时留下的。人走了，笔记还在。不用问人，不用翻文档，打开就能问。

### 帮你写代码

不是给你一段代码让你自己粘。是直接在你的项目里干完：

```
你: 加一个接口，根据手机号查注册状态，没注册的自动发邀请短信

Sman:
  → 分析了你现有的接口风格
  → 写好了代码
  → 写了三个测试用例
  → 跑了测试，全过
  → commit 已经提了

2 分钟，干完了你本来要干 30 分钟的活。
```

### 写 commit message

代码改完了，懒得想 commit message：

```
你改了退款服务，加了部分发货的状态检查

Sman 自动写好:
feat(refund): add partial-shipment lock check before release

一行都不用你费脑子。
```

### 重复的活让它自己跑

每周的项目报告、每天的健康检查、定期的测试覆盖率统计——这些都是体力活。

用 Sman 的话说就是：

```
每周一早上 9 点，自动：
1. 统计本周代码变更
2. 跑一遍测试
3. 生成报告
4. 发到群里

你到工位的时候，报告已经躺在群里了。
```

不用写脚本，不用配 CI，用大白话说一遍就行。

---

## 和 ChatGPT / Claude 网页版有什么区别？

ChatGPT 是个很聪明的陌生人。你问它问题，它回答得不错，但它不认识你的项目。

Sman 像一个一直在你项目里的同事：

| | ChatGPT | Sman |
|---|---|---|
| 认识你的项目吗 | 不认识，每次从头说 | 自动读你的代码，自动分析 |
| 能帮你改代码吗 | 给你一段代码你自己粘 | 直接在你项目里改，测试跑通 |
| 记得上次聊了什么吗 | 大致记得，但不靠谱 | 提取成知识，永久记住 |
| 你走了别人能用吗 | 不能 | 能，知识跟着 git 走 |

## 和 Cursor 有什么区别？

Cursor 很好用，写代码确实爽。但写代码只是一天工作的一部分。

Sman 覆盖的更多：帮你记住项目知识、帮你跑重复任务、帮你和同事的 AI 沟通、帮你管 Git。

你可以两个一起用，不冲突。

---

## 怎么用

1. **下载** — [GitHub](https://github.com/nasakim/sman/releases)，Windows 和 macOS 都有
2. **装好打开** → 设置里填个模型 API Key（国内预置了 10+ 家，挑一个就行）
3. **新建会话** → 选你的项目文件夹
4. **开始聊**

不用配环境，不用写配置文件，不用看文档。打开就能用。

---

## 还有个事

你在 Sman 里讨论过的东西，会自动保存到项目目录里，跟着 git 走。

这意味着什么？你同事 git pull 以后，他的 Sman 也知道了你讨论过的东西。你也一样。

```
你: 这个缓存为什么用 Redis 不用本地缓存？

Sman: 因为多实例部署，本地缓存会不一致。
      这是去年架构评审的决定。

（这个知识点保存到了项目里）

→ 同事 pull 了代码
→ 他的 Sman 也知道了这个决定
→ 他不会再问一遍同样的问题
```

不需要写 wiki，不需要开会同步，聊过就算数。

---

<p align="center">
  试一下，反正不要钱。
  <br/><br/>
  <a href="https://github.com/nasakim/sman">GitHub</a>
  ·
  <a href="https://github.com/nasakim/sman/releases">下载</a>
</p>
