第四篇:用自己写的工具管理自己的日常工作:两周体验与五个坑

30 阅读9分钟

Solo Workspace「吃自己的狗粮」两周后,记下 5 个真实场景和踩过的坑。


前三篇我都在讲为什么做、怎么设计、踩了什么坑。

这篇换个视角——做完之后,我真的在用吗?用起来爽吗?哪些地方又不爽了?

工具是自己写的,骗自己没意义。两周下来,我把它每天能用到的场景都用了一遍,也攒了一肚子不爽。下面按场景讲,每个场景都带「爽在哪」和「不爽在哪」,不爽的地方就是 v0.3 要解决的。


一、项目跳转:一条别名省掉脑子

独立开发者手里通常不止一个项目。我现在常驻的有 4 个:Solo Workspace 本体、一个 reviewbot 子项目、一个博客、一个长期搁置的小玩具。每次切项目目录,以前是这样的:

cd ~/work/source/solo-workspace/cli   # 路径太长记不住,先 ls 一遍
ls ~/work/source/
cd ~/work/source/xxx

cd 本不该是个需要思考的动作,但我每次都要 ls 一次确认目录名。脑子里记不住 4 个项目的完整路径。

现在我用 Solo Workspace 的 sw project 加一条 shell 别名,把这件事变成肌肉记忆:

swj() { cd "$(sw project path "$1")" && pwd; }

把它丢进 .zshrc,之后切项目就是:

swj 1    # 跳到 id=1 的项目
swj 2    # 跳到 id=2 的项目
~/work/source/solo-workspace/cli

swj id 跳到项目目录

swj-jump.png

爽在哪?不用记路径,只记数字。 项目是 Solo Workspace 里登记过的,id 是稳定的自增主键,不会因为目录改名就失效。比 alias pj1=cd xxx 灵活——alias 写死路径,项目改名了还得改 alias;而 sw project path 是从本地数据里查的,改了目录直接 sw project update 就行。

不爽在哪?id 和项目名的映射记不住。 swj 3 是哪个项目?得先 sw project list 看一眼。我现在偷懒记在便签里,但这其实是工具该解决的事——v0.3 想加个 swj solo 这种按别名跳转,或者 swj 不带参数时弹个 TUI 选。


二、待办管理:从 Apple Reminders 抢回来的两周

我之前写第一篇的时候抱怨过,待办散在 Apple Reminders、Obsidian、终端 TODO.md 三处,谁也不全。

两周下来,sw todo 已经把 Apple Reminders 里的东西全接管了。原因不是功能多——Apple Reminders 功能多得多——而是它就在我手指边上

写代码写到一半想到个事,以前要 Cmd+Space 打开 Reminders,输完切回来,思路已经断了。现在:

sw todo add "reviewbot 接 GPT-4o 的分支晚上试试"
✓ Todo added (id=23)

敲完继续写代码,思路不断。这是 CLI 工具对 GUI 工具最大的优势——不需要切换上下文。

但待办多了之后,问题来了。

我用两周攒了 27 条待办。sw todo list 一拉,27 条哗啦一下全出来,pending 和 done 混在一起,根本看不清今天该干啥。

于是我做了一件事——自动归档

逻辑很简单:超过两周的 done 状态待办,自动归档到另一个文件,不出现在默认 list 里。可以手动触发,也可以每次 sw todo list 时顺手触发。

sw todo list
ID  │ Description                       │ Status   │ Created
────┼──────────────────────────────────┼──────────┼──────────
21  │ 修 table 中文对齐偏移 1 字符       │ done     │ 06-12
22  │ reviewbot 接 GPT-4o 分支           │ pending  │ 06-15
23  │ 周报                              │ pending  │ 06-20
24  │ sw project path 别名写到 README    │ done     │ 06-22
...

超两周 done 自动归档,list 只看当前两周

todo-archive.png

爽在哪?待办和 done 不混在一起,看 list 时只看当前两周的。 老的 done 不删,归档了,写周报翻历史时还能捞回来。

不爽在哪?没有搜索和过滤。 27 条里我想找「reviewbot 相关的」怎么办?现在只能 grep 数据文件。这暴露了一个设计欠考虑——todo 没加 tag 字段。v0.3 要加 sw todo list --tag=reviewbot


三、随手 log:给周报省时间

这件事是我用着用着才加的,原始规划里没有。

独立开发者没有项目经理帮你记录「这周做了啥」。每周写周报——给自己也好,给合伙人也好——都是个痛苦活:翻 git log、翻聊天记录、翻脑子。

于是加了个 sw log

sw log "修完了 ANSI 颜色泄露,原因是截断字符串时没补 \033[0m"
sw log "今天 reviewbot 跑通了第一版 prompt"
sw log "服务器 3 的 SSL 还剩 8 天,已提醒"
✓ Log added (id=58)

不加分类、不加状态,就是一条带时间戳的纯文本。要的就是「随手」——任何成本都会让人不想记。

写周报的时候:

