Build useful systems. Leave clean diffs.
写一些能跑的东西。
Projects · Contributions · Illustrated LLM guide ↗
I build agent workflows, retrieval tools, and local-first apps. I care about what happens after the demo: explicit controls, reproducible experiments, and changes that can be reviewed.
|
A local software-delivery workbench. Review a plan, approve execution, and inspect a local patch before applying it. Go · React · SQLite |
A local MCP server that selects skills within a token budget. Keep useful instructions close and context small. TypeScript · MCP · local stdio |
|
Learn AI by testing your understanding: explain a concept, run a reproducible experiment, then explain it again. TypeScript · bilingual · local-first |
Recurring reminders that move to the next cycle only after confirmation. Native apps with local storage. SwiftUI · Kotlin / Compose |
- Suite / StreamDock — a Windows tray utility and an Emby reverse-proxy panel.
- 看得见的大模型 — an illustrated, hands-on guide to LLMs, written in Chinese.
Projects where my contributions have been merged upstream, with merged PRs linked for each project. The full history is preserved below.
| Project | Merged work |
|---|---|
| WeKnora | Preserve native OpenRouter reasoning settings when legacy defaults are present. #3807 |
| CowAgent | MCP and skill configuration in web / desktop consoles #3155; optional Agent Mail Docker Compose profile #3236. |
| MaxKB | Skip degraded tool records for workflow tools. #7182 |
| OpenHands | Align the README's Node.js requirement with the package configuration. #17410 |
| Open WebUI | Improve Simplified Chinese translations. #30043 |
| p5.js | Parse p5.strands callback parameters and bodies from the AST. #9188 |
Full contribution log · merged & in review · updated daily
External PRs, grouped by outcome and repository. Statuses are synced from GitHub; open PRs are not presented as merged contributions.
| Repository | Contribution | Status |
|---|---|---|
| MERGED landed upstream | ||
| 1Panel-dev/ MaxKB |
fix: skip degraded tool record for workflow tools (#7053) | |
| OpenHands/ OpenHands |
README Node.js 版本与 engines.node 对齐。 | |
| open-webui/ open-webui |
简体中文 i18n 翻译改进。 | |
| processing/ p5.js |
修复 p5.strands 单参数箭头函数解析,解决 #9180。 | |
| Tencent/ WeKnora |
修复 Lite 启动时未加载 .env 配置,并保留 ENV_FILE 与进程变量优先级。 | |
| Tencent/ WeKnora |
OpenRouter 旧版默认 thinking_control 不再覆盖原生 reasoning 设置。 | |
| Tencent/ WeKnora |
fix(skills): explain unfederated skills.sh imports | |
| Tencent/ WeKnora |
fix(kb-delete): give wiki cleanup its own longer timeout budget | |
| Tencent/ WeKnora |
fix(knowledge): add missing POST /knowledge-bases/:id/rebuild-index route | |
| zhayujie/ CowAgent |
控制台侧栏版本号一键源码更新,修 #3148。 | |
| zhayujie/ CowAgent |
Web / 桌面配置 MCP 和 skills,修 #3114。 | |
| zhayujie/ CowAgent |
钉钉收文件,交给 agent。 | |
| zhayujie/ CowAgent |
钉钉流式 markdown 卡片。 | |
| zhayujie/ CowAgent |
LLM 流式输出期间探测 steer inbox。 | |
| zhayujie/ CowAgent |
feat(docker): add optional Agent Mail compose profile | |
| zhayujie/ CowAgent |
fix: keep tool-call breadcrumb through context compaction | |
| IN REVIEW awaiting maintainer review | ||
| 666ghj/ BettaFish |
PDF 导出文件名防路径穿越。 | |
| anthropics/ anthropic-sdk-python |
fix(streaming): keep stop_* when a later message_delta omits them | |
| anthropics/ sandbox-runtime |
区分 whichSync 超时与二进制不存在。 | |
| anthropics/ sandbox-runtime |
仅当正文实际变化时才保留 Content-Length 处理。 | |
| anthropics/ sandbox-runtime |
feat: deny unlink/rename inside write-allowed paths | |
| infiniflow/ ragflow |
fix(chunk): do not let split fallback re-emit chunks a postprocess filter dropped | |
| processing/ p5.js |
docs: 将 @tsumon 加入 p5.js 代码贡献者名单。 | |
| stablyai/ orca |
Dashboard 别把还活着的 structured chat 当成死终端。 | |
| stablyai/ orca |
修复 git username 探测超时时静默丢失前缀。 | |
| Tencent/ WeKnora |
fix(datasource): skip Yuque HTML app shell bodies instead of indexing them as Markdown | |

