内容
<div align="center">
<img src="docs/assets/hero.png" alt="담소(談笑) - conversations, captured." width="820">
**담소(談笑) - 会话记录工具**
담소会注意到你的会议,询问一次,然后悄悄地处理剩下的事情:
记录、转录、谁说了什么以及总结 - 所有这些都在你的Mac上。
这个名字在韩语中有两种读法:*담소*(友好的聊天)和*담다 + 소리*(捕捉声音)。





</div>
---
## 为什么选择담소
会议记录工具要么将音频发送到服务器,要么要求你在会议开始后按下录音按钮,要么给你一大段匿名的文本。
담소居住在你的菜单栏中,在你的麦克风启用时检测会议,并建立比分钟更持久的东西:你与他人交谈的本地记忆。
- 🪄 **它首先注意到。** 当Zoom通话或Meet标签启用时,一个小卡片会滑动到角落:*会议检测到 - 记录?* 点击一次,或忽略它。在你说“是”之前,永远不会记录任何内容。
- 🔄 **你的手表记录器自动同步。** 通过官方Plaud CLI连接Plaud账户,来自可穿戴设备的录音会自动到达 - 每小时检查一次,重复数据删除,标记为`Plaud`芯片,并直接输入相同的本地管道。
- 🗣️ **谁说了什么,而不仅仅是什么。** 本地语音分离将说话者分开,语音嵌入建议每个声音是谁,会议标签中捕获的参与者姓名将其缩小到一次点击。
- 🧑🤝🧑 **人物积累。** 每个确认的说话者都会成长为一个配置文件:会议历史,昵称,语音签名和持久的笔记。你的会议变成了一个你拥有的谁是谁。
- 🔒 **本地优先,文件优先。** 音频,转录和配置文件都是磁盘上的普通文件夹和Markdown。搜索索引是派生的,并且总是可以重建。音频永远不会离开你的Mac。
<div align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/screenshots/main-dark.png">
<img src="docs/screenshots/main-light.png" alt="담소 main window: meeting log, external sync, and a completed meeting with summary" width="920">
</picture>
</div>
## 工作原理
```
检测 → 询问 → 记录 → 转录(本地Whisper) → 确认说话者 → 总结 + 标题
麦克风 + 一次 批准 语音分离(本地Sherpa) 一步手动操作 (Claude/Codex CLI)
标签检查 点击 会话 参与者(chromux标签) 配置文件更新
外部同步(Plaud CLI) ─────────────────────────────────↗
每小时拉取 · 7天追踪 · 去除重复 · 相同的本地管道
```
- **检测是一个提议,而不是决定。** 담소通过麦克风活动监视Zoom应用程序和Chrome,Dia,Arc和Safari中的Meet/Zoom标签。它只会*询问*;录音在您按下按钮时开始 - 在浮动卡片或菜单栏中。
- **会议自行结束。** 当麦克风静音时,录音会在短暂的宽限期后停止。少于五分钟的录音会被提供以便丢弃,以便误触不会污染您的日志。
- **可穿戴设备记录会来到您这里。** 外部同步每小时轮询一次官方Plaud CLI(或按需),导入最近七天内的任何新内容,验证音频,并将其排队进行转录 - 顺序进行,以便 backlog 不会淹没您的机器。中断的工作在下次启动时恢复,并且水印和每个文件的索引保证录音不会被两次导入。
- **一步手动操作。** 录音后,转录和说话者分离会在本地自动运行。您从候选建议中确认每个检测到的声音 - 来自会议标签的参与者姓名首先出现。最后一个卡片确认后,总结和标题会自动生成。
- **文件是真相的源泉。** 每个会议都是一个文件夹(`Plaud/recordings/<id>/`)的普通JSON和Markdown。SQLite索引源自这些文件,可以始终从中重建 - 确定性地,无需LLM调用。
- **内置MCP搜索。** 只读stdio MCP服务器公开`search_meetings`,`get_meeting`和`get_speaker`,因此Claude Desktop或任何MCP客户端都可以搜索您的本地会议和人员。
- **您选择的代理。** 摘要和标题通过您已经使用的CLI - Claude Code或Codex - 在一个无法读取或写入您的会议存储的沙盒中运行,只接收转录文本,并返回仅限于模式验证的JSON。
- **韩语或英语。** 界面和所有生成的输出都遵循应用程序内的语言设置。韩语是默认语言。
## 说话者确认
每个检测到的声音都变成一张卡片:播放一个短样本,查看其最强的行,并从具有置信度的语音匹配候选中选择 - 或跳过它。
<div align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/screenshots/speakers-dark.png">
<img src="docs/screenshots/speakers-light.png" alt="说话者确认:每个说话者的卡片,带有可播放的样本和语音匹配的候选者" width="920">
</picture>
</div>
## 隐私模型
在使用自动摘要之前,请先阅读以下内容:
- 音频永远不会离开您的Mac。转录(mlx-whisper)和语音分离(sherpa-onnx)都是本地的。
- 会议检测和参与者捕获是本地信号(CoreAudio进程活动,您自己的浏览器通过chromux扩展)。参与者姓名存储在会议文件夹中,除转录上下文外,绝不会发送到其他地方。
- 外部同步仅通过官方Plaud CLI与Plaud通信,读取。您的Plaud会话位于`~/.plaud`,由CLI拥有;담소绝不会读取,存储或记录令牌。登录通过`plaud login`在您的浏览器中进行,下载的音频直接进入您的本地存储。
- **会议确认后,转录文本会自动发送到您选择的代理CLI(Claude Code或Codex)。** 这些CLI使用您登录的帐户与其云模型提供商通信。没有每会议确认步骤,也没有敏感标志 - 如果会议不应到达LLM提供商,请勿确认其说话者,或在没有登录代理CLI的情况下工作。
- 代理CLI与您的会议存储隔离(`sandbox-exec`拒绝存储根目录),获取一个空的临时工作目录,禁用其内置工具,其响应根据固定的JSON模式验证。
- MCP服务器是只读的本地(stdio);它绝不会写入会议数据,也绝不会打开网络套接字。
## 安装
请参阅[INSTALL.md](INSTALL.md)以获取完整的设置(Xcode工具链,Python帮助程序,本地模型,Plaud CLI和`.app`捆绑包构建)。
它被编写为AI编码代理可以从头到尾遵循的分步合同。
快速开始:
```sh
export DAMSO_STORE="$HOME/Library/Application Support/Damso"
python3 -m pip install -e '.[local-processing]'
make install-local-models
make doctor
make test
make install-local-app # ~/Applications/Damso.app, 菜单栏驻留
```
可选,用于Plaud可穿戴设备同步:
```sh
npm install -g @plaud-ai/cli
plaud login # 打开您的浏览器;담소绝不会触及令牌
```
## MCP服务器
```sh
DAMSO_STORE=... make mcp
```
工具:`search_meetings(date, speaker, keyword)`,`get_meeting(stem)`,`get_speaker(name)`。
索引在每个管道步骤后由应用程序自动重建;随时使用`make reindex`或设置操作手动重建。
## 开发
```sh
make verify-static # Swift构建 + Python编译检查
make test # Swift测试 + 后端单元测试套件
swift run Damso # 从源代码运行应用程序
make install-local-app # 构建,签名和安装Damso.app
```
## 许可证
[MIT](LICENSE)