日报:秘书器灵、微信插件、会话日志、菜谱技能包、智谱接入

devlogdaily

这期日报跨两天(4/10–4/11),两个仓库共 111 commits,+18,585 / -1,780 行。

秘书器灵(Secretary Agent)

全新的后台常驻 agent,按小时自驱循环,扫描会话历史并维护三个文件:

两阶段架构:

  1. 观察阶段 — 每轮读取 1 个小时级历史文件,精炼为 200–500 词的草稿,存入 library(抗凝蜕,跨重启存活)。每轮只读一个文件,多项目轮流处理。
  2. 整合阶段 — 全部读完后,加载某项目的所有草稿,完整重写 journal,必要时更新 profile,拼装 brief,验证 token 数,git commit,删除已消耗草稿。然后等下一轮。

自驱机制:email(schedule) 每小时给自己发邮件触发。有积压时 5 分钟跟进。无需人工干预。

TUI 集成:

简报技能经历多次迭代,最终形成两阶段设计:草稿存 library(抗凝蜕),每次写入后验证 token 数,git 版本控制,整合时通过 memory append 钉住 profile + journal 作为只读参考。

会话日志系统

全新 SessionCache 替代旧 verbose.gosession.jsonl 成为 TUI 聊天视图的唯一数据源。

架构: 从三个来源追加写入(mail、events.jsonl、soul_inquiry.jsonl),按 (from, ts) 去重,按时间排序。检测小时边界,自动将已完成的小时导出为 Markdown 文件供秘书读取。

关键函数:NewSessionCache()RebuildFromSources()IngestMail/Events/Inquiries()ProjectHash()BriefFilePath()dumpCompletedHour()DumpAllHours()

迁移:

删除了 verbose.go(-192 行)——完全被替代。

菜谱系统升级

菜谱自带技能包

菜谱现在可以包含 skill 目录。TUI 启动时自动 symlink 到 .skills/,卸载菜谱后自动清理过期链接。

语言回退链:wen → zh → en → root。LinkRecipeSkills() 按优先级处理:内置菜谱 → 自定义 → agora 导入。PruneStaleSkillSymlinks() 清理失效链接。

recipe.json 清单

每个菜谱自带 recipe.json 元数据文件(名称、描述),用于选择器显示。新增 RecipeInfo 结构体 + LoadRecipeInfo() 函数。支持导入菜谱识别。

Covenant 和 Procedures 覆盖

菜谱可按语言覆盖 covenant.mdprocedures.md。通过 ResolveCovenantPath() / ResolveProceduresPath() 加语言回退解析。

lingtai-recipe 技能包

中英双语自文档技能——agent 可通过 skills() 查阅菜谱系统的完整文档。

默认菜谱

从 adaptive 改为 greeter。

Markdown 查看器

可复用的双栏 Bubble Tea 组件(MarkdownViewerModel)——左列表 + 右渲染视口,支持键盘和鼠标导航。

替代了 /skills 视图和菜谱预览的重复实现。skills.go 从 ~284 行降至 ~50 行,firstrun.go 菜谱预览从 ~226 行降至 ~115 行。

微信插件(WeChat Addon)

从零实现腾讯 iLink Bot 协议,横跨两个仓库。

内核侧(Python — 6 个模块)

模块功能
types.py协议数据类——MessageItemType(TEXT/IMAGE/VOICE/FILE/VIDEO)、WeixinMessage、序列化函数
api.py5 个 async HTTP 端点封装——get_qrcode()poll_qr_status()get_updates()send_message()get_upload_url()get_config()
login.pycli_login() — 终端显示二维码,轮询扫码状态,保存 credentials.json(mode 0600)
media.pydownload_media()decode_voice()(SILK→WAV via pilk)、upload_media()make_media_item()
manager.pyWechatManager — 守护线程 poll loop、8 个 action handler(send/check/read/reply/search/contacts/add_contact/remove_contact)、原子文件写入、线程安全共享状态
__init__.pysetup() 入口——加载 config + credentials,创建 manager,注册 wechat tool

3 个测试文件共 21 个测试函数。审计后修复:async/sync 边界(run_coroutine_threadsafe)、stop() 死锁移除、threading.Lock 保护数据竞争、自消息过滤、4000 字符文本分片。

TUI 侧(Go)

智谱(Zhipu)接入

智谱 GLM-5.1 全栈接入。

TUI 侧: 注册为 preset(OpenAI 兼容),环境变量 ZHIPU_API_KEY,加入 /setup 流程和 /doctor 诊断。

内核侧——新增服务:

MCP 基础设施: 新增 HTTPMCPClient 类(+182 行),支持远程 HTTP MCP 服务器。servers.json 新增 "type": "http" 格式。

内核能力增强

Psyche — Memory Append

新增 memory append action:将文件钉为只读引用,每次 memory load 时重新读取,不写入 memory.md,抗凝蜕。主要用途:秘书整合时钉住 profile + journal 作为参考。Token 上限 100k,二进制文件检测,持久化到 system/memory_append.json

同时修正了 schema enum:"character""lingtai"

Email — Filter 子对象

email(check) 新增 filter 参数:sort(newest/oldest)、fromsubjectcontains(子串匹配)、after/before(ISO 8601 日期范围)、unread_onlyhas_attachmentstruncate(预览字符限制)。返回结果上限 10k tokens。

Procedures 系统提示节

新增 procedures 系统提示节(与 principle、covenant 平级)。集中化凝蜕流程说明,减少 tool description 中的重复。

Refresh 锁轮询

修复竞态:/refresh 从固定 3s sleep 改为轮询 .agent.lock 释放(最多 60s)。

系统级 Procedures

三语操作规程(procedures/en/zh/wen/),通过 m009 迁移种入所有 agent 的 system/procedures.md。菜谱可覆盖。

其他

迁移一览

版本名称说明
m009procedures种入三语 procedures.md 到所有 agent
m010legacy_addons_warn检测旧插件路径,打印警告
m011session_backfill从 mail/events/inquiries 重建 session.jsonl,回填历史
m012session_resort每次启动从源重建 session.jsonl

当前版本:12