Repository navigation
Echo v0.1.0-alpha.1 · 跑在自己 Mac 上的私人对话窗口
Pre-release
Pre-release
·
22 commits
to main
since this release
v0.1.0-alpha.1
第一个公开 alpha。功能完整可用、日常已经在用,但接口与数据格式仍可能变;升级前请备份
data/。
这是什么
跑在你自己 Mac 上的私人对话窗口:调你自己的 OpenAI 兼容 API(已在阿里云 token plan 网关验证),长期常驻、局域网可用、状态栏有图标。零第三方依赖(只用 Node 内置模块 + 一个本地编译的 Swift 菜单栏 App),所有数据都是 data/ 下的明文文件。
本版能力
分层记忆与可解释遗忘
- L0 工作记忆(屏幕活动,TTL 90 分钟)→ L1 事实(强度 = 重要度 × 使用增益 × 时间衰减)→ L2
MEMORY.md(每次对话注入,可手改)→ L3 归档与实体图。 - 命中强化(间隔重复)、久用不到淡出(可复活)、超容量按强度淘汰;每次遗忘都写进
memory/forgetting.md,说明忘了什么、为什么、依据哪个数字。 - Dream(定时 + 手动):重写核心记忆、调和事实、明确遗忘过期项、复活误淡项、产出跟进事项与主动话题、刷新实体图、留审计快照。
主动服务(可测量的闭环)
- 固定主对话跨模型连续;Thompson 采样 bandit 选开口类型,奖励 = 你 6 小时内是否接住(未回应按 0 结算);门槛随表现自适应;台账按 EV 排序挑跟进事项;静默时段 / 每日预算 / 最小间隔 / 连续未回应降速。
- 离线回放显示比固定策略高 31–51% 的被接住率(模拟值);真实接住率在自报告里可见。
屏幕感知(默认关,隐私优先)
- 菜单栏 App 采集 + Apple Vision 本地 OCR,默认只把文字发模型;原始截图分析完即删。
- 锁屏、键鼠空闲自动跳过;屏蔽名单默认空,由你自己填;识别到敏感内容只记"在处理敏感信息"。
- 屏幕工作记忆只用于当下判断,不做可回看的录像库。
对话与多模态(按网关实测适配)
- 流式输出、思考过程折叠、工具调用步骤可见、来源 chips、重新生成、编辑重发、会话置顶/导出、令牌用量、深浅色、移动端适配。
- 模型 13 个(千问 / DeepSeek / 智谱,带视觉标记)、
auto路由;图片输入(粘贴/拖拽/上传,客户端压边);出图工具image_gen(结果落盘本地,OSS 链接会过期)。 - 搜索:360/Bing 抓取(完整浏览器头 + 熔断冷却)→ 阿里云托管
web_search(tool_choice:"required"+ 关思考,实测 3–8s 带 sources)。
工程与安全
- 磁盘预算:截图 200MB / 3 天、生成图片 300MB / 60 天,超 80% 从最旧删;最近对话引用到的图片永不删;每 6 小时自动维护。
- 模型降级链、上下文预算 + 滚动摘要、
metrics.jsonl自报告(P50/P95、工具成功率、失败 Top、接住率)。 - 免登录(本机自用)默认;
./bin/echo auth on可开口令验证。写操作要求自定义请求头(防跨站打额度);web_fetch有 SSRF 防护;渲染白名单转义。 - 隐私兜底:界面一键"全部忘掉"(清空记忆,或连会话一起),并在遗忘日志留一条可解释记录。
自测
node tests/selftest.mjs:60 项断言,冻结判据,隔离沙箱(自己的数据目录与配置),覆盖安全不变量、记忆/遗忘数学、存储预算、决策算法、真实链路。--live会真的调用模型。
安装
tar -xzf echo-assistant-0.1.0-alpha.1.tar.gz
cd echo-assistant-0.1.0-alpha.1
./install.sh # 凭据 → 口令(可跳过) → launchd 常驻 → 编译状态栏图标
./bin/echo status要求:macOS + Node ≥ 20(用了内置 fetch / 顶层 await);屏幕感知与状态栏需要 Xcode Command Line Tools(swiftc)。API Key 从你的登录 shell 读取(或手动贴入),写在 data/echo.env(0600)。
已知限制
- 屏幕录制授权:首次需在「系统设置 → 隐私与安全性 → 屏幕录制」里勾选 EchoBar(菜单栏图标里有一键跳转)。
- 抓取搜索会被第三方限流:360/Bing 会把人机校验招呼上(本机 IP 被限流后 10 分钟内自动熔断、转托管搜索)。
- 语音 ASR / TTS、视频生成:该网关未开放(实测返回空响应 / InternalError /
url error),配置里预留。 - 检索是词法的(BM25 + 实体加权),无向量检索;实体图无双时态;bandit 无上下文特征;屏幕是定时快照而非事件流。
- 接口与数据格式在 alpha 期间可能变;无自动迁移脚本,升级前备份
data/。
校验
shasum -a 256 -c SHA256SUMS发布件由 git archive 生成,只含 git 跟踪文件;打包脚本会在临时目录解包并跑一遍离线自测,同时断言包内不含 data/、凭据与构建产物。