一个网关一把钥匙,三个客户端三种格式:用 cc-switch 收拢 AI 编码配置

Posted on 四 03 9月 2026 in Tech • Tagged with journal, AI, LLM, tooling, claude-code, codex, opencode, self-host

我手上就一个自建网关、一把 API key,可 Claude Code 要写进 settings.json 的 env,Codex 要写进 config.toml 加 auth.json,OpenCode 要在 opencode.json 里手搓一个 provider——同一件事写三遍,三种格式。cc-switch 把这三份配置收进一个 SQLite 当唯一数据源,托盘点一下就切。这篇讲清它是什么、为什么自建用户尤其需要它、两种接法怎么选,附上我本机三条真实链路(脱敏)和四个只有自建才会踩的坑:opencode.jsonc 会盖掉 cc-switch 的写入、网关的 /models 不是 OpenAI 形状所以自动拉模型没用、密钥两周过期后要改的地方变多了、以及 settings.json 里那个 PROXY_MANAGED 占位符是干什么的。最后是一页 cheatsheet。


Continue reading

别让 agent 再 grep 了:用 graphify 给代码库先画一张图

Posted on 三 02 9月 2026 in Tech • Tagged with journal, AI, knowledge-graph, tooling, code-intelligence, tree-sitter, agent

AI 编程助手最费钱也最不靠谱的动作,是拿着一个模糊的问题在你的仓库里反复 grep。graphify 换了个思路:先用 tree-sitter 把代码解析成一张知识图谱,之后所有问题都查图,不再翻文件。这篇我在本机真装真跑了 httpx 和 FastAPI 两个仓库——12.8 秒建图、零 token、39 倍压缩是真的,中文查询查不到、一次 update 把图从 8355 撑到 25685 个节点也是真的。另外扒了它为什么用 NetworkX 而不是 Neo4j(代价是 6.5% 的边被合并掉)、graphify-out/ 那 13 个产物里只有 5 个该进 git、怎么接自己的 LLM 网关不用 Gemini key,以及和 Aider、Serena、Potpie、GraphRAG、SCIP、Repomix 五条路线的横向对比。附可直接抄的 .gitignore 和 .graphifyignore。


Continue reading

用 SDD 写代码之后,我每天读的 Markdown 比代码多——于是写了 markpad

Posted on 二 01 9月 2026 in Tech • Tagged with journal, markdown, LLM, CLI, tooling, python, fastapi, SDD

自从用 OpenSpec 那套 spec-driven 流程做 AI 编程,proposal.md、design.md、tasks.md、spec.md 一层套一层,我一天读的 Markdown 比代码多。写这一端有 agent 帮忙,读这一端还是 cat 加 less。所以我给 markpad 又加了几刀:在任意目录敲一个命令,起一个本地 Web,左边编辑右边预览,Mermaid 和 PlantUML 直接出图,选中一段就能流式翻译,一键出摘要加思维导图。这是六月那篇介绍的续集,不讲功能清单,讲几个当时没写清的实现决定:为什么两种图表走两条完全不同的路、为什么翻译非流式不行、本地工具的安全线画在哪,以及我拿它打开自己上一篇博客时踩到的一个洞。1657 行 Python,53 个测试,可抄。


Continue reading

我写过 git cheatsheet,还是记不住——于是写了 gitman

Posted on 二 01 9月 2026 in Tech • Tagged with journal, git, LLM, CLI, tooling, python, safety

我在自己的 wiki 上写过一篇 git tips,改了 17 版,该记不住的还是记不住。于是写了 gitman:用自然语言说想干什么,它先给出一份 git 命令计划和一条从真实 diff 里长出来的 commit message,你点头它才执行。这篇不讲“AI 真神奇”,讲的是让 LLM 碰你的仓库时必须先立起来的几道护栏——argv 白名单、三级危险分类、commit message 只能来自 snapshot、默认不联网。全部代码 942 行,5 个 commit,可抄。


Continue reading