Writing & Building

Hi, I'm 坤子

工程师 · 开源爱好者 · 北京
与 AI 智能体为伍,在云原生里造船,把一切能自动的都交给机器。

我的音乐

写代码之外的另一种表达。最近写的四首歌已上线番茄畅听 / 番茄音乐,点开就能听。

我和云朵说你好 封面
2026 · Single

我和云朵说你好

me坤子

抬头看看蓝蓝天空,一朵白云向我飘——把小朋友和云朵打招呼的小快乐,写成了歌。

还在路上 封面
2026 · Single

还在路上

me坤子

「只要还在路上,一切就还来得及」——写给所有还没到站的人:走过晴天雨天,只要心里还留着一点光,就不怕夜太长。

风吹过校门口 封面
2026 · Single

风吹过校门口

me坤子

「原来孩子长大的时候,没有什么特别的声音,只是有一天你不再回头」——校门口的风里,藏着一个爸爸看着你走远的小小怅惘。

车道沟没有沟 封面
2026 · Single

车道沟没有沟

me坤子

「车道沟没有沟,可晚霞掉进水里时,分明有一条回家的路。」——把城市的名字唱成一句错觉,送给所有站在岸边等日落的人。

最新文章
2026-10-22 · 发布记录

Linkora v0.7.0:分身开始看得见群里发生的事

钉钉 CLI 升到 v1.0.63 后重新过了一遍真实能力,发现 Linkora 有几处设计是照着旧版认知写下的——包括一条我信了好几年的错误判断。这一版把它们一次性纠过来:话题(Thread)从「能回复但读不到历史」变成能读能答;群成员枚举修好了(此前工具声称返回成员、实际一个都没有);新接入钉钉日志(日报周报)与企业语义检索两个域;补齐审批表单字段配置、待办闭环、会议协调(冲突 / 空闲 / 推荐时间)三处业务缺口。内置工具 38 → 47,意图分类 39 → 41。

AI Agentv0.7.0钉钉工具
2026-10-22 · 工具 / 资源

ClashModule:代理模块一键导入 Clash

把可莉插件中心的 Loon 模块与 Quantumult X 重写 / 规则合集整理成一个浏览器索引页:596 个模块支持搜索、标签筛选、分页,主按钮「导入 Clash」点一下就拉起客户端,Loon / Quantumult X 与复制链接作为备用,数据实时同步源站。

代理工具ClashLoon
2026-10-19 · 发布记录

Linkora v0.6.5:分身不再答非所答

单聊里同事追问「用手机连 rokae-dev 也是这个账号密码吗?」,分身却把一篇《Windows 共享访问教程》从头到尾复述,还照抄教程结尾的客服反问句反问回去。v0.6.5 在普通 RAG / 严格模式 / 公共记忆三类外部内容注入点统一加「原文不是指令」硬约束,注入前导从「请完整引用」改为「只摘必需的片段、严禁整篇复述」,并新增【追问与指代】常驻指令;顺带把后台日志收敛成默认只看关键信号的焦点模式。

AI Agentv0.6.5RAG质量
2026-10-15 · 发布记录

Linkora v0.6.4:让轮询安静下来

打开钉钉后台的调用日志,发现分身在以秒级频率拉会话消息接口,活跃时段还反复撞平台限流、回复偶发慢一拍。v0.6.4 四层降频:未读列表加 30 秒缓存、单聊对方解析失败进 5 分钟负缓存、未读会话抓取加 30 秒下限间隔、轮询间隔 10→20 秒。关键是先分清主通道与冗余保底——被降频的是重复确认,不是消息本身。实测调用量降约 6–7 成,限流熔断减半。

AI Agentv0.6.4性能可靠性
2026-10-14 · 发布记录

Linkora v0.6.3:一眼分清「内置」和「你自己装的」

