A local-first, multi-agent work assistant for Lark/Feishu. Tide turns exported chat streams into daily briefs, tasks, risks, cross-chat topics, relation graphs, and topic evolution views.
飞书按照群聊和私聊组织信息,但真实工作往往围绕项目、主题、任务、决策和风险推进。 当同一件事散落在多个群聊和会话里,人很难持续看见完整上下文。
潮汐不是聊天摘要器。它把“会话流”重新组织成“工作流”。
今日简报把分散在多个会话中的重点事项、风险信号与活跃主题汇总到一处。 截图使用完全虚构的合成演示数据。
Lark CLI / compatible exporter
↓
local NDJSON archive
↓
FastAPI + SQLite deterministic pipeline
↓
daily brief · tasks · reminders · topic relations · information flow
- 同时参与大量群聊、项目和评审的项目经理、产品经理、解决方案人员与架构师;
- 想把工作数据保留在本机、自行选择 LLM 网关的个人或小团队;
- 想研究“确定性数据管道 + LLM 洞察”协作方式的开发者。
- ✅ NDJSON 会话归档增量摄取到 SQLite;
- ✅ 15 分钟自动执行“采集 → 分类 → 评估”,新消息不再停留在 raw 状态;
- ✅ 每日简报、任务、提醒、风险信号与 Agent 执行记录;
- ✅ 深度洞察真实化:消息热力图、性质分布、处理漏斗、高分信号;
- ✅ 主题关联星图:综合消息共现、共享会话与共同参与人;
- ✅ 单主题信息流:来源会话 → 消息性质 → 时间区间;
- ✅ 递进节奏:讨论 → 协调 → 决策 → 执行的周粒度演化;
- ✅ Anthropic 与 OpenAI-compatible 两类 LLM 协议;
- ✅ LLM 双重 kill switch 与每日 token 预算;
- ✅ Docker Compose 自托管。
当前仍是早期开源版本:主题关键词需要按自己的工作语境配置,Lark/Feishu Bot webhook 尚未实现,也未提供公共托管服务。
以下截图均来自真实运行的 Tide v0.2,但使用完全虚构的群聊、角色和项目内容, 不对应任何真实组织或个人。
按消息共现、共享会话与共同参与人形成关系图;聚焦任一主题后,可以继续查看关联强度和证据消息。
把一个主题中的消息组织为周粒度递进节奏,以及“来源会话 → 消息性质 → 时间区间”的信息流。
从全量消息中观察时间分布、信号性质和“接入 → 打标 → 高分信号 → 任务 → 提醒”的处理漏斗。
真实运行链路的上游基于飞书官方 Lark CLI。先安装并授权:
npx @larksuite/cli@latest install
lark-cli config init
lark-cli auth login --recommend
lark-cli auth statusTide 本身从本地 NDJSON 目录读取数据。你可以使用 Lark CLI、自有脚本或其他导出器, 只要生成以下结构:
archive/
groups/<chat-name>__<chat-id-suffix>/messages.ndjson
p2p/<peer-name>__<chat-id-suffix>/messages.ndjson
每行至少应能映射出消息 ID、会话、发送人、正文和创建时间。摄取逻辑使用
INSERT OR IGNORE,可以重复执行增量同步。
隐私提示:聊天归档可能包含敏感内容。建议只在本机运行,不要提交
.env、 SQLite 数据库、归档文件或包含真实工作数据的截图。
git clone https://github.com/trynhexagon/tide.git
cd tide
cp .env.example .env编辑 .env:
# anthropic: /v1/messages;openai: /chat/completions
LLM_PROVIDER=anthropic
LLM_API_KEY=sk_REPLACE_ME
LLM_BASE_URL=https://api.example.com
LLM_MODEL=your-model-id
LLM_ENABLED=true
LLM_DAILY_TOKEN_BUDGET=500000
# 宿主机上的 NDJSON archive
HOST_ARCHIVE_DIR=./data/archive如果暂时没有 LLM key,可设置 LLM_ENABLED=false,系统仍能完成确定性摄取、分类、
评估和本地启发式回退。
mkdir -p data/archive
docker compose up -d --build
docker compose logs -f backend打开 http://127.0.0.1:3400。后端健康检查:
curl http://127.0.0.1:18100/api/health停止服务:
docker compose downcp .env.example .env
bash scripts/dev.sh停止:bash scripts/stop.sh。
默认主题规则是通用示例。请同时调整:
scripts/aggregate_topics.py中的PROJ_RE与KEYWORD_TOPICS;backend/app/topic_match.py中的同名规则。
两处必须保持一致:前者生成聚合主题,后者负责把消息映射回主题,供关联图谱和信息流使用。
LLM 调用受三层限制:
.env中的LLM_ENABLED;- SQLite 中的运行时开关;
LLM_DAILY_TOKEN_BUDGET每日预算。
任一开关关闭,洞察 Agent 都不会继续产生计费调用。
curl http://127.0.0.1:18100/api/settings/llm/status
curl -X POST http://127.0.0.1:18100/api/settings/llm/switch \
-H 'Content-Type: application/json' \
-d '{"enabled":false}'GET /api/health
POST /api/ingest/run
POST /api/ingest/process
POST /api/ingest/pipeline
GET /api/dashboard/today
POST /api/dashboard/regenerate
GET /api/insights
GET /api/topics
GET /api/topics/graph
GET /api/topics/{code}/flow
GET /api/todos
GET /api/reminders/timeline
GET /api/agents/state-machine
GET /api/settings/llm/status
潮汐来自真实工作环境,并按一条可重复的工程化 AI Coding 链路演进:
理解问题 → 探索真实环境 → 定义问题 → 制定方案 → 执行与验证 → 持续反馈
重点不是让 AI 尽快生成代码,而是先确认真实痛点、数据边界和运行约束,再把每轮验证 结果带回下一轮迭代。v0.2 的主题可视化和调度修复都来自真实运行反馈。
完整变化见 CHANGELOG.md。项目仍在不定期更新和维护。
欢迎在 GitHub Issues 提交:
- 不同飞书组织和权限环境下的数据接入问题;
- 跨会话主题归并的准确性反馈;
- 任务、决策与风险识别的误报或漏报;
- 部署、隐私边界和其他 IM/知识系统适配建议。
Apache-2.0,见 LICENSE。