sw log list --since=7d
06-18 14:22  修完了 ANSI 颜色泄露,原因是截断时没补 \033[0m
06-18 16:05  今天 reviewbot 跑通了第一版 prompt
06-19 09:30  服务器 3 的 SSL 还剩 8 天,已提醒
06-20 21:11  todo 自动归档上线,超两周 done 不显示
...

随手记 log,写周报时按时间倒序捞出

sw-log.png

一周发生了什么一目了然。从这堆流水里提炼周报,比从 git log 里捞快多了——git log 里只有 commit,没有「今天调了一下午这个 bug 最终发现是个 typo」这种事。

爽在哪?周报从 1 小时变成 15 分钟。 而且因为是随手记的,细节比周末硬回忆要真实得多。

不爽在哪?log 一多也乱。 现在是按时间倒序纯列表,没有按项目归类。200 条 log 之后想找「solo-workspace 这周做了啥」还是得 grep。v0.3 可能加个 --project 关联,记 log 时顺手带项目 id。


四、密钥隔离:给 AI Agent 留一扇门,但不上保险柜

这件事最有意思,也是最近才想明白的。

我现在越来越多地让 AI Agent(命令行里的那种)帮我干活——「记个待办」「写个周报」「查下所有服务器 SSL 状态」。Agent 调 sw 命令很自然,sw 就是个 CLI,本来就是给程序调的。

但有个问题:密钥。

sw secret 里我存了一堆 API key、数据库密码、SSH 私钥路径。这些是我自己用的,跟 Agent 没关系。如果 Agent 调 sw todo add 的时候,我能顺便让它读到 sw secret list,那 Agent 就能把这些东西发给它的远端模型——这是绝对不能接受的。

所以密钥这块我做了一个隔离:

  • 数据文件分两份:普通数据(project/todo/log/server)一份,secret 单独一份。
  • 配置指定sw 默认读 ~/.solo/ 下的数据。secret 用 -c 指定另一个配置目录,或者干脆只在交互式 shell 里用。
  • Agent 调用时:给 Agent 的 sw 命令绑定一个不含 secret 路径的配置,Agent 拿到的 sw 是「阉割版」——能记待办、能查服务器,但碰不到密钥。
# 我自己用,完整配置
sw secret set OPENAI_API_KEY
​
# 给 Agent 用,配置里不含 secret 目录
sw -c ~/.solo-no-secret/ todo add "Agent 帮我记的"

secret 单独配置,给 Agent 阉割版 sw

secret-isolation.png

爽在哪?Agent 能用我的工具,但碰不到我的保险柜。 这个模型我觉得可以推广——独立开发者以后会越来越多地把活儿交给 Agent,密钥隔离是基本功,不是可选。

不爽在哪?配置切换心智负担。 现在要手动 -c 指定,容易忘。理想状态是 Agent 调用时自动降权,但这需要 Agent 框架配合,不是 sw 单独能解决的。v0.3 想加个 sw agent 子命令,专门给 Agent 用,内部就走阉割配置。


五、一个意外发现:CLI 比 GUI 更适合给 AI 当手脚

上面四件事都是规划内的,第五件是规划外的——我发现 sw 这个 CLI 在给 AI Agent 当手脚这件事上,意外地好用。

image-20260625092801477.png

GUI 工具给 Agent 用基本不可能:Agent 不能点按钮、不能拖窗口。而 CLI 天然是「函数调用」的形态——sw todo add "xxx" 就是一个函数 todo.add("xxx")。Agent 不需要学什么 SDK,只要看一眼 sw --help 就能开始调。

这两周我搭了个 reviewbot 子项目,让 AI 看 PR。reviewbot 调 sw 读项目列表、读最近的 log、查服务器状态,组合出上下文再喂给模型。整个 chain 里 sw 是「Agent 的眼睛和手」。

这件事让我重新理解了 Solo Workspace 的定位——它不只是给我用的,也是给 「我 + AI Agent」这个组合 用的。独立开发者以后不是一个人干活,是一个人指挥一堆 Agent 干活。CLI 工具如果设计得好,就是 Agent 的标准 API。

所以密钥隔离这件事不是小细节,是这套协作模式能不能成立的前提。


两周总结:狗粮好吃,但还有点夹生

回答规划里那个问题——「狗粮好吃吗?」

好吃。两周里 sw 已经接管了我的项目跳转、待办、随手 log、密钥管理四件事,Apple Reminders 不再打开,TODO.md 不再维护,脑子不再用来记路径。

但还有点夹生,主要是这两件:

  1. 没有搜索/过滤——todo 和 log 一多就抓瞎,v0.3 必须加。
  2. 没有 tag/项目关联——没法按项目维度看待办和 log,结构上欠了。

这已经是 v0.3 的路线图。工具还在生长,没到「完成」的时候——独立开发者的工具,大概永远不会有「完成」这个状态。

如果你也在独立开发,或者也在折腾 CLI + AI Agent 这套组合, Solo Workspace 的代码都在 GitHub 上,欢迎来一起踩坑。


专栏:Solo Workspace 开发实录