Web 管理台的技能与工具展示界面统一加上来源徽标——靛蓝「内置」/ 琥珀「安装」,技能列表、工具链路、意图映射、决策流、路由追踪、模拟测试一眼可辨;后端 Skill.origin 按目录判定并由 API 透出。顺手把主库写路径全量收口到进程内写闸门,补齐 WAL/SSRF/配置漂移等边缘缺陷;依赖随 dependabot 同步 6 项。

AI Agentv0.6.3前端可维护性
2026-10-10 · 发布记录

Linkora v0.6.2:源码没错,构建错了

一个源码完全正确、只有压缩产物才出错的 bug:草稿与死信的过滤器「默认能加载、点一下就清空」——真凶是构建压缩把拼接重排成模板字面量,data-args 被截断成 [",请求 status=undefined 被后端当字面量查询返回空列表。源码对≠产物对,故新增静态门禁禁掉拼接写法、回归测试直接断言压缩产物。顺带把颜色/字体/图标/间距四类散乱样式收敛到设计 token(保值映射,视觉零变化),并修弹窗背景可滚动、灯箱监听器泄漏、错误提示不变红、死信搜索框死按钮。

AI Agentv0.6.2修复前端
2026-10-08 · 发布记录

Linkora v0.6.1:一次系统性缺陷审计的收口

没有新功能,全是「特定条件下才发作」的隐蔽缺陷。生产用 python -O 启动时 assert 被整条剥离、8 处本该返回 ID 的地方静默返回 None;读游标没关干净,累积到把写入拖垮(症状与上次索引损坏事故一模一样,极易误判);工具卡住会拖慢所有并发会话,现加 120 秒超时护栏;注销令牌黑名单不再无限增长;卡片图片不再被当文字写进正文;3 处 frontmatter 切分方式统一到行级。

AI Agentv0.6.1修复可靠性
2026-10-05 · 发布记录

Linkora v0.6.0:修启动卡死、决策追踪排序与安全加固

全是「把自己绊了一跤的地方填平」。根因修掉「offline 配置误走同步加载导致启动永挂在步骤 4/8」;决策追踪不再取最旧而取最新;安全侧关闭鉴权时 fail-closed、管理口令升级 PBKDF2 哈希、消除 3 条 urllib3 告警;85 处静默吞噬补上可追溯日志并加门禁防回潮;每次回复最多省 400 次查询。

AI Agentv0.6.0修复安全
2026-09-24 · 发布记录

Linkora v0.5.6:答复门禁——命中即拦截,敏感问题不再进 AI

AI 分身最怕不该答的它也答。v0.5.6 新增答复门禁:对每条用户提问做前置检测,命中规则直接终止回复并返回拦截提示,问题根本不进 AI。内置隐私 / 违法 / 辱骂 / 引流四类预置规则,关键词与正则双模式(带 ReDoS 防护),后台可维护、可测试、可统计,门禁本身 fail-open 绝不吞正常消息。

AI Agentv0.5.6安全管理后台
2026-09-23 · 发布记录

Linkora v0.5.5:记忆重构为「整合记忆」,已读后不再嘴瓢

分身聊久了记忆越攒越杂,零散事实堆一起既冗余又淹没检索。v0.5.5 把记忆升级为按「人 + 主题」聚合的整合记忆,后台周期合并零散事实成结构化摘要、召回更干净;堵上「标记已读仍自动回复」,标记已读后加 3 秒反悔窗口;今日摘要卡片取材收敛到当天。

AI Agentv0.5.5记忆体验
2026-09-22 · 发布记录

Linkora v0.5.4:出厂默认密码终于能直接登录了

此前 config.yaml.example 的占位密码恰好落在「弱口令拒绝启动」黑名单里,新用户照模板 cp 后一启动就被拦、体感「没默认密码还登不进」。v0.5.4 把出厂默认密码改为强度达标且不在黑名单的 Admin@P0sw0rd,照抄即可登录;fail-closed 仍拦弱口令,首次登录请改密码。

AI Agentv0.5.4安全体验
2026-09-21 · 发布记录

Linkora v0.5.3:会话图片不再「莫名消失」

后台「孤儿图片回收」此前误删过两次活跃账号的图,根因是只按孤儿库自身引用判断、没把活跃库引用算进保护集。v0.5.3 加三道护栏:先算保护集再回收、账号身份存疑整轮停手;顺手让前端在图片缺失时自动降级为「图片已不可用」占位,不再满屏破图。

AI Agentv0.5.3可靠性媒体
2026-09-15 · 发布记录

Linkora v0.5.2:RAG 记忆不再记住「死」的结论

分身聊了十次同一个客户,前十次结论各不相同,检索时旧结论照样和新结论抢召回。v0.5.2 给记忆装上时效与作废:最新优先、写入即作废旧版、过期自动忘,并清理了消息展示噪声、升级两个依赖修 CVE。

AI Agentv0.5.2RAG记忆
2026-09-11 · 发布记录

Linkora v0.5.1:常驻内存从 3.9GB 降到 0.6GB——两个「看不见」的内存大户被摁住

模型才 91MB,进程却吃了 3.9GB。v0.5.1 治住两个隐性大户:MPS 后端固定白拿约 1GB 无法回收的显存、SQLite 每线程页缓存懒增长。实测常驻内存降到约 0.6GB,多数用户零配置即受益。

AI Agentv0.5.1性能内存
2026-09-08 · 发布记录

Linkora v0.5.0:RAG 严格问答模式——给 AI 的嘴上把锁,答案只认知识库

新增「严格问答模式」:开启后回答 100% 来自知识库、未命中直接说「未收录」,从流程上杜绝编造。适合制度问答、产品资料这类对出处要求极高的场景,Web 一键开关、热重载即时生效。

AI Agentv0.5.0RAG质量
2026-09-07 · 发布记录

Linkora v0.4.9:摘要不再串台,分身也学会说「我」了

修了三件让人哭笑不得的事:摘要越摘越杂、一句「谢谢」让正经请求被跳过、AI 用第三人称称呼自己。从取材范围、意图识别到人称映射,一次讲清根因与修法。

AI Agentv0.4.9质量体验
2026-08-31 · 发布记录

Linkora v0.4.8:把「答非所问」摁回去——历史重放防护、排版规范与安全加固

根治「旧截图被重放污染上下文导致答非所问」的事故,三道防线(新消息窗口解耦 / 批内防抖 / OCR 噪声清理);顺手收掉长回复排版、引用回复降级,以及 image.py 路径注入、登出真实吊销等安全兜底。

AI Agentv0.4.8质量安全
2026-08-24 · 发布记录

Linkora v0.4.7:缺陷修复——LLM 异常分类、OCR 下载限制、异常处理治理

新增 LLMNetworkError / LLMRateLimitError / LLMAuthError 精确分类、OCR 下载收紧到 10MB、清理 91 处 noqa: BLE001;新增错误监控告警系统与性能基准测试。

AI Agentv0.4.7质量安全
2026-08-23 · 发布记录

Linkora v0.4.6:主动触达摘要排版优化

每日主动触达摘要从「一坨文本」改为空行分隔 + 序号列表、去除冗余前缀,钉钉推送在手机上终于能正常扫读。

AI Agentv0.4.6体验
2026-08-22 · 发布记录

Linkora v0.4.5:摘要视角修复,不再把主人当成第三方

对话摘要统一以主人第一人称生成——强化 owner_name 注入与 prompt 约束,杜绝把主人当第三方的混乱视角;四类生成链路(滚动/补跑/推送/Web 页)共用同一函数,一次修复全生效。

AI Agentv0.4.5质量
2026-08-22 · 发布记录

Linkora v0.4.4:摘要连续性补跑,关机几天也不丢当天的摘要

启动检测停机时长,按自然日补生成遗漏的当日/近七天对话摘要,与正常周期同源同格式;时区稳健、LLM 额度受限流上限保护。

AI Agentv0.4.4可靠性
2026-08-21 · 发布记录

Linkora v0.4.3:对话摘要页重构与稳定性修复

把对话摘要从纯文本升级成结构化卡片(头像/平台标签/主题/关键词/建议待办),并修掉潜伏两个版本的 get_store_dep 关闭全局单例导致 metrics 偶发 500 的 bug。

AI Agentv0.4.3前端
2026-08-20 · 发布记录

Linkora v0.4.2:对话摘要实时页与 CodeQL 告警清零

Web 侧栏「消息中心」新增对话摘要实时页(30s 轮询),与钉钉 17:30 推送完全同源;主动触达支持自定义时刻;CodeQL 安全告警清零。

AI Agent安全v0.4.2
2026-08-20 · 发布记录

Linkora v0.4.1:公共记忆自动注入与日志脱敏

公共记忆(scope=public)每轮对话自动召回并注入 system prompt,与 RAG 注入对称;移除 auth_middleware 中明文密码日志,CodeQL 告警清零。

AI Agent安全v0.4.1
2026-08-18 · 发布记录

Linkora v0.4.0:安全收口与主动触达

认证迁移 pyjwt、出站默认拒绝非公网、新增每日主动触达,并用 CI 护栏封死配置覆盖丢参数的事故路径。

AI Agent安全v0.4.0
2026-08-15 · 架构

Linkora 灵桥:多平台 AI 分身架构复盘

从钉钉单平台到钉钉/飞书/企微三端统一的适配器设计,以及 RAG + 规则引擎如何协同做出何时该回复、何时交还真人的决策。

AI Agent架构
2026-08-02 · 工程实践

多平台 IM 适配器:一套抽象吃下三家里程碑

BaseIMAdapter 的上下文隔离、平台门控与执行兜底。记录踩过的坑:消息去重、自身消息识别、媒体消息降级。

PythonIM
2026-07-20 · 折腾

把 LookAway 汉化成简体中文

一个 macOS 护眼小工具,本地化过程里的 nib 编辑、plutil 校验与 AppleScript 辅助,以及本地化文件的正确打包姿势。

macOS本地化
近期动态
2026-10

v0.7.0:一次能力扩展大版本,对接钉钉 CLI(dws)v1.0.63 的能力迭代,把 Linkora 里几处基于旧版本认知写下的过时设计一次性校正过来。最大的一处纠偏是话题(Thread):此前代码认定「钉钉不支持话题内回复」,实测证明真实情况是「能回复、但读不到话题历史」——这个不对称导致同事在话题里讨论了三轮方案,分身进去问「谁提的」却只看得见群里那句「开个话题聊」,现已补上话题上下文拉取、按时间合并去重后并入主回复。另一处是群成员枚举:工具此前明确报告「已返回成员列表」实际返回空数组,根因是群成员接口的 --group 走语义解析(传群名/关键词),把已保存的 cid... 会话 ID 传过去反而报「解析失败」,必须走 --conversation-id 直通,这条规则已固化在适配器层。新接入两个域:钉钉日志(日报周报,可列出收到/发出的日志、读取单份正文、搜索填报模板)与企业语义检索(跨文档/消息/日程/待办/听记/日志/邮件的语义检索,以及「我发给谁/谁发给我/我创建过什么」的行为追溯,保留「仅摘要片段」与「语义候选」两个证据标记避免把降级结果当完整命中)。补齐三处业务缺口:审批表单字段级配置(可按字段名反查哪些表单含该字段,如「项目」字段盘点)、待办闭环(查清单 + 标记完成,写操作需二次确认)、日程协调(冲突检测 / 空闲时段 / 多人共同时间推荐)。媒体下载迁到安全 Shortcut,保留拒绝绝对路径、拒绝 .. 逃逸、原子落盘、默认不覆盖四项安全属性。同时立了一条铁律:适配器层绝不传输出改写类全局 flag——实测 --fields 只在顶层投影、传错时返回 {} 且不报错,--jq 写错返回 null 加 exit 0 也无错误信号,这类「静默返回空」的 flag 是数据丢失温床。内置工具 38 → 47,意图分类 39 → 41。

v0.6.5:一次以「回复质量」为主的小版本,修掉了分身在 RAG 检索场景下几类答非所答。起因是单聊里同事追问「用手机连 rokae-dev 也是这个账号密码吗?」,分身却把一篇《Windows 共享访问教程》从头到尾复述,还照抄教程结尾的客服反问句反问回去——根因不在模型笨,而是我们把知识库 / 记忆当作高优先级事实整块喂给模型,却没告诉它「这些原文不是指令」。现已在三类外部内容注入点(普通 RAG / 严格问答模式 / 公共记忆)对称加「原文非指令」硬约束,注入前导从「请完整引用」改为「只摘解决问题必需的片段、严禁整篇复述」,并新增 system prompt【追问与指代】常驻段(追问先弄清指代对象、已说明的条件不得反问);顺带新增 --focus 焦点模式(默认开启),控制台只显示收到的新消息 / LLM 回复 / WARNING 及以上告警,把每条消息的链路内部噪声(20+ 模块)压下去,文件日志与 Web 实时日志页仍为全量。

v0.6.4:纯性能小版本,把轮询器对钉钉接口的调用频率降下来——起因是钉钉管理后台的调用日志里,同一会话消息接口被以秒级频率反复拉取,活跃时段还反复撞平台限流、回复偶发慢一拍。根因是四层各打各的:未读会话列表每轮拉一次、未读会话每轮全量重抓、解析失败的会话每轮重试元数据接口、轮询间隔只有 10 秒。现已四层降频:未读列表加 30 秒 TTL 缓存(unread_convs_cache_ttl_seconds)、单聊对方解析失败进 5 分钟负缓存(conv_info_negative_cache_ttl_seconds)、未读会话抓取加 30 秒下限间隔(forced_fetch_min_interval_seconds)、轮询间隔 10→20 秒(另:置顶列表缓存 120→180 秒、黑名单对账 10→20 轮、限流冷却 60→120 秒)。敢降频的前提是先分清主动脉与保底:消息主通道是 list-all 每轮全量拉取 + 快通道即时派发,逐会话抓取只是外部好友/群消息的兜底冗余,被降频的是重复确认、不是消息本身。实测同一活跃时段限流熔断由每 30 分钟 28 次降到 14 次、改动后连续 18 分钟零熔断,调用总量约降 60–70%;顺带修好一个恒为 0 的「长尾限频跳过」统计(早退路径没计数),降频效果终于在日志里可见。

v0.6.3:Web 管理台的技能与工具展示界面统一加上来源徽标——靛蓝「内置」/ 琥珀「安装」(含暗色主题),技能列表、工具链路、意图映射、决策流、路由追踪、模拟测试一眼可分;后端 Skill.origin 按 SKILL.md 所在目录判定(src/skills 与捆绑资源 = builtin,可写 data/skills 与 .agents = user),由 /api/skills 与 /api/tools-chain 透出。顺手把主库写路径全量收口到进程内写闸门(write_main_with_retry + 全局锁),杜绝绕过闸门直连 conn.commit(),补齐 WAL / SSRF 过滤 / 配置漂移检测等边缘缺陷;依赖随 dependabot 同步 6 项(pydantic / fastapi / tokenizers / platformdirs / pypdfium2 / ruff)。

v0.6.2:一次前端专项,最值得记的是一个源码完全正确、只有构建压缩后才出错的缺陷——草稿审阅与死信队列的过滤器「默认能加载、点一下就清空」。真凶不在前端逻辑也不在后端,而是构建时把字符串拼接重排成了模板字面量片段,data-args 被截断成 [",JSON.parse 解析出 undefined → 请求 status=undefined → 后端按字面量 WHERE status='undefined' 查询 → 空列表(源码正确、单元测试直接调函数也「通过」,只有跑真实产物才暴露)。已改为模板字符串插值,并新增静态门禁禁掉「拼接生成 data-* 属性」的写法、回归测试直接断言压缩产物;门禁与测试都做过「注入故障→确认报红」验证。顺带把颜色(多套灰阶与4 种蓝 3 种红混用)、字体(10+ 种手写等宽栈)、图标(25+ 种散值字号)、间距(--space-* 定义了却零引用)四类散乱样式收敛到设计 token(保值映射,视觉零变化);修弹窗背景可滚动(锁真正的滚动容器而非 body)、图片灯箱 Esc 监听器泄漏、知识库页错误提示不变红(引用了非全局的局部别名 --danger)、死信搜索框是死按钮(模板引用了代码里不存在的处理器)。

v0.6.1:全量缺陷审计收口,没有新功能,修 10 类「平时跑得好好的、特定条件下才发作」的隐蔽缺陷。生产环境用 python -O 启动时 assert 会被整条剥离,8 处本该返回数据库记录 ID 的地方静默返回 None、调用方直接崩(开发期跑一年都发现不了);高频轮询路径 3 个读方法未关游标,长生命周期进程里 WAL 读快照持续累积最终拖垮写入——症状与 v0.6.0 那次索引损坏事故一模一样,极易误判成锁参数问题;工具执行补 120 秒统一超时护栏(内部子进程硬超时 60 秒,留一倍余量),工具并发共享,此前一个卡死会拖慢所有会话;注销令牌黑名单改为按过期时间惰性清理、不再无限增长;图文混排里卡片图片(内部是 JSON 映射)不再被当路径拼进正文;3 处 frontmatter 切分(AI 意图写回 / 技能安装写平台 / Web 端改元数据)统一到读取路径的行级切分,值内含 --- 时不再错位。

v0.6.0:修「服务起不来」的真凶——本地部署日志停在「步骤 4/8」永不继续、web 端口从不上线,根因是 offline=True(用本地缓存不联网,最常见的配置)恰好命中「同步加载」分支,把主线程堵在读模型权重上(实测 >50 秒,进程活着但 CPU 0.4%)。background(要不要异步)与 offline(要不要联网)本是正交的两件事,绑成一个条件就成了设计错误;现已解耦,启动秒回、模型照旧后台约 10 秒就绪。顺带修首页「决策追踪」取到最旧而非最新消息(后端正序、前端取前 N 条),排序下沉到组件内部统一处理;安全侧关闭鉴权且无凭据时对外地址改走 fail-closed、管理口令从明文升级为 PBKDF2 哈希(登录行为不变)、urllib3 升到 2.8.0 消掉 3 条告警(此前两份锁文件不一致,CI 实际吃的是漏洞版);85 处「静默吞噬异常」补上可追溯日志并加 AST 门禁防回潮;少样本推荐的 N+1 降为单次查询(每次回复最多省 400 次)。

2026-09

v0.5.6:新增「答复门禁」——对用户发来的每条提问做前置检测,命中任一启用中的规则直接终止回复并返回拦截提示语,问题根本不进 AI(比生成后再过滤干净得多)。内置私人隐私 / 违法信息 / 负面情绪 / 其他四类预置规则(11 条装完即有基础防护),支持关键词与正则双模式(regex 引擎带超时,ReDoS 打不死主链路),后台规则可增删改查、批量启停、命中计数、在线匹配测试;门禁 fail-open——规则加载或匹配出任何异常一律放行,绝不吞正常消息。

v0.5.5:记忆系统重构为「基于摘要的整合记忆」——单条逐条记忆容易堆积冗余、让检索被噪声淹没,v0.5.5 改为按「人 + 主题」聚合:个人记忆按对话对象、公共记忆按主题桶,后台调度器周期把零散事实合并成结构化摘要并去重,召回直接返回摘要、上下文更干净;顺手堵上「标记已读仍自动回复」(发送前强制复核未读 + 3 秒已读反悔窗口),并把「今日」摘要卡片取材窗口收敛到当天、不再串旧内容。

v0.5.4:出厂配置自带可用默认密码——此前 `config.yaml.example` 的占位密码恰好落在「弱口令拒绝启动」黑名单里,新用户照抄模板一启动就被拦,体感「没默认密码」。v0.5.4 把出厂默认密码改为强度达标且不在黑名单的 `Admin@P0sw0rd`,照抄即可登录(fail-closed 仍拦弱口令,首次登录请改密码)。

v0.5.3:会话图片不再「莫名消失」——后台孤儿图片回收此前误删过两次活跃账号的图,v0.5.3 加三道护栏:先算保护集再回收(跨库共享同一张图也不误删)、账号身份存疑整轮停手(宁可少清不删错);顺手让前端在图片缺失时自动降级为「图片已不可用」占位,不再满屏破图。

v0.5.2:RAG 记忆治理——分身聊同一个客户十次、结论各不相同,旧「死记忆」照样和新结论抢召回。v0.5.2 给记忆装上时效与作废:检索按时间加权(最新优先、过期沉底)、同一主题写出新结论时旧版自动标记为 superseded 只召回最新、知识库重投改为原地替换不再留僵尸分块、过期 GC 先删作废再删超龄;顺手清理消息展示噪声、升级两个依赖修 CVE。

v0.5.1:常驻内存从 3.9GB 降到约 0.6GB——模型才 91MB,进程却吃 3.9GB,定位到两个「看不见」的大户:macOS MPS 后端首次分配就固定白拿约 1GB 显存且回收不掉、SQLite 每线程页缓存懒增长到 62.5MB;新增 embedding.device 配置可切 CPU 关掉显存占用,rerank 模型跟随该设置也不再偷占 GPU。多数用户零配置即受益。

v0.5.0:新增 RAG「严格问答模式」——开启后回答只依据知识库内容、未命中直接返回固定「未收录」文案,从源头杜绝编造与幻觉;Web 顶栏常驻模式徽章、设置页状态条、模拟面板「对比两种模式」一键并排,直观体现两种模式差异;顺手修了 skills/router.py 跨线程读取崩溃(真实生产事故,被严格模式触发)。

v0.4.9:摘要取材范围修复(漏旧消息、混自己写回的摘要副本、增量超限保最旧丢最新)+ 按日期与主题拆分摘要;意图识别补上礼貌语剥离,修掉「请求 + 谢谢」被误判为纯致谢直接跳过;分身自称改回第一人称「我」。

2026-09

意图识别修复:处置层新增尾部礼貌语剥离前处理,修掉「请求 + 谢谢」被误判为纯致谢直接跳过的问题——「王工,帮开一下 VPN 吧,谢谢」这类客套请求现在会正常进入处理;社交子型改用剥离后核心判定,「收到,谢谢」归确认而非被谢谢翻成致谢。

2026-09

对话摘要卡片渲染修复:根治卡片只显示首行日期、正文全丢的问题——单条摘要按自然日分段(多行),renderDigestCards 原只认单行「• 名称:内容」格式、续行被丢弃,首行恰是纯日期头时卡片看上去就只有一个日期。新增续行回接(续行拼回上一条目)+ 分段日期弱化为 digest-sub-date 小标;前端显式请求 max_chars=2000 避免长摘要被后端默认上限截断。全库 57 条多行摘要统一恢复完整显示,此前受影响的卡片正文均已正常。

2026-09

新歌《车道沟没有沟》:又一首原创上线番茄畅听 / 番茄音乐,me坤子 演唱。把北京的地名唱成一句温柔的错觉,封面里背着吉他的人站在水边,等落日把回家的路铺满——「我的音乐」区块现已收录四首,点开就能听。

2026-08

v0.4.8:可靠性修复——根治「历史消息重放污染上下文导致答非所问」(新增 poll_new_message_max_age_hours 解耦新消息窗口、批内防抖剔除陈旧记录、清理 OCR caption 噪声);长回复排版规范、引用回复降级消除、承诺边界措辞修正;安全加固 image.py 路径注入与登出真实吊销、性能并发化抓取与限频退避。

v0.4.7:缺陷修复——LLM 异常精确分类(新增 LLMNetworkError / LLMRateLimitError / LLMAuthError)、OCR 下载大小限制收紧到 10MB、清理 91 处 noqa: BLE001;新增错误监控告警系统(src/alerts/)、性能基准测试工具、文档站点自动生成;测试套件扩展到 1409 用例。

v0.4.6:主动触达摘要排版优化——build_digest 条目之间空行分隔、去除冗余的「【对话摘要】」前缀、改用序号列表,解决钉钉推送里所有摘要粘成一段的问题。

v0.4.5:摘要视角修复——第一人称视角加固,summarize_conversation 新增显式 owner_name 参数并强制 prompt 约束「凡是主人的消息统一用『我』指代」,杜绝把主人当成第三方的混乱视角;四类生成链路共用同一函数,一次修复全生效。

v0.4.4:摘要连续性补跑——启动检测停机时长,按自然日补生成遗漏的「当日 / 近七天」对话摘要,与正常周期同源同格式(均写回 conversation_summaries);时区稳健、LLM 额度受 max_backfill_days 上限保护,异常不拖垮主链路。

修掉一个有意思的「时间窗口」bug:主动触达摘要推送原公式 max(今日0点, now - lookback_hours) 在 lookback_hours=24 时恒取今日 0 点,导致 17:30 推送只覆盖当日、漏掉昨日尾巴。改为 now - lookback_hours 滚动窗口,17:30 推送正确覆盖「昨日 17:30 → 今日 17:30」;同时复用 Web 同源的 list_recent_summaries(since=cutoff),消除窗口错配与活跃会话 LIMIT 截断的双重隐患。

v0.4.3:对话摘要页从纯文本升级为结构化卡片(头像/平台标签/主题/关键词/建议待办),默认今日视图;修掉 get_store_dep 关闭全局单例导致 metrics 偶发 500 的隐性 bug;F5 刷新不再跳回首页。

v0.4.2:Web 侧栏「消息中心」新增独立「对话摘要」实时页(30s 轮询),与钉钉 17:30 主动触达推送完全同源;主动触达支持自定义时刻。

v0.4.1:公共记忆(scope=public)每轮对话自动召回并注入 system prompt,与 RAG 注入对称;移除 auth_middleware 中明文密码日志,CodeQL 告警清零。

给 Linkora 做了一套开源宣传图,嵌入 README、GitHub Pages 项目页和个人主页,深色/浅色双版本自动切换;顺手修了上下文组装里的发言人丢失 bug。

Linkora v0.4.0 发布:认证迁移 pyjwt、出站 SSRF 默认拒绝、新增每日主动触达,并用 CI 护栏封死配置覆盖丢参数的事故路径。

2026-07

推进 数字克隆人 项目,基于 SQLite 沉淀近半年聊天记录,评估 Few-shot / LoRA / RAG / 混合四种技术路径。

启动 LookAway.app 简体中文汉化。

2026-06

梳理 25 个钉钉 OA 审批表单模板,试点含「项目」字段表单的 API 批量管理。

用 Whisper medium 处理会议录音,校准「曲总 / 老蔡 / 英雄传团 Top10」等专有术语映射。

精选项目
关于我

🎯 专注领域

  • AI 智能体 & RAG 系统
  • 企业级 IM 平台集成
  • 云原生与 DevOps 工具链
  • 网络安全与 VPN 方案

🛠 技术栈

  • Python / Go / TypeScript
  • Docker / K8s / CI/CD
  • PostgreSQL / Redis / SQLite
  • DingTalk / Feishu / WeCom SDK

📫 联系

  • GitHub:@0x0021
  • 开源项目、技术文章都在上面持续更新
  • 欢迎就 AI 智能体 / IM 集成交流想法