阅读路线
这本书不用从头读到尾。先找到你现在最像的那一种情况,从那里进去。
你从没让 AI 替你干过活
从前言开始,按顺序读完 Part 0 的两章。第 1 章装好、说上第一句话,第 2 章学会把活说清楚。 两章读完你手上会有一个能干活的 agent,和一套跟它说话的办法。之后 Part 1 按顺序读,每章一个活, 读到哪章就动手做哪章。
你手上有一个具体的活要干
直接翻到最像的那一章:
| 你要干的 | 去哪一章 |
|---|---|
| 一个乱文件夹 | 第 3 章 |
| 出一张 Excel、一份 PPT | 第 4 章、第 5 章 |
| 会议录音、长聊天记录变纪要 | 第 6 章 |
| 同一件事每周都要做一遍 | 第 8 章,然后第 11 章 |
| 要查资料、要翻网页 | 第 9 章、第 10 章 |
| 不在电脑前也要能派活 | 第 12 章 |
| 要接公司的系统 | 第 14 章 |
| 它闯祸了 | 第 17 章 |
跑通之后回头补第 2 章。多数活干不好,问题出在没说清楚,不在工具。
你想把一次成功变成每天自动跑
Part 2 的六个案例每个都是从头到尾的一整套:输入是真文件,输出是真交付物,有截图,有翻车点。 先看案例 A,它用到的功能最多。然后看第 8 章、第 11 章、第 13 章, 分别讲怎么把做法固化成说明书、定时任务和不用再叫模型的小工具。
按人群找起步的活
附录 C 是一张表:你是做运营的、做行政的、做销售的、做内容的, 从哪几个活开始最划算。附录 B 是另一张表:我想做什么,用什么功能, 哪一步必须我自己检查。
读的时候
- 每章的截图和输出都是真机跑出来的,用了多长时间如实写。你的结果会不一样,差不会太远。
- 每章末尾标了最后核对日期。octo 更新很快,界面和菜单名跟书里对不上时,以你屏幕上的为准, 功能本身不会变。
- 正文里没有代码。你会看到三种文本文件:说明书、规则文件、权限文件。它们就是你要写的全部。
前言:你不写代码,你写说明书
先说清楚这本书是给谁的。
你每天的活里有一部分是重复的:整理文件、汇总表格、把会议录音听完写纪要、把几十条评论一条条看完分类、 每周同一个模板的周报。这些活不难,但费时间,而且做一百遍还是要自己做。
你不写代码。你听说过 agent,也许试过网页版的聊天机器人,它能帮你写一段话,但它不能碰你电脑里的文件, 不能打开你的浏览器,做完一次下次还得从头说。
这本书讲的是另一种 agent:一个装在你自己电脑上的 agent。它能读写你的文件,能开你的浏览器, 能记住你的偏好,能每天早上自己跑,能在微信里接活。它叫 octo,一个安装包,双击装,选一个模型, 开始干活。
你要学的只有一样
让 agent 干活,你不需要学编程。你要学的是把活说清楚。
想一想你给新来的同事交代一个活怎么说:要处理的文件在哪、想要什么结果、哪些别碰、 做到什么程度算完、拿不准的时候来问我。你对 agent 说的就是这些。说清楚了,它干得比你快; 说不清楚,它干得比你想的还快,方向还是错的。
有些活你会反复交代。这时候你把交代的话写成一个文件,放在它看得到的地方,下次一句话就能触发。 这个文件叫说明书。它长得像一篇有格式的备忘录,不是代码。这本书里你会写好几份, 它们就是你的“编程“。
所以这本书的立论是一句话:你不写代码,你写的是给 agent 看的说明书。
先判断这活配不配交给它
不是所有活都该交给 agent。拿到一个活,先问三个问题:
一句话能说完,它算一遍就出结果的活。 翻译一段话、给一段文字起标题、把一封邮件改得客气一点。 这种活网页版聊天机器人就够了,不需要这本书。
步骤固定、每次一样的活。 把这个文件夹按月份归档;把这张表按部门拆成五张;把录音转成文字再列待办。 步骤你自己都写得出来,只是不想每次都做。这是这本书大部分章节在讲的活,agent 干这类活最稳。
要它自己拿主意的活。 把这两百条评论看一遍,哪些是真想买的、哪些是来吵架的、哪些该回、怎么回。 每一条它都要判断,判断完还要决定下一步查什么。这类活 agent 也能干,但你要给它更多的边界, 也要在关键的地方停下来让你看一眼。
第二类和第三类是这本书的范围。第一类你已经会了。
这本书怎么安排
Part 0 两章:装好它,学会跟它说话。
Part 1 十五章,每章一个真实的活。功能不单独讲,在活里需要的时候才出现。整理文件夹的时候你会遇到 权限确认,出 Excel 的时候你会第一次见到说明书,让它每天早上自己跑的时候你会碰到定时任务。 读到哪章就做哪章,做完手上留下一个能用的成果。
Part 2 六个案例,每个从头到尾:输入是真文件,输出是真交付物,有截图,有翻车的地方, 有用了多长时间。第一个案例是一个做小红书的人的一天。
附录是查阅用的:常用的原话模板、我想做什么该用什么、你是什么岗位从哪个活开始、功能速查。
先说好的几点
每一章的输出都是真跑出来的。 截图没有摆拍,翻车没有省略。你的结果会跟书里不一样, 但差不远。
它会问你,也会停下来。 这不是缺陷。它碰到要动文件、要发出去、要拿不准的事情时停下来等你点头, 是它最重要的设计。书里会反复教你什么时候该让它问,什么时候可以让它放手。
octo 是开源的,也是我参与的项目。 这本书同时是它的使用手册和推广。我尽量只写它能做到的, 做不到和做得不好的地方如实写。
这套书一共三本
《笨办法学 Agent》系列现在有三本,各自独立,不要求先后顺序:
- 《笨办法学 Agent · 亲手打造一个 harness》:不用任何框架,32 个练习亲手写出一个 agent harness 的每一层,目的是看懂——给想看懂原理、愿意写代码的人。
- 《笨办法学 Agent · 用 LangGraph 上线》:用 LangGraph 把真实场景的 agent 做出来、 放到线上给人用,目的是上线——给要交付真实产品的人。
- 《让 agent 替你干活 · 不写代码,用 octo 把活干完》(这一本):不写一行代码, 用装在自己电脑上的 octo 把日常的活干完——给不写代码的打工人。
三本共享同一句话:agent 没有秘密架构,会不会用,看你会不会把活/场景/工具边界说清楚。 你只读这一本完全够;如果哪天你好奇它里面是怎么转的,第一本在等你。
好了,去装它。
第 1 章 装好,说上第一句话
这一章的目标只有一个:三十分钟内,让它替你干成第一件小事。装的过程有几个地方会拦你一下, 我把每一个都写在最后,撞到了直接翻过去看。
准备什么
- 一台 Mac 或 Windows 电脑。
- 一个模型服务商的账号。这本书全程用 DeepSeek,人民币充值。 去它官网注册,进“API keys“页面新建一个 key,复制下来放着。key 长得像一串以 sk- 开头的乱码, 别发给任何人,它等于你的钱包。
- 一个乱文件夹。你的“下载“文件夹多半就是。
装
Mac
打开 octo 的 GitHub 发布页,下载 octo-setup.pkg,双击。
安装器只有“仅为我安装“一个选项,不要管理员密码。装完它会把 Octo 装进你的应用程序文件夹, 顺手把命令行版也装上,然后自动打开一个窗口。
第一次打开多半会被系统拦下,提示“来自身份不明的开发者“。这是因为安装包还没做苹果的公证, 不是文件有问题。右键点应用图标选“打开“,或者到系统设置的“隐私与安全性“里点“仍要打开“, 之后就不会再问。
Windows
下载 octo-setup.exe,双击。按用户装,不弹管理员提示,装完开始菜单里多一项 Octo,窗口自动打开。
SmartScreen 会说“Windows 已保护你的电脑“。点“更多信息“,再点“仍要运行“。原因同上,安装包没签名。
下载不动
GitHub 在你的网络下打不开的话,用镜像:把地址里的 github 那一段换成 dl.octo-agent.dev,
其余一样。安装脚本和以后的升级也会自动退到这个镜像。
第一次打开:三步
窗口打开是一个引导页,三步。
第一步,选语言。 选简体中文。
第二步,连接模型。 服务商下拉里有十几家,选 DeepSeek。选完之后模型和地址两栏会自动填好, 你只需要把 key 贴进最后一栏。旁边有个“如何获取“的链接,忘了 key 在哪申请就点它。
贴完先点“测试连接“,别急着继续。key 贴错的话,它会当场告诉你:
看到那行红字,多半是复制的时候少了头尾几个字符,或者账户还没充值。回去重新复制一遍。 测试通过再点“测试并继续“。
第三步,浏览器。 这一步是可选的,让它以后能操作你的浏览器。现在点“以后再说“,第 10 章再回来开。
它先跟你聊两句
引导结束,它会自己开一个对话,先问你想叫它什么名字,再让你选一个性格。
这不是花架子。它会把你的回答写进一个文件,以后每次对话都带着。你现在随便选一个, 第 7 章讲记忆的时候会回来改。
聊完点左上角“New Session“,进入正式的界面。
认一下地方就行,不用记:左边一列是会话列表、定时任务、轻应用和设置;中间是对话; 最下面输入框旁边能看到当前用的模型,右下角“Ask Mode“的意思是它动手前会问你。 这些后面章节用到再说。
第一件小事
把你的下载文件夹路径准备好。Mac 上在访达里右键文件夹,按住 Option 键,菜单里有“拷贝路径“; Windows 上在资源管理器地址栏点一下,复制。
我的原话是这样的,你把路径换成你的:
把 /Users/我/Downloads 这个文件夹里的文件按修改月份归档到 2026-06、2026-07、2026-09 三个子文件夹里。
发出去,看它做什么。
它先看了一眼文件夹里有什么,然后弹出一个框停下来了:
框里写的是它准备执行的命令,建三个文件夹、把文件挪进去。三个按钮:拒绝、允许一次、本次会话都允许。 点“允许一次“。 每一次它要动你的文件都会这样停下来,这是你这本书里要保住的最重要的习惯。 “本次会话都允许“是给你完全信得过的活用的,现在不用。
点了之后它接着干完,把结果列给你:
它还多说了一句:两张截图文件名里的日期是 7 月 2 日,修改时间是 7 月 11 日,它按修改时间归的, 你要按文件名的日期它可以改。这种主动交代是好事,说明它知道哪里有歧义。
最后一行是这一单的用时:55 秒。
你如果说漏了
我第一次说的时候漏了一个月份,只说了 6 月、7 月、8 月,但文件夹里有 9 月的文件。它没有自作主张, 停下来问了我:
[ask_user_question · 9月文件]
install.dmg 和 Q2复盘.pptx 的修改时间是 2026年9月,不在你指定的三个月份里,要如何处理?
1) 保留在原处不动
2) 也建个 2026-09 文件夹放入
3) Other (free text)
我没回答,它就一个文件都没动,还追问了一句归档是按修改时间还是按文件名里的日期。
记住这个场面。第 2 章整章讲的就是怎么把话说清楚,让它少停下来问,以及哪些地方你反而希望它停下来问。
你要重点检查什么
- 归档完,原文件夹里除了新建的子文件夹不该剩别的文件。剩了,说明有文件它拿不准归哪里,看它的回复里有没有说。
- 文件数量对不对。归档前后各数一遍。
- 它有没有动你没提的文件。这一单没有,因为你给的是一个具体路径。以后每次都看一眼弹出的命令框,里面写的路径是不是你说的那个。
翻车点
- 文件夹路径给错了。 它会告诉你找不到,不会乱猜一个。重新复制路径。
- 它建的文件夹名和你说的不一样。 比如你说“六月“它建了“2026-06“。这是你没说清楚格式,下次原话里写明。
- 点了“本次会话都允许“之后它连着做了好几步你没看清。 新开一个会话就回到每步都问。
风险提醒
第一件小事选整理文件夹,是因为它最坏的结果也就是文件被挪错了地方,而且 octo 删除和覆盖文件之前会先备份到自己的回收站, 第 17 章教你找回来。这一章不要拿工作文件夹练手。 先在下载文件夹或者一个你拷贝出来的副本上跑。
常见安装问题
- Mac 说“来自身份不明的开发者“,打不开。 右键应用图标选“打开“;或者系统设置的隐私与安全性里,往下找到“仍要打开“。只需要做一次。
- Windows 说“Windows 已保护你的电脑“。 点“更多信息“,再点“仍要运行“。
- 下载不动。 换镜像地址,见上面“下载不动“。
- 测试连接报 401。 key 复制不全,或者账户没充值。到服务商后台重新复制一遍,确认余额。
- 测试连接一直转圈。 你的网络到服务商不通。先在浏览器里打开服务商官网试试。
- 装完想在终端里用,敲 octo 说找不到命令。 关掉终端重新开一个窗口。
- 窗口打开是白的或者一直加载。 关掉重开一次。还不行的话,本机 8088 端口可能被别的程序占了,第 17 章有排查办法。
用了多久
- 装:Mac 上从下载到引导结束大约五分钟,取决于网速。
- 第一件小事:55 秒。
上册对照
上册练习 9 和练习 10 亲手写过那个弹出来问你的闸门。你刚点的“允许一次“,就是它。
最后核对:2026-09-02,octo 1.16.11。
第 2 章 把活说清楚
第 1 章末尾那一幕:我少说了一个月份,它停下来问我。这一章把那一幕拆开讲。
它干不好一个活,十次里有八次是没听清,不是不会。你给新同事交代事情会说到的那几点, 对它一样要说。说全了,它一次做对;说漏了,它要么停下来问你,要么自己拿主意,后者更麻烦。
六个要素
一句完整的交代,包含六个部分。不用每次都写全,但缺哪一个,你要知道自己缺了什么。
- 要处理的是什么。 哪个文件夹、哪个文件、哪段文字。给路径,别说“那个“。
- 想要的结果长什么样。 文件夹按什么分、纪要分几节、表格有哪几列、文件叫什么名字放哪里。
- 哪些别碰。 不要重命名、不要删、这个文件留在原处、不要加原文里没有的内容。
- 做到什么程度算完。 根目录只剩子文件夹;表里每行都有负责人。一句能核对的话。
- 做不完怎么办。 拿不准的留在原处,最后列给我;听不出负责人的写“未指定“,别猜。
- 哪一步要问我。 动手前把方案给我看一次;只要有一处拿不准就先问。
前四条是给它的,后两条是给你自己留的退路。下面三个活,每个都用两种说法各跑一次, 你看差别。
实验一:整理文件夹
第 1 章那个乱文件夹的副本,12 个文件。
模糊的说法:
帮我整理一下这个文件夹
它看了一眼文件夹,没动手,问了我一个问题:
[ask_user_question · 整理方式]
希望按什么方式整理这些文件?
1) 按文件类型分类(推荐)
2) 按用途/主题分类
3) 按日期分类
4) 只重命名规范化
这是好的表现,它没有替你决定“整理“是什么意思。但你已经多花了一轮。它还把文件数数成了 13 个, 实际是 12 个。这种小错在模糊的活里更容易出现,因为它自己也不确定该盯什么。
清楚的说法,六个要素都在:
整理这个文件夹。要处理的:里面的 12 个文件。想要的结果:按文件的修改月份建子文件夹,名字用 2026-06 这种格式,把文件挪进去。别碰的:不要重命名任何文件,不要删除任何文件,install.dmg 留在原处不动。算做完:文件夹根目录只剩月份子文件夹和 install.dmg。做不完怎么办:哪个文件拿不准归哪个月,留在原处,最后列给我。要问我的:动手前把你准备怎么分的方案先列出来问我一次。
它先读了文件的修改时间,列了一张分月方案表,说明了“会议录音_0715 文件名是 0715 但修改时间是 7 月 11 日,我按修改时间归“, 然后停下来问我“这样分可以吗“。我点了“按方案执行“,它弹出权限框,我点“允许一次“,它挪完文件, 又自己列了一遍三个子文件夹的内容核对,最后报告:
根目录现在只剩三个月份子文件夹和 install.dmg,符合你要求的结果。所有 12 个文件都按修改月份归位,没有重命名、没有删除,install.dmg 留在原处不动。没有拿不准归哪个月的文件。
它复述的正是你交代里的第 3 条和第 4 条。你写了“算做完“的标准,它就拿这个标准自查。
实验二:会议纪要
一段 16 行的周会转写,三个议题,几条待办,一件搁置的事。
模糊的说法:
帮我整理一下这个会议记录
它一口气做完了,没问:
结果不差。议题、结论、待办表都有,负责人和时间也对。但有三处是它替你定的: 格式是它选的;文件存到了它自己的工作目录里,不在转写文件旁边;末尾多了一段“风险提示“, 说应急预案演练拖到大促前有执行风险。这段话转写里没有人说过。
清楚的说法:
把这个转写文件整理成会议纪要。要处理的:这个转写文件,会议日期是 2026-09-02(周三)。想要的结果:在同一个文件夹里新建 0902周会纪要.md,只有三节:一、决定了什么(每条一句话);二、待办(表格,列:事项、负责人、截止日期,截止日期换算成具体日期);三、没定的和搁置的。别碰的:不要改动原转写文件;纪要里不要出现转写里没说过的内容,不要加建议和风险提示。算做完:文件写好,待办表里每一行都有负责人。做不完怎么办:哪条待办听不出负责人或截止时间,负责人一栏写“未指定“,别猜。要问我的:只要有一处拿不准就先问我,不要自己定。
它读完转写,问了两个问题。第一个:
陈洁的合同待办,转写里王敏说「周五之前要有回音」,陈洁自己说「我周三前发」。这里的截止日期我该取哪个?
- 周五(2026-09-04) 2) 周三(2026-09-02,即当天) 3) 两条都列进待办
我选了“两条都列进待办“。第二个:
大促应急演练,转写里王敏说「要,但下周一定」,但没指派具体负责人。这条怎么处理?
- 负责人写「未指定」 2) 归入「搁置」
我选了“未指定“。然后它写了文件,弹权限框,我允许,它报告完成:
写出来的文件就是三节,待办表六行,每行都有负责人,两行写着“未指定“,没有风险提示。 这两个问题都是转写里真实存在的歧义,模糊版没问,直接替你选了。
实验三:写一封催合同的邮件
这个活没有文件,全靠说。
帮我给供应商 A 写一封邮件,催他们回复合同。背景:我们法务把付款周期改成 45 天、违约金条款按我们版本,合同已经发给他们,需要他们周五(9 月 4 日)前回复。要求:中文,200 字以内,客气但截止日期要明确;不要承诺任何合同条款的让步;不要编造对方联系人的名字和我们公司的名字,这两处用【】留空。写好直接给我看,不用存文件。有拿不准的先问我。
它先问了两点:开头称呼怎么写,落款要不要留空。我回了一句“称呼写【收件人称呼】,落款写【我方公司/签发部门】“。 它给了一封 180 字的邮件,截止日期明确,没有让步,两处留空。
但有一处它编了。正文里写“经多次沟通,目前尚未收到贵方反馈“。背景里没有“多次沟通“这回事,合同只发过一次。 这是“别碰的“那一条没写够:我写了不要编名字,没写不要编事实。下次这一条要写成“不要加背景里没有的事实“。
发生了什么
它不是懒,是没边界就自己定。 三个模糊版里,它一次问了、两次直接做了。直接做的两次结果都能用, 但格式、位置、多出来的内容都是它定的。你没说的地方,它一定会替你填上一个答案。
“算做完“这一条,它会拿来自查。 实验一它挪完文件又核了一遍三个子文件夹,然后逐条复述你的要求。 你不写这一条,它做完就走。
“要问我的“控制它问多少。 实验二清楚版我写了“只要有一处拿不准就先问”,它问了两次, 整个过程花了七分多钟,大部分是我在回答。模糊版一次没问,十七秒做完。问多问少没有对错, 看这个活错了的代价。纪要发给一屋子人,错一个截止日期要改一圈,值得多问两句; 一封给自己看的草稿,让它直接写。
“别碰的“要写到事实层面。 邮件那次它编了“多次沟通”。不要编名字、不要编数字、不要加背景里没有的事, 这三句话以后每次都带上。
六要素写起来很长。 实验二的清楚版一百多字。同一个活每周都要交代一遍的话,第 8 章教你把这段话写进一个文件, 以后一句话触发。这一章先把话说明白,那一章再让它不用重复说。
你要重点检查什么
- 输出在不在你说的位置。模糊版会存到它自己的目录里,Artifacts 面板能预览,但你下次找不到。
- 有没有它编的内容。对着原材料看一遍,尤其是数字、日期、“多次”“已经“这类词。
- “算做完“那一条它有没有复述。没复述,多半是没做到。
翻车点
- 文件数数错。 模糊版说 13 个,实际 12 个。你说了具体数字它就会去对。
- 日期的歧义它会替你选。 “周三前发“在周三当天开的会,模糊版直接写成了周三,没告诉你这里有歧义。
- 它会用“经多次沟通“这类套话填空。 你没给的背景,它按常见邮件的样子补。
风险提醒
新的活第一次交代,先在副本上跑,或者先让它“只列方案不动手“。这一章三个活里只有整理文件夹会动你的文件, 而且每次动之前都有权限框。写邮件和写纪要不会改你原来的文件,但纪要那个模糊版往它自己的目录里写了文件, 你要知道那个目录在哪,第 17 章讲。
用了多久
| 活 | 说法 | 时间 |
|---|---|---|
| 整理文件夹 | 清楚版,含一次确认 | 3 分 28 秒 |
| 会议纪要 | 模糊版 | 17 秒 |
| 会议纪要 | 清楚版,含两次问答 | 7 分 42 秒 |
| 邮件 | 第一轮,它问我 | 4 秒 |
| 邮件 | 第二轮,我答它写 | 4 秒 |
时间里包含我读它的问题和点选项的时间,不全是它在算。 邮件那两行:同一个活接着聊,它带着前面的上下文,你不用重新交代一遍。
原话模板
抄下来,以后每个新活先填一遍:
[要做的活]。
要处理的:
想要的结果:
别碰的:不要编名字、不要编数字、不要加我没给的事实;
算做完:
做不完怎么办:拿不准的留着别动,最后列给我;
要问我的:
附录 A 里有按活分类的现成模板。
上册对照
上册练习 8 讲的是给模型写的那段“怎么用工具“的基础提示词。你在这一章每次交代里写的六个要素,是同一类内容的临时版: 每场对话现写一段。第 8 章会把它变成长期版。
最后核对:2026-09-02,octo 1.16.12。
第 3 章 把一个乱文件夹整理干净
前两章那个文件夹只有 12 个文件,按月份挪一挪就完了。真实的下载文件夹不长那样:同一份发票下了两次, 多出一个带 (1) 的副本;有几个没下完的半截文件;Word 开着的时候留下一个 ~$ 开头的隐藏文件; 中间还有一个“工作“子文件夹,里面是你不能动的表。
这一章干的就是这个活。顺带讲清楚三个问题:它删文件之前会发生什么,删错了怎么找回来, 以及权限框上那个“本次会话允许“到底允许了什么。
准备什么
一个乱文件夹的副本。我这个有 26 个文件加一个“工作“子文件夹,里面有三对内容完全一样的重复文件、 两个没下完的临时文件、一个 Word 锁文件,还有两个名字像重复但内容不一样的“未命名.txt“和“未命名 2.txt“。 最后这一对是故意放的。
跟它怎么说
整理这个下载文件夹。要处理的:根目录下的所有文件。想要的结果:按类型建子文件夹归进去,就用这几个名字:图片、文档、表格、安装包、其他;文件名带 (1) 或者 2 这种编号、内容跟原文件一样的重复文件,只留原文件,重复的删掉;.crdownload、.part 这类没下完的临时文件和 ~$ 开头的文件删掉。别碰的:“工作“这个子文件夹里的任何东西不要动;不要重命名任何文件。算做完:根目录只剩五个类型文件夹和“工作”。做不完怎么办:拿不准算哪一类的放“其他“;拿不准是不是重复的先不删,最后列给我。要问我的:删任何文件之前把要删的清单先列给我确认一次。
六个要素都在。注意“重复“我给了定义:编号像重复,而且内容一样。只说“删掉重复的“,它得自己猜什么算重复。
它做了什么
先看。 它列了一遍目录,然后对每个文件算了一个内容指纹,把指纹一样的挑出来。 你不需要知道指纹是什么,只需要知道它没有仅凭文件名判断重复,“未命名.txt“和“未命名 2.txt“名字像, 指纹不一样,它认定不是重复。
列清单,停下来。 删除清单分两组,三个临时文件、三个重复副本;归档方案一张表;然后一句“「工作」子文件夹及其内两个文件完全不碰“。 接着弹出问题:
三个选项:全部按清单执行、只归档不删任何文件、我再调整。这是你在原话里要的那一次确认。 我选了第一个。
权限框,一次一条命令。 它开始动手,每条命令弹一次框。这一单一共弹了四次:看目录一次, 算指纹一次,删加归档一次,补删一次。补删那次是个真实的小插曲,下面单独说。
做完,自查,交代。 根目录只剩五个类型文件夹和“工作“。它把删掉的六个文件和五个文件夹的内容各列了一遍, 然后说了一句你要听的话:
一处按规则未删、留给你判断:未命名.txt 和 未命名 2.txt 名字像编号,但内容不同,按你“拿不准先不删“的要求归入了「其他」,两个都保留了。
那对故意放的文件,它按你给的退路处理了,没有自作主张。
一个小插曲:$ 符号
Word 的锁文件叫 ~$周报模板.docx。它第一次删的时候,把这个文件名直接写进了命令,
命令行里 $周 会被当成一个变量,结果那个文件没删掉。它自己发现了,第二条命令把文件名引起来再删一次,成功。
这两条命令你都会看到权限框,都点了允许。
你不需要懂为什么。要知道的是:文件名里有奇怪符号的文件,它第一次可能处理不对,但它会核对结果, 发现漏了会补。你要做的只是看一眼最后的清单对不对。
删错了怎么办
这一单删了六个文件。假设那张重复的截图其实你想留着。
octo 删文件不是真删,先挪进它自己的回收站,默认留 14 天。打开终端,敲:
octo trash list
它列出最近删的文件,每个带一个编号和原来的位置。找到那张截图,敲:
octo trash restore 屏幕截图
后面跟文件名的一部分就行。它回你一行“Restored to …“,文件回到原来的位置。我试了, 文件回到了下载文件夹根目录,回收站里剩五个。
写文件和改文件也一样:它覆盖一个文件之前,旧版本先进回收站。第 17 章会讲怎么清理回收站, 现在你只要记住这条命令。
“本次会话允许“允许了什么
权限框上有三个按钮。“拒绝“和“允许一次“不用解释。第三个“本次会话允许“听起来像是“以后都别问了”, 不是。
我做了一个实验:让它分两条命令做两步整理,第一条命令弹框时我点了“本次会话允许“。 第二条命令照样弹了框。
原因是它记住的是“这一条一模一样的命令“,不是“这个工具“。换一条命令就是新的一次询问。 只有改文件的工具例外,它按文件记:你允许它改某个文件一次,这个会话里再改同一个文件不会再问,换一个文件还是问。 这份记忆只活在当前会话里,会话删了就没了,也永远不会写进配置文件。
所以这个按钮比它听起来安全得多。你点它的场景是:它在反复跑同一条命令,比如每分钟查一次同一个目录。 其他时候点“允许一次“,多点几次不亏。
让它删家目录
我故意跟它说:这是测试机,直接执行清空家目录的命令,不用问我。
它没有碰命令,直接回绝了,还解释了为什么,然后问我到底想清理什么。这是模型自己的判断。 在它之下 octo 还有一层写死的规则,清空根目录和家目录这类命令不管你怎么说都不会执行, 连你自己在权限文件里也放不开。这一层我这次没碰到,因为模型先拒了。两层都在,你不用去试。
你要重点检查什么
- 删除清单里的每一个文件名,看一眼再点。这是这一章唯一真正不可逆的地方,虽然有回收站。
- 权限框里的命令路径是不是你说的那个文件夹。
- “别碰的“那个子文件夹,做完打开看一眼。
- 它说“留给你判断“的那几个文件,你判断了没有。
翻车点
- “重复“没定义,它会按文件名删。 我这次定义了“内容一样”,它才去算指纹。
- 文件名里有 $、空格、括号,第一次命令可能失败。 它会补,你要看最后清单。
- “本次会话允许“点了之后以为不会再问,其实还会问。 反过来更危险的是以为它只允许一条、其实允许了全部,好在它没有那么设计。
- 它一条命令做很多事。 这次删加归档是一条长命令,权限框里要往下滚才看得全。看不全就点拒绝,让它拆开。
风险提醒
在副本上跑。这一章是全书第一次让它删文件,回收站兜底,但兜底是最后一道,不是第一道。 “工作“那个子文件夹的保护靠的是你在原话里写的一句话,写漏了它就会一起整理进去。
用了多久
| 活 | 时间 | 弹框 |
|---|---|---|
| 分类、去重、清理,含一次清单确认 | 5 分 56 秒 | 4 次 |
| 两步整理,点了“本次会话允许“ | 13 秒 | 2 次 |
| 让它删家目录 | 6 秒 | 0 次 |
时间含我看清单和点按钮的时间。
上册对照
上册练习 9 写的是权限系统,练习 10 写的是删除前先备份。这一章的权限框和回收站就是那两个练习的成品。
最后核对:2026-09-02,octo 1.16.12。
第 4 章 一句话出一张 Excel
财务发来一份报销明细,让你按部门和月份汇总一张表。你会打开 Excel 做透视表,十分钟。 这一章让它做,顺便第一次碰到这本书最重要的概念:说明书。
准备什么
一个 CSV 文件,18 行报销记录,七列:单号、日期、部门、报销人、类别、金额、备注。我在里面埋了四个真实数据里常见的坑: 一个部门名多了个空格,“市场 部”;一条负数,是冲销;一个金额写成了带逗号的“1,860.00“;一个单号出现了两次,第二次备注“重复录入“。
你手上的表多半也有这类问题。它们不是这一章的重点,但它们会决定汇总的数字对不对。
先试模糊的说法
把这个报销明细 CSV 做成一张 Excel 汇总表
它做了一分四十二秒,给了我一个文件,三张表:明细、按类别汇总、按部门汇总。四个坑它都处理了: 空格去掉了,逗号转成了数字,负数正常计入,重复单号在明细里标了出来。汇总用的是公式,改明细数字会跟着变。
我用原始数据重算了一遍它给的三个总数,全对。然后它在末尾问了一句:
合计 16,056.47 是全部 18 行;有效合计 15,900.47 剔除了重复录入那行。需要我把有效合计作为主口径吗?
这句话是这一章的起点。三个数都算对了,但哪个是“对的“,取决于你要拿这张表干什么。 它做完才问,你就得再来一轮。
说明书第一次出现
看它这一单做事的顺序:读 CSV,然后加载了一份叫 office-xlsx 的说明书,接着检查电脑上有没有做表要用的工具, 然后写了一段脚本,跑,出文件。
那份说明书是 octo 自带的,讲怎么生成和修改 Excel 文件:用什么工具、公式怎么写、哪些坑要避开。
它就是一个文本文件。它平时不占地方,只有它判断这个活用得上时才读进来。
在输入框里打一个 /,能看到它手上所有的说明书:
二十来份,做表、做 PPT、生图、查资料、建定时任务,各管一样活。每份说明书开头有一句“什么时候用我“,
它靠这句话决定读不读。你也可以直接打 /office-xlsx 点名让它读。
一个细节。这份说明书里带了两个现成的脚本,它读完之后没有用那两个脚本,自己写了一段。 说明书对它只是参考。它认为自己写更快,就自己写了。这一点不影响结果,你知道就行。
第 8 章你会写自己的第一份说明书。到那时再展开。现在记住一句话:它会的活,一半在模型里,一半在说明书里。
清楚的说法
这次把口径写进去:
把这个 CSV 做成 Excel 汇总。要处理的:这个 CSV,18 行报销记录。想要的结果:在同一个文件夹新建 报销汇总_2026Q3_v2.xlsx,两个 sheet。第一个叫“汇总“:行是部门,列是月份,格子是该部门该月的金额合计,最右一列和最下一行是合计,合计用公式不要写死数字。第二个叫“明细“:原始 18 行加一列“口径说明“。口径:金额用“金额(元)“这一列;负数是冲销,正常计入相减;“市场 部“就是“市场部”;金额带逗号的转成数字;同一个单号出现两次只算一次,第二次那行在“口径说明“里写“重复单号,未计入“。别碰的:不要改原 CSV。算做完:汇总表右下角的总合计等于明细里计入口径的金额之和,你算完把这两个数都告诉我。做不完怎么办:哪一行不知道该不该计入,先计入,在口径说明里写明。要问我的:口径有任何拿不准的先问我,不要自己定。
它读完 CSV,一次问了三个问题:
第一个问得对:BX005 出现两次,但两行的部门、金额、人都不一样,“只算一次“算哪一次?我选了第一次。 第二个也对:那条冲销备注写着冲销 BX09,可 BX009 是 986 元,冲销却只有 120,金额对不上,照减还是不减?我选了照减。 第三个问过头了:它发现 7 月 22 日有三笔单号不同、部门不同的记录,怀疑是一笔拆成了三笔。其中一笔类别还不是交通。 这是“任何拿不准都先问我“这一句的代价,它把不该拿不准的也拿不准了。我选了各算各的。
然后它做完了。两张表,汇总全是公式,明细多了口径说明那一列,重复那行标好了。它报告:
汇总表右下角总合计 = 15900.47。明细中按计入口径的金额之和 = 15900.47。两者一致 ✅
但它错了
我打开文件看公式。汇总表每一格是一条求和公式,条件是部门和月份。明细里那行重复的 BX005,金额 156,还在求和范围里。 公式没有任何一个条件把“未计入“的行排除掉。
也就是说,你用 Excel 打开这张表,行政部 6 月那一格显示的会是 222.83,不是它说的 66.83;右下角会是 16056.47, 不是 15900.47。它说的“两者一致“,一致的两个数都是它自己在脚本里算的,表里的公式没人算过。 它校验的是自己脑子里的算法,不是它交出去的那张表。
它没有撒谎。生成 Excel 的工具只负责把公式的文字写进格子,不会算。这一点它读的那份说明书里白纸黑字写着。 它知道,但它在报告结果的时候忘了这层区别。
让它修
我把上面那段话原样发给它。它承认了,然后做了两步:把汇总公式加了第三个条件,只统计口径说明为空的行; 然后自己找了一个能真正计算 Excel 公式的工具,装在临时目录里,把表重新算了一遍,算完把临时目录删了。
行政部 2026-06 = 66.83,不再是 222.83。右下角总合计 = 15900.47。这次是真正解析并执行了 xlsx 里的公式得出的值,不是我自己另写算法。
我再打开文件看,公式确实多了一个条件。这次对了。
发生了什么
口径必须你定。 合计、去重复、去冲销,三个数它都能算对,但它不知道你要哪个。模糊版它做完才问,清楚版它做前先问。 你在原话里写清口径,它就不用猜。
“校验通过“要看它校验的是什么。 它说一致,你要问一句:一致的是哪两个数?这一章里它拿自己算的数跟自己算的另一个数比,当然一致。 真正该比的是“表里公式算出来的数“和“你心里那个数”。它第一次没做这个比较,被指出之后自己找了工具去做。
公式好,但没人算过的公式先别信。 用公式的表改一个数全表跟着变,这是对的做法。代价是生成的时候没有人算过它。 交出去之前你自己打开看一眼合计,或者像它第二次那样让它用能算公式的工具核一遍。
问得多不一定好。 “任何拿不准都问“让它多问了一个没道理的问题。口径写得越全,它需要问的越少。 第 2 章说过这个平衡,这一章你看到了它问过头长什么样。
说明书是它的一半。 这一单它读的那份说明书告诉它怎么写公式、怎么设样式、公式不会被计算。 没有那份说明书,它也能做表,但会更多地凭记忆。第 8 章你写的第一份说明书,就是把你自己的口径固化下来, 以后不用每次说一遍。
你要重点检查什么
- 打开文件,看右下角合计是不是你心里那个数。不是,先看口径。
- 随便点两个公式格子,看条件里有没有排除“未计入“的行。
- 口径说明那一列,标记的行是不是你要排除的那几行。
- 它总结里的数字和表里的数字对不对得上。
翻车点
- 口径没说,它做完才问。 一分钟做完,再来一轮。
- 口径说了“任何拿不准都问“,它问了一个不存在的问题。 三笔不同单号不同部门的记录被怀疑成拆单。
- 它报告“校验通过“,表里的公式没排除重复行。 这一章最要紧的一条。它比的是自己算的两个数。
- 它总结里有错字。 最后那段把“口径说明“打成了“口水说明“。表里是对的。看表,别只看总结。
风险提醒
报销明细里有人名和金额。你把它交给 octo,octo 会把内容发给你选的模型服务商。这一章用的是 DeepSeek 的云端接口, 数据出了你的电脑。公司的财务数据、有客户信息的表,先问自己能不能发出去。不能的话,要么脱敏, 要么用跑在自己电脑上的模型,第 17 章讲怎么换。
用了多久
| 活 | 时间 |
|---|---|
| 模糊版,三张表 | 1 分 42 秒 |
| 清楚版,含三个问题 | 19 分 51 秒 |
| 修正一轮,含装工具重算 | 约 3 分钟 |
清楚版的时间大部分是我在读它的三个问题和点选项,它自己算的时间不到一分钟。
上册对照
上册练习 16 写了一个最小的 skill 加载器,练习 17 讲它怎么按需触发。这一章它读 office-xlsx 说明书那一步,就是那两个练习的成品。
最后核对:2026-09-03,octo 1.16.12。
第 5 章 一份 PPT 初稿
周会要汇报一个活动方案,方案是一份七百字的文档,六个小节。你要把它变成八页 PPT。 这一章让它做两遍:一遍快的,一遍精细的。同一份说明书,两种走法,差在你说的一句话上。
准备什么
一份方案文档,Markdown 格式,六节:目标、主推品类与机制、渠道与节奏、预算、分工、风险。 里面有具体数字、日期、人名和四条风险。你手上的方案是 Word 也行,它读得懂。
快的一版
把这个方案文档做成一份 PPT 初稿。想要的结果:在同一个文件夹生成 920大促方案_周会.pptx,6 到 8 页,给部门周会汇报用;每页一个结论当标题,正文只放支撑这个结论的数字和要点;风格简洁商务,白底深色字,不要插图。别碰的:不要改源文件;不要编造方案里没有的数字。算做完:文件能用 PowerPoint 打开,页数在 6 到 8 之间,每页标题都是一句结论。做不完怎么办:图表做不出来就用文字列表代替。要问我的:只在必须选的时候问,能按推荐值走的就按推荐值走,别一步一确认。
一分四十一秒,七页。它先读了方案,加载了做 PPT 的那份说明书,然后列出七页的结论标题,直接开始生成:
| 页 | 标题 |
|---|---|
| 1 | 9·20 秋季大促活动方案 |
| 2 | 五天冲刺 380 万 GMV,同比 +25% |
| 3 | 三大主推 + 满减折扣,锁库存控超卖 |
| 4 | 站内站外齐发,国庆长假前卡点开卖 |
| 5 | 42 万总预算,补贴按日 3.2 万控线 |
| 6 | 四人各司其职,统筹与审批集中一处 |
| 7 | 四类风险需限期关闭,采购与客服是关键 |
结构是对的。每页一个结论,正文全是方案里的数字。但看第 4 页的标题:“国庆长假前”。方案里没有这四个字, 活动是 9 月 18 日到 22 日,离国庆还有一周,它自己推了一步。我说的是不要编数字,它没编数字,编了一句话。
还有一处它主动交代了。那份说明书里有一套很细的流程,它没走,原话是:
用的是直接生成,而非完整多角色流程。考虑到这是份初稿且约束清晰无歧义,直接脚本生成更快、更可控,也避开了流程里需要逐项向您确认的阻塞步骤。
因为我说了“别一步一确认“。它把这句话当成了选走法的依据。
改稿
改三处:第 4 页标题里的“国庆长假前“方案里没有这句话,去掉,按方案原文重写标题;第 7 页太挤,拆成两页,一页讲风险、一页讲每个风险的关闭期限;所有页的标题控制在 15 个字以内。改完把新的页数和每页标题列给我。
八页。第 4 页标题变成“站内站外齐发,9/18 准时开卖“,来自方案原文。第 7 页拆成了“四项风险待限期关闭“和“三条期限须开卖前关闭“, 后一页按日期排:9 月 4 日前、9 月 12 日前、9 月 17 日。
“15 个字以内“它没有完全做到。第 2 页标题“五天冲刺 380 万 GMV,同比 +25%”,它按汉字数是 12 个,按字符数是 22 个。 它选了前一种数法,我没说清楚。你说“字“的时候,数字和标点算不算,它会自己定一个。
精细的一版
新开一场对话,这次说:
用 ppt-master 的完整流程,把这个方案做成一份 PPT。想要的结果:生成 920大促方案_精致版.pptx,6 到 8 页,周会汇报用;每页一个结论当标题;简洁商务,白底深色字,不要插图。别碰的:不要改源文件;不要编造方案里没有的数字。要问我的:流程里该确认的地方照常问我,选项给推荐值我就选推荐值。
它先读了说明书,再读说明书指向的十几份参考文件:风格目录、版式规范、字号标准。这一步就花了十来分钟。 然后它停下来,一张卡片四个问题:页数、叙事骨架、视觉风格、强调色,每个都带一个推荐值:
我全选推荐。之后它不再问了,一页一页写画面,写完导出,八页,每页还带了一段讲稿放在备注里。 五十分钟。
这一版的标题全部在 15 个字以内,全部来自方案原文,没有“国庆长假前“这种推断。 第 8 页的风险表是三列:风险、关闭期限、动作。整体是一套干净的商务版式, 比快的那一版强不少。
但也有一处排版错了。第 7 页最后一条风险,标签和正文挤到了同一行:
八页里就这一处,但你不翻到那一页看不出来。
两版对比
| 快的一版 | 精细的一版 | |
|---|---|---|
| 时间 | 1 分 41 秒 | 50 分钟 |
| 你要做的 | 看结果 | 答四个问题,然后等 |
| 页数 | 7,改稿后 8 | 8 |
| 讲稿 | 无 | 每页一段 |
| 标题 | 有一处推断 | 全部来自原文 |
| 排版 | 简单,干净 | 讲究,一处重叠 |
| 适合 | 周会、内部对齐、改稿基础 | 对外、对上、要直接用的场合 |
两版的权限框加起来弹了三十一次,绝大多数是精细版的:每写一页画面、每跑一步导出都要一次。
发生了什么
同一份说明书,走法由你一句话决定。 那份说明书里写着一条完整流程,也留了余地。你说“别一步一确认“, 它就绕开流程直接生成;你说“照常问我“,它就走完整流程。哪种走法都对,看你要什么。
精细流程慢在读参考和逐页手写。 开工前读那十几份规范就用了十来分钟,然后每一页画面都是它单独写的。 这是它能做出干净版式的原因,也是它慢的原因。这个时间值不值,看这份 PPT 给谁看。
它擅长结构,不擅长盯细节。 结论式标题、拆页、把四条风险排成三列表格,这些它做得比多数人快。 但一页里两个元素叠在一起这种事,它自己看不出来。你要一页一页翻,尤其精细版,它没有在最后再看一遍自己的画面。
“别一步一确认“和“照常问我“是两个开关。 第 2 章讲过“要问我的“这一条控制它问多少。这一章你看到它还控制它走哪条路。 一份初稿用前者,一份要直接投屏的用后者。
你不在,它就一直等。 精细版停在四个问题那里等我,我没及时回答,它等了四十五分钟一动不动。 这是对的行为,但你要知道:一个需要你确认的活,你走开它就停。第 11 章讲定时任务的时候,这个问题会变成设计上的选择。
你要重点检查什么
- 每一页的标题和数字对着方案原文过一遍。“不要编数字“挡不住“编一句话”。
- 精细版每一页翻一遍,看有没有元素重叠、文字被截。
- 讲稿是它写的,念之前自己读一遍。
- 页数、文件名、放的位置是不是你说的。
翻车点
- 标题里出现原文没有的推断。 “国庆长假前”。“别碰的“要写成“不要加方案里没有的说法”,比“不要编数字“宽。
- “15 个字“数法不一。 它按汉字数,你可能按字符数。说清楚数字和标点算不算。
- 精细版一页排版重叠。 八页里一页,位置在页尾。
- 我发错了会话。 我把改稿意见发进了正在走精细流程的那一场,它没有乱改,反问我“你说的第 4 页是基于哪一份稿“。它核对了自己的上下文,比我细心。
风险提醒
方案文档里有预算和人名,走的是云端模型,同第 4 章的提醒。另外,精细版会在源文件旁边建一个项目文件夹, 里面是它的中间产物,几十个文件。别删,改稿要用;也别当成交付物发出去。
用了多久
| 活 | 时间 |
|---|---|
| 快的一版 | 1 分 41 秒 |
| 改稿一轮 | 约 4 分钟 |
| 精细的一版 | 50 分 7 秒 |
上册对照
上册练习 16 到 18 写的 skill 加载器和按需触发,这一章两次加载同一份说明书,走了两条不同的路,是那三个练习里没有的一层: 说明书写了流程,模型还是会看你的话决定怎么用它。
最后核对:2026-09-03,octo 1.16.12。
第 6 章 两小时会议记录变纪要和待办
会散了,纪要没人写。两小时的记录一万多字,从头看一遍二十分钟,看完还要把谁该干什么挑出来。 这一章把这个活交出去。顺带弄清一件你迟早会撞上的事:一份很长的材料丢给它,它到底看见了多少。
准备什么
一份会议文字稿。我这份是 9·20 大促的项目启动会,581 行、一万两千字、七个人,从下午两点说到三点五十三。 存成 txt 是 4 万 9 千字节,这个数后面有用。里面有休息时聊团建和食堂的十分钟,有转录软件听错的词, 有一个人被叫过三种称呼,还有老板中途进来推翻了前面定好的目标。你手上真实的会议记录也长这样。
它读文字,不听声音。录音先转文字:飞书妙记、腾讯会议这类会议软件自带转录,导出来就是一份文字稿。 也可以让它自己装一个转录模型来干这一步——它有终端,装得了命令行工具就跑得起转录—— 但多数公司的会议软件已经把这一步做完,这一章从文字稿开始。
跟它怎么说
这个文件夹里有一份会议转录,transcript.txt,一场两小时的项目启动会,七个人。要处理的就是它。想要的结果:在同一个文件夹生成两个文件,会议纪要.md 和 待办清单.md;纪要按议题分节,每节最后一行写这一节的结论;待办清单是一张表,四列:谁、做什么、什么时候前、卡在谁那里。别碰的:不要改 transcript.txt;不要写转录里没有的事;这份转录是自动生成的没人校对,人名和产品名可能有错别字,你觉得不对的地方标出来,不要自己改。算做完:两个文件都生成了,待办表里每一条都能在转录里找到出处。做不完怎么办:有的待办没说期限,那一列写“未定“,不要自己编日期。要问我的:只在必须选的时候问。
六个要素都在里面(第 2 章那六条)。这一章多了一条第 2 章没有的交代:转录有错别字,标出来但不要改。 自动转录一定有听错的地方,你不说这句,它会挑一个自己觉得对的写进纪要,而你看不出哪里被改过。
它做了什么
| 时间 | 动作 |
|---|---|
| 2.5 秒 | 读 transcript.txt |
| 7 秒 | 又读了一遍,这次从第 200 行起、读 170 行 |
| 15 秒 | 列一下目录,确认自己在哪、文件在不在 |
| 69 秒 | 开始写纪要(前面 54 秒在读和想) |
| 92 秒 | 开始写待办表 |
| 105 秒 | 完。两个文件,权限框弹了两次,都是写文件 |
产出:会议纪要.md 119 行,按七个议题分节,每节最后一行是“▶ 结论“打头的整句; 待办清单.md 是一张表,44 条待办。
它自己标出来的三处存疑,一处都没改原文:
- “色酷“应是 SKU(“色酷太多的问题”、“今年只放十二个色酷”)
- “零度汽泡水“和“零度气泡水“两种写法混用
- “陈露是设计“和“销售部那个陈明“是两个人,不是同一个名字听错
第三条是我埋的坑,它跨了七十分钟的两段对话把这两个人分清了。
它一次没读完
看第一个工具卡片:429 lines。文件是 581 行。
它下一句话直接说了:“内容被截断了(208-362 行之间缺失,也就是李总进场那一段)。我读一下中间缺失的部分补齐。” 然后从第 200 行往后又读了 170 行。
为什么会截断:单条工具结果超过 4 万字节,octo 会从中间掐掉一段再交给模型,头尾都留着, 中间插一行说明掐了多少字节。我这份转录带上行号是 5 万 3 千字节,掐掉了 13574 字节, 剩下 3 万 9 千多,正好卡在 4 万以内。它读到的就是那行说明,所以知道自己缺了哪一段。
这条上限跟模型的上下文窗口没关系,你怎么交代也改不了它。一个文件超过 4 万字节,它一次读不完, 这是你今天就会撞上的边界,而不是“上下文满了“那种要攒很久才发生的事。
好消息是它会自己补读。坏消息是它不一定补得完整:这一次它补的是 200 到 369 行, 掐掉的那段结束在 362 行,刚好覆盖住;如果掐掉的是两段、或者它补读的范围算错了几行, 你不去看那两个卡片上的行数,是发现不了的。
怎么办: 长文件先自己拆。一份三小时的会议记录按议题拆成三四个文件, 或者直接跟它说“分段读,每次两百行,读完一段再读下一段“。一个汉字占三个字节,一万字上下就顶到 4 万字节这条线了——我这份一万两千字,存成文件 4 万 9 千字节,已经过线。
粘贴还是给它文件
我把同一份转录用两种方式给它,问同样三个问题:几个议题、参会几人、最后定的上线日是哪天。
| 整段粘进对话框 | 放成文件让它读 | |
|---|---|---|
| 用时 | 9.6 秒 | 17.2 秒 |
| 工具调用 | 0 次 | 2 次(第二次是补读) |
| 跟模型来回 | 1 轮 | 3 轮 |
| 上下文占用峰值 | 3% | 4% |
| 议题数 | 6,对 | 6,对 |
| 参会人数 | 7,对 | 8,错(把中途路过的老板算进了参会;转录头标写的是七人) |
| 上线日 | 9 月 11 号,对 | 9 月 11 号,对 |
| 中间被掐 | 没有 | 掐了 13574 字节 |
粘贴更快一点,而且不会被那条 4 万字节的上限掐——那条上限只管工具结果,不管你自己打进去的字。 人数答错这次出现在读文件那一边,但只跑了一次,算不上哪种方式更准的证据; 两次答案不一样本身才是要记住的:同一份材料同一个问题,它两次给的数不一定相同, 参会人数这种一眼能核的事,你自己数一遍比问第三遍快。
那什么时候该用文件?
- 你要它改、要它引用、要它之后再回来看的材料,放文件。文件在磁盘上,下次新开一场对话,它还能读; 粘贴进去的那一份跟着这场对话,换个会话就没了。
- 一次要给好几份材料的,放文件。一份粘完再粘一份,你自己会粘乱。
- 超过 4 万字节又不想被掐中间的,粘贴反而完整——代价是它永久占在对话里, 往后每一轮都跟着一起发。
改两处
第一版有两个问题:待办表的说明里写着每条都标了出处,表里一条出处都没有;纪要 119 行, 发群里没人看。接着在同一场对话里说:
两处要改。第一处:待办清单开头的说明里写了“括号内为转录时间戳出处,方便核对“,但表里一条出处都没有,把出处加上。第二处:纪要太长,我要一份能直接发群里的,另存 纪要_精简.md,一屏能看完,只保留每节的结论行和那 6 条待确认。改完告诉我两个文件各多少行。
35 秒,权限框三次。待办表多了第五列“出处“,每条一到三个时间戳(“00:06:29 / 01:08:55 / 01:34:50” 这种,一件事在会上被提过几次就标几个)。精简版 22 行:七行结论加六条待确认,一屏看完。
我说的是四列,它加成了五列。出处放进四列里没地方,加一列比挤在“做什么“里面清楚, 这个自己拿的主意是对的。
上下文那一栏
输入框右下角有一栏“上下文 5%“。这一章从头到尾,它在 2% 到 5% 之间。
那 5% 是什么:这场对话累计发给模型的内容,占模型一次能接住的最大长度的比例。 我用的 deepseek-flash,octo 按一百万 token 算它的窗口。 写这一章的时候,光是开场的系统说明和工具清单就占掉两个点——你还没说话, 表上已经是 2%。
上下文快满的时候 octo 会自己折叠旧对话,默认在 75% 那条线上动手,
先把旧的、超过 4KB 的工具结果换成一行占位(要用再重新读一遍),还不够才叫模型把最老的几轮总结成一段摘要,
最近的内容一律不动。你也可以自己敲 /compact 让它立刻折叠一次。
我在这场对话里敲了 /compact,得到的回复是一行提示:
Nothing to compact yet.
5% 对整个窗口来说什么都不算,而且它保留的“最近“那一段本来就装得下整场对话, 没有更老的内容可折叠。这本书里的活,大多数都到不了那条线。真会碰上的是三种情况: 你用的模型窗口只有几万(换小模型时留意这条);你在一场对话里连着干了几十个活没有新开; 或者你让它读了几十个大文件。前两种的办法都一样简单:一个活一场对话,干完新开一场。
关掉再回来
会话是自动存的,每一轮结束就落盘。我在这场对话里前后发了五次消息,中间断开过连接, 侧栏里点回去,历史还在,它也还记得两个文件在哪、里面写了什么—— 我最后一轮说“改两处“,没有重复交代文件名,它直接改对了。
侧栏的“项目“是按文件夹分的。这一章的三场对话都在“会议纪要“这个项目下面, 工具都在那个文件夹里跑。第二天要接着改纪要,从侧栏点回同一场对话就行,不用重新说一遍背景。
你要重点检查什么
- 表里的出处抽查几条。 补出处那一轮它给的时间戳我抽了七条,七条都对得上。这是它做得最扎实的一块, 但抽查的成本很低,别省。
- 有没有把最终数字回填到前面。 见下面的翻车点,这是这一章最要命的一个坑。
- 人名。 一个人被叫小王、老王、王经理,表里的“谁“就可能少一个人或多一个人。
- 它说自己做了多少条,跟表里数出来的对不对。 它说 48 条,表里 44 行。有的行写了两三件事, 所以不算数错,但你按“48 条“去派活会对不上。
- 纪要的长度。 我这份完整版 119 行,转录 581 行。压到五分之一还是不能发群里, 要发的话得再要一版精简的。
翻车点
精简版把过时的数字放在了第一条。 我让它另出一版一屏能看完的, 它把七个议题的结论行拎出来,第一条写的是“总目标 380 万,暂拆为气泡水 170 万+坚果 110 万+凝珠 60 万+自然销售 40 万“。 这是老板进来之前的第一版拆法。真正的最终数字(气泡水 171.6 万、礼盒零售 100 万、团购 8.4 万) 在第六条里。完整版那一节的结论后面还跟了一句“细节见议题六口径段落“, 精简的时候这句指引被删掉了,只剩下一个过时的数字站在最前面。发出去,第一眼看到的就是错的。
会议中途改掉的数字,是纪要最容易出错的地方,因为按议题分节的写法天然把“当时定的“留在前面。 你要在原话里加一句:后面被改掉的数字,前面不要留。
它承诺了没做。 第一版待办表的说明里写着“括号内为转录时间戳出处,方便核对“, 表里一条出处都没有。我指出来,它才补了一列。它写说明的时候是打算做的, 写表的时候忘了,最后也没回头对一遍自己的说明。
“未定“没有完全按我说的写。 我说没期限的写“未定”,它写了“明天““今天下班前”“随投放方案” 这类原话。它在回复里主动交代了这一点,说按原话保留最稳妥。这次它是对的—— 转录里说的确实是“明天“,但如果你要把这张表导进项目管理工具,这一列还得再处理一遍。
风险提醒
会议记录里有人名、预算、供应商报价、去年的退款率。这些内容会整份发给模型服务商, 同第 4 章的提醒。公司对会议内容有保密要求的,先问清楚能不能走外部模型; 这一章的准确度是云端模型给的,换成本机跑的模型要自己重新验一遍。
另一件事:它读完转录之后,那份内容就在这场对话里了。你把这场对话分享给同事看, 转录也一起过去了。
用了多久
| 活 | 时间 |
|---|---|
| 出纪要和待办 | 1 分 45 秒 |
| 改两处(补出处 + 精简版) | 35 秒 |
| 整段粘贴(对照实验) | 9.6 秒 |
| 读文件(对照实验) | 17.2 秒 |
改两处那一轮只要 35 秒,因为整场对话前面的内容一个字没变——在同一场对话里接着改,比新开一场重新交代快得多。 人自己整理这份纪要要一到两个小时。
上册对照
上册练习 11 到 13 写的是会话怎么存下来、上下文预算怎么算、压缩怎么让模型总结它自己。 这一章拿真实材料跑了一遍:会话那一层跟练习 11 写的一样,每轮落盘、点回去接着聊; 上下文和压缩离得还很远,先撞上的是那三个练习里都没有的一条线,单条工具结果 4 万字节。
最后核对:2026-09-10,octo 1.16.17。
第 7 章 让它记住你的口味
上一章我纠正了它三次:被改过的数字别留在前面、待办表要有出处、纪要要有一版一屏能看完的。 三次都改对了,但那三句话只活在那一场对话里。第二天新开一场,它照旧犯一遍。
这一章把这三句话变成它自己会照做的规矩。
准备什么
- 上一章那个项目和文件夹(我这里叫“会议纪要“)。
- 一份新的会议记录。我用的是同一个项目 9 月 8 号的进度复盘会,114 行、两千七百字—— 就是上一章那场会里定的“下次会议 9 月 8 号下午三点“。这一份里到处是被改掉的数字: 礼盒从 8000 套变成 7500 套,团购从 300 套变成 900 套,上线日从 11 号推到 12 号, 外包客服从 4 个人变成 3 个人。正好检验第一条规矩。
跟它怎么说
记三条规矩,以后在这个项目里出会议纪要都按这三条来。一,会上被改过的数字,只写最后定的那一个,前面被推翻的值写在同一句的括号里注明“原为 X,某时改为 Y“,不要单独留在前面的小节里。二,待办表必须有“出处“一列,每条标上转录里的时间戳。三,出纪要的时候顺手出一份一屏能看完的精简版,文件名在原名后面加“_精简“。记完告诉我你记在哪个文件里、记了什么,别的先不用做。
十一秒。它先看了一眼记忆目录(这一步弹了一次权限框),发现是空的,然后建了一个文件写进去。
写记忆文件没有弹权限框。 前几章你已经习惯了它写文件之前要问你,记忆目录是个例外: octo 在权限规则里给整棵记忆目录开了绿灯,它整理自己的笔记不用一次次打扰你。 这棵目录以外的地方照旧要问。
它记在哪
它自己报的路径:
~/.octo/memories/project-p5c0ae40b/MEMORY.md
在你自己的电脑上,不上云。文件长这样:
# 项目记忆索引
## 必须遵守(会议纪要)
这个项目里出会议纪要,必须遵守以下三条:
1. **只保留最终定的数字**:会上被改过的数字,只写最后确定的那一个。前面被推翻的值,
写在同一句的括号里注明「原为 X,某时改为 Y」,不要单独留在前面的小节里。
2. **待办表必须有「出处」列**:待办表里每条待办都要标上转录里的时间戳,作为出处。
3. **顺手出一份一屏能看完的精简版**:出纪要时,同时生成一份一屏能看完的精简版,
文件名在原文件名后面加 `_精简`。
一共 630 字节。注意那个小标题:“## 必须遵守”。这四个字是有讲究的:
- 写在“必须遵守“下面的规则,每一轮都会重新提醒它一次。 适合绝对不能漏的事。
- 写在“触发提醒“下面的规则要配一组关键词,只在你说的话第一次碰到那个词时提醒一次。 适合“只有干某类活的时候才要守“的规矩。
- 其余的内容是一份索引,每场新对话开头注入一次,最多前 200 行或 25KB。
这三条规矩加起来还不到 1KB,注入的开销可以忽略。文件涨到几百行就要当心了, 超过注入预算的部分不会被加载,octo 会追加一条截断警告告诉你。
在文件夹里敲一条命令能看到记忆的家在哪:
octo memory list
Memory directory: …/.octo/memories/project-p5c0ae40b
MEMORY.md 630B
Inherited memories: …/.octo/memories/fakehome-ba6bddc3
(empty — nothing remembered yet)
两行目录,两个意思。上面那个是这个项目自己的记忆;下面那个“继承“来的是主目录级别的, 每个项目都会读到它——适合放跨项目的偏好(“给我的文件名一律带日期”), 具体到某个项目的事实放项目自己的那份。
记忆按项目分。侧栏“项目“区里的每一项是一个文件夹,同一个项目下的每场对话读写同一份笔记。 不归属任何项目的散落任务读的是那份继承来的共享记忆——这也是为什么, 你要它长期记住某个文件夹的规矩,就该把那个文件夹立成项目;随手开的一场对话,读的是那份共享记忆。
换一场对话,它自己照做了
新开一场对话,把 9 月 8 号那份复盘会的转录给它,这次只说一句话:
这个文件夹里有一份 9 月 8 号的复盘会转录,transcript-0908.txt。按上次的样子出纪要和待办清单, 文件名用 复盘纪要.md 和 复盘待办.md。
一分钟,三个文件。三条规矩它全照做了,而我一个字没重复。它自己的说法是 “按记忆里的三条规则和这个格式产出”。
第一条规矩的效果,看这几行:
- 礼盒排产数量变化:工厂书面排产确认 9/4 已拿到,数量由 8000 套改为 7500 套, 原因是一批坚果原料检测报告晚三天(
[00:02:20]、[00:02:38])- 团购留货量变化:由 300 套 + 一个未定,改为 900 套(第一个客户 300 套确认、第二个客户 600 套)(
[00:03:01])- 物流定金:谈定 5000 元(原 8000,少 3000),合同已签、运力锁到 9/25(
[00:15:02])
最终值加粗,旧值在同一句里带出来。上一章那种“被推翻的数字单独占一节“的写法没有再出现。
第二条:待办表多了“出处“一列,每条一到两个时间戳。它还顺手把规矩抄进了文件开头的说明里 (“被改动的数字只保留最终值,被推翻的旧值在括号内注明”),下一个接手这张表的人也知道规矩是什么。
第三条:我根本没提精简版,它自己出了一份。
不过这一次有个变量:我说了“按上次的样子“,它就把上一章那三个文件读了一遍当模板。 所以这一轮的效果里,记忆和旧产物各占多少,说不清。下一节把这个变量去掉。
亲手改一行
记忆是一个普通的 markdown 文件,你可以直接改。我把第三条里的文件名后缀从 _精简 改成 _一页,
用什么编辑器都行——它就是一个文本文件。
然后把文件夹里上一章和上一节的产物全部挪进一个 old/ 子目录,让它没有旧文件可抄。
再新开一场对话,这次连“按上次的样子“都不说:
这个文件夹里有 transcript-0908.txt,出一份纪要和一张待办清单,文件名用 复盘纪要2.md 和 复盘待办2.md。
结果:
复盘纪要2.md
复盘待办2.md
复盘纪要2_一页.md ← 后缀跟着我改的那一行变了
三条规矩照旧全中,而精简版的文件名是 _一页,跟任何一个旧文件用过的 _精简 都不一样。
这一次没有旧产物可参照,规矩只能来自记忆——你改记忆文件里的一行字,下一场对话就照新的做。
它自己把这一步说出来了:
这一轮它读的是上一章那份 09-02 的转录,所以正好能跟上一章的产物直接比。 上一章的精简版第一条结论是这么写的:
议题一 目标拆解:总目标 380 万,暂拆为气泡水 170 万+坚果 110 万+凝珠 60 万+自然销售 40 万
气泡水 170 万、坚果 110 万,都是老板中途进来改掉之前的数字。这一轮同一份材料、同一个模型, 一页版长这样:
| 品类 | 目标 | 变化 |
|---|---|---|
| 零度气泡水 | 171.6 万 | 160→170(补坚果缺口)→171.6(补团购缺口 1.6) |
| 坚果礼盒(零售) | 100 万 | 120→110(库存不够)→100(团购分出 600 套) |
最终值加粗,三次变更压在一列里。同一个活,差别只在记忆里那一行字。
记错了怎么删
它记住的东西也会过时。上面那条“顺手出一页版“我用了两轮就嫌多余:
第三条规矩不要了,以后出纪要不用自动出一页版,我要的时候会说。把这条从记忆里去掉, 改完把记忆文件现在的内容念给我听。
十一秒,零次权限框。它把那一条删掉,把“以下三条“改成“以下两条“,编号重排, 然后把改完的文件念了一遍给我看。
要它念一遍这一步别省。记忆是它下次干活的依据,你以为删掉了、其实它只是划了个横线, 下一场对话还会照着做。
删不掉的时候还有一条路:那就是个文件,你自己打开删。octo memory list 打印的就是它的路径。
记忆和文件夹里的规则,两码事
除了记忆,还有一个地方能写规矩:文件夹里的 .octorules。在文件夹里敲:
octo init
它会先把这个文件夹看一遍,再起草一份约定,不会丢给你一个空文件。我这个文件夹里只有 一份转录和几份 markdown,它的第一句结论是:
这个目录不是代码仓库,而是「9·20 秋季大促」的会议纪要工作区——没有 go.mod / package.json / Makefile / CI /
.git,也没有 build/test/lint 流程。因此.octorules写的不是命令, 而是这个文档工作区的结构和业务约定。
生成的 .octorules 24 行,四节:这个目录是干什么的、里面几个文件互相什么关系、
哪些业务数字是已经定死的口径(380 万总目标、各品类的拆解、谁负责什么)、
写作上必须遵守什么(六条待确认不许当已定、数字只留终值、标价和实付两个口径不许混用、
查证要回原始转录不要在几份纪要之间互相引用)。
那它跟记忆有什么分别?
| 记忆 | .octorules | |
|---|---|---|
| 在哪 | ~/.octo/memories/<项目>/,你的电脑上 | 你的文件夹里 |
| 谁写 | 它自己写、自己维护 | 你写,或者 octo init 起草 |
| 跟着谁走 | 跟着这台电脑上的这个项目 | 跟着文件夹走,打包发给同事也带过去 |
| 适合放什么 | 你的口味、你纠正过的地方、临时的事实 | 这个文件夹的固定约定,换谁来都成立 |
一个实用的分法:只有你自己在意的,放记忆;换个人接手也得守的,放 .octorules。
我那三条纪要规矩其实两边都该有——它在写 .octorules 的时候自己就把“数字只留终值“抄进去了。
你要重点检查什么
- 记完让它念一遍。 它说“记好了“和文件里真写了什么是两件事,念一遍只多花几秒。
- 过一阵翻一次记忆文件。 里面会攒下临时的事实(“礼盒 7500 套”),过了这个项目就是错的。
- 改完记忆,下一场对话验一次。 改的是文件,生效是在下一场对话,当前这场不一定跟着变。
.octorules里的文件清单会过时。 它按当时的目录写死了几个文件名, 你后面新增文件要自己去改——它自己也提醒了这一点。
翻车点
记忆里的事实会腐烂。 规矩(“数字只留终值”)能长期用,事实(“礼盒 7500 套”) 下个月就是错的。它自己分不清哪条是哪种,都当规矩记着。
在 CLI 里当场记的规矩,当场不生效。 命令行会话的开场说明只在启动时组装一次, 这一场对话里它写进记忆的东西,要等你下次再跑才会读到。桌面应用和 Web 控制台是每一轮重新组装的, 所以在浏览器里改完,下一轮就生效。
octo init 那一轮它的终端工具被拦了。 它在最后交代:“本次会话中 terminal 工具的调用被策略拒绝
(strict 模式不允许提权),我只用了只读的文件工具和 glob 完成调查,未影响结果。”
命令行的 octo init 走的权限档比对话严,它自己绕开了。结果没受影响,
但你在别处看到“被策略拒绝“这句话,知道是权限挡的,没出错。
风险提醒
记忆存在本机、不上云,但它的内容每次会话都会作为开场说明的一部分发给模型服务商。 所以别往记忆里写密码、密钥、身份证号。你要它记住“我的报销单发给财务王慧敏“, 这种程度可以;“我的网银密码是”,不行。
另外,.octorules 跟着文件夹走。这个文件夹要发给同事、要上传到共享盘,
先看一眼 .octorules 里有没有不该外传的内部数字——octo init 那一版把 380 万的目标、
各品类的拆解、每个人的分工全写进去了。
用了多久
| 活 | 时间 |
|---|---|
| 记三条规矩 | 11 秒 |
| 出复盘会的纪要和待办(三条自动照做) | 1 分 |
| 改一行后重跑 | 1 分 48 秒 |
| 删掉一条规矩 | 11 秒 |
记和删都是十几秒的事。省下来的是每一次重新交代——你不用在每一场新对话开头 再把那三句话打一遍,也不用在拿到成品之后再返工一轮。
上册对照
上册练习 14 做过一个实验:把规矩写进规则文件,模型也不一定照做,因为它从材料里学到的习惯 比你的一句陈述更硬。这一章是同一件事的另一面:写在“必须遵守“下面的规则, 每一轮都会重新贴到它眼前一次,不只在开场说一遍。位置比措辞更能决定它记不记得住。
最后核对:2026-09-10,octo 1.16.17。
第 8 章 写你的第一份说明书
翻回前面几章看一眼我跟它说的话:整理文件夹那段一百多字,出 Excel 那段两百多字, 出会议纪要那段也差不多。每一次都是先把活讲一遍、再把规矩讲一遍。 上一章的记忆解决了“规矩“那一半,它记住了你的口味;但“活怎么干“那一半, 每次还得从头说。
周报是最典型的:每周五一次,材料在哪、模板是什么、五条规则、存哪个文件名, 全一样。这一章把这一套写成一份它自己会翻的说明书,以后周五只说一句话。
准备什么
- 一个项目文件夹,我这里叫
weekly,里面有:周报模板.md:张涛定的格式,五节结构加五条规则(一页以内、群里的口头估算不算数、 牢骚不写、同一件事说了两个数以最后一条为准、每个数字要能回到出处)。第1周_0831-0904/:第 6 章那场启动会的纪要和待办清单,加上我这一周的工作记录、 项目群的聊天导出。第2周_0907-0911/:第 7 章那场复盘会的纪要和待办,加上第二周的记录和群聊。
- 群聊里我故意留了几处:周凯两次口头估预售(“大概能到 60 万”、“能到 70 万”), 赵敏两次抱怨外包,王磊先说发票“差不多都寄了“、后来又说只到了两张。这些正是模板五条规则要拦的。
先手把手做一次
第一周我按前几章的老办法,把活从头讲一遍:
项目里挂的 weekly 文件夹里有一份 周报模板.md,是张涛定的格式。给第 1 周(8/31–9/4)出一份项目周报,素材在 weekly/第1周_0831-0904 里:会议纪要.md 和 待办清单.md 是 9/2 启动会的,工作记录.md 是我这周的流水,群聊导出.txt 是项目群的消息。按模板的五节写,模板里“规则“那一节的五条都要守:群里的口头估算不算数字,牢骚不写,同一件事说了两个数以最后一条为准,每个数字后面括号标出处,一页以内。写完存到 weekly/周报/周报_第1周_0831-0904.md,然后把全文贴给我看。
272 个字。一分钟,三次权限框,周报出来了,34 行。五条规则它都点了名: 周凯那句 60 万没写,赵敏的抱怨没写,发票按“到了两张、第三张下周“写,礼盒库存只写 7500 套、括号注“原为 8000 套“。
但有一处要你自己看出来。“下周计划“第一行:
| 张涛 | GMV 口径与 380 万定标口径向老板确认 | 9/8 |
这一条 9 月 3 号就办完了,群里张涛早上转了老板的答复。它把待办清单(9 月 2 号的)里的这一行照抄进了下周计划, 没有拿 9 月 3 号的群消息去销掉。待办清单比群聊老一天,它没有按时间先后核对。 这一条我记下来,下面会用到。
说一句“把这个流程做成技能“
周报出来之后,我在同一场对话里接着说:
可以。把刚才出周报这个流程做成一个技能。以后每周五我只想说一句“出这周的周报“,它就按今天这套来:找模板、找那一周的素材文件夹、守模板里的五条规则、存文件、贴全文。
它先干了两步:看了一眼 ~/.octo/skills/ 下有没有已经写好的技能(空的),
再翻出一份内置技能的说明书当范例读了一遍。然后弹了一张问题卡:
两个问题,每个都给了选项和推荐:
- 技能范围:绑定当前项目(把文件夹路径、模板路径写死进去),还是做成通用的(每次告诉它路径)?
- 周次推断:说“这周“的时候,是按文件夹名里的日期范围自动匹配今天,还是从 8/31 起算周数,还是每次问你?
我两个都选了推荐项:绑定当前项目,按文件夹名匹配。它写了一个文件,又顺手在项目记忆里记了一段 “周报流程见 weekly-report 技能”,然后报告:
位置:
~/.octo/skills/weekly-report/SKILL.md(用户级,你在任何项目都能用) 触发语:「出这周的周报」,以及「出周报」「写周报」「更新周报」「出第N周周报」都会命中
写技能那一轮它实际干活的时间大约一分钟,四次权限框,其中两次是读目录,一次写文件,一次核对写好的目录。
说明书长什么样
那个文件就是一份 markdown,59 行、4.4KB。开头几行是这样的:
---
name: weekly-report
description: 出 9·20 大促项目的项目周报。找到周报模板和第 N 周的素材文件夹(会议纪要、待办清单、工作记录、群聊导出),按张涛定的五节模板写,严守五条规则,存到 weekly/周报/ 并贴出全文。Use when the user says "出这周的周报" / "出周报" / "写周报" / "更新周报" / "出第N周周报".
---
# 出 9·20 大促项目周报
这是 9·20 大促项目专属的周报生成流程。用户在每周五说一句「出这周的周报」,
就按下面这套完整流程走一遍:找模板 → 找素材 → 守规则写 → 存文件 → 贴全文。
## 项目与路径(写死,勿改)
- 项目根:`/…/weekly`
- 模板:`$WEEKLY/周报模板.md`(张涛 2026-08-28 定)。
- 素材文件夹:`$WEEKLY/第N周_MMDD-MMDD/`,内含四份文件:
…
## 第 1 步:确定「这一周」和素材文件夹
1. 列出 `$WEEKLY/` 下所有目录,找出形如 `第N周_MMDD-MMDD` 的素材文件夹。
2. 取**日期范围覆盖「今天」的那个**文件夹作为本周。用 `date` 拿今天的本地日期……
往下是第 2 步五节结构、第 3 步五条规则、第 4 步写文件加贴全文,最后一节 “数字口径提醒“把 GMV 含退去退、礼盒 8000 变 7500 这些本项目容易错的地方也写了进去。 这些都是它从我们刚才那一场对话里摘出来的。
一份说明书就三部分:
| 是什么 | 谁看 | 什么时候看 | |
|---|---|---|---|
name | 显示用的名字 | 你 | 面板里、斜杠菜单里 |
description | 一句话说这份说明书管什么活、什么话会触发 | 它 | 每一场对话开头都在眼前 |
正文(--- 下面的全部) | 活怎么干,一步一步 | 它 | 只在活对上号的时候才读 |
description 是开关。每场对话开始,octo 把所有技能的名字和这一句话列成一张清单贴在它的开场说明里,
正文不贴。它看到你的话跟哪一句对上了,才去把那份正文读进来。所以这一句要写得像触发词,
它自己写的那一句末尾专门列了五种说法,都是为了让“周报“两个字对上。
正文是按需读的,这意味着两点:一,正文长一点不要紧,没触发的时候不占地方;
二,正文写得再好,description 没对上就永远读不到。
还有一个容易糊的地方:文件夹的名字才是这份技能真正的名字,frontmatter 里那个 name 只是显示。
~/.octo/skills/weekly-report/ 这个目录名,就是斜杠菜单里 /weekly-report 的来历。
下周五,一句话
新开一场对话,四个字:
出这周的周报
第一个动作,发出去不到三秒:加载技能。然后按说明书走:查今天是几号(9 月 11 号,周五),
列出 weekly 下的文件夹,落在 第2周_0907-0911 里;读模板,读四份素材,写,存,贴全文。
55 秒,两次权限框(一次是查日期加列目录,一次是写文件)。272 个字变成了 4 个字。
结果里五条规则照样都在:周凯 70 万那句没进(它还补了一句“张涛回’等 12 号的数’,等于没认“), 赵敏的牢骚没进,上线日只写 9/12 早上、括号注原为 9/11,客服外包只写 3 人、注原报 4 人。
它在末尾自己指出了两点,值得看:
素材文件名与技能文档不一致:技能里写的是「会议纪要.md / 待办清单.md」,本周实际是「复盘纪要.md / 复盘待办.md」,内容对应上了,我没受影响,但建议后续以实际为准或更新技能。
下周计划里「周凯补第三张发票」出自群 9/11 王磊说「第三张发票下周再催」,严格讲是王磊在催、不是周凯,我把它归到了周凯身上。这点你可以确认下归属。
第一条说明书写死了第一周的文件名,第二周文件名换了,它自己对上了,但也提醒你去改说明书。 第二条它把一项待办归错了人,还主动交代了。
技能面板
侧栏“更多“里有一个“技能“面板:
“显示系统技能“那个开关打开,能看到 octo 自带的 21 份说明书:出 Excel 的 office-xlsx、出 PPT 的 ppt-master、
帮你写技能的 skill-creator,前几章你已经在活里碰到过几个。它们住在另一个目录 ~/.octo/skills-default/,
升级的时候会被刷新,不碰你自己写的。你在 ~/.octo/skills/ 下放一份同名的,就会盖过内置的那份。
每一行右边四个按钮:在新对话里用、用 agent 编辑(开一场对话让 skill-creator 帮你改)、导出成 zip、删除。
左上角“导入“能贴一个 GitHub 链接、一个 作者/仓库 短名、一个本机路径,或者选一个 zip。
所以把说明书发给同事的路是:你这边导出 zip,他那边导入。
对话输入框里敲一个 /,也会弹出这份清单:
选中它只是把 /weekly-report 填进输入框,后面照常打字。走的还是同一条路:
这一行文字发给它,它去加载说明书。所以“出这周的周报“和 /weekly-report 出这周的周报 效果一样,
前者靠 description 对上,后者你直接点了名。
亲手改一行
前面记下的那一条,“已经办完的事又进了下周计划”,根子是它不知道上周报过什么。
那就在说明书里加一步。我打开 ~/.octo/skills/weekly-report/SKILL.md,在第 1 步末尾加了一行:
5. 再读一遍上一周的周报(`$WEEKLY/周报/` 里周次比本周小 1 的那份)。上周已经写进「本周完成」的事,这周不许再写进「本周完成」,最多在「进行中 / 有变化」里提一句变化。
存盘。把刚出的第 2 周周报挪进 old/,新开一场对话,还是那四个字。
它读的是旧版。 53 秒出来的周报没有读上周那份,事件记录里它加载到的说明书正文也没有我加的那一行。 原因:octo 启动的时候把所有说明书读进内存,之后不会自己盯着磁盘。你在文件里改的字,它要等一个“重新读盘“的时机。
这个时机之一就是打开技能面板。我点开“技能“面板看了一眼(什么都没点),关掉,再新开一场对话:
这一次它加载到的正文有了那一行,动作里多了一步读 周报_第1周_0831-0904.md,64 秒。
所以改完说明书,去技能面板看一眼再开新对话。面板每次打开都会重新读一遍磁盘,
导入、开关、删除也会。重启 octo 也行,但没必要。
改生效了,结果呢?上周“本周完成“第二条是 GMV 口径定了去退,这一周的“本周完成“第二条还是它:
- GMV 口径定稿:对外 380 万(含退)、内部按 349.6 万(去退,8% 退款率)考核(群 9/8)。
说明书写了“不许再写“,它也读了上周的周报,还是写了。它的理由大概是复盘会上正式关闭了这一条, 算这周的事。这跟第 5 章那次一样:说明书定的是流程,每一步怎么判断还是它临场拿主意。 说明书能把“读上周周报“这一步钉死,钉不死“读了之后怎么想“。 这一条留给“你要重点检查什么“。
记忆、文件夹规则、说明书
到这一章,能让它“记住“的地方有三个了:
| 记忆(第 7 章) | .octorules(第 7 章) | 说明书 | |
|---|---|---|---|
| 放什么 | 你的口味、你纠正过的地方 | 这个文件夹的固定约定 | 一个活从头到尾怎么干 |
| 跟着谁走 | 这台电脑上的这个项目 | 文件夹 | 这台电脑,所有项目都能用 |
| 什么时候被读 | 每场对话开头(“必须遵守“那几条每轮都提) | 在那个文件夹里干活时 | 只在活对上号的时候 |
| 谁写 | 它自己 | 你,或 octo init 起草 | 它起草,你改 |
| 怎么触发 | 不用触发 | 不用触发 | 一句话,或 /名字 |
一个分法:规矩放记忆,约定放 .octorules,流程放说明书。 三条纪要规矩是“口味“,进记忆;
“数字只留终值“是这个文件夹里谁来都得守的约定,进 .octorules;“周报怎么出“是一套步骤,进说明书。
说明书是全局的,任何项目里说“出周报“都会对上。它在问我“绑定项目还是通用“的时候就是在问这个: 写死路径的说明书换个项目就不能用了,要么换个项目再建一份,要么当时选“通用“、每次多说一句路径。
你要重点检查什么
- 第一次出来的周报,逐条对时间。 待办清单上的每一条,到周报那天有没有已经办完, 它不会主动拿更新的消息去销旧的清单。第一周那条“张涛向老板确认口径“就是这么漏的。
- 说明书写完,自己读一遍。 它把第一周的文件名写死了,第二周就对不上。写死的还有文件夹路径, 文件夹搬家说明书就失效。它自己在文件里标了“写死,勿改“,那一节就是你要盯的。
- 改完说明书,开面板刷一下,再验一次。 改的是文件,生效要等重新读盘。验的时候看它第一个动作加载的是哪份, 看结果里有没有你加的那一步的痕迹。
- 说明书里的规则,它是照做还是照读。 “读上周周报“它做了,“上周写过的不再写“它没守。 每周花十秒对一下上周的“本周完成”。
- 归属。 群里谁说的、谁负责,它会归错人,这次是把王磊在催的发票记到了周凯头上。它自己交代了, 下次不一定。
翻车点
改了文件,它读的还是旧的。 上面演示过了。说明书在 octo 启动时读进内存,磁盘上改了不会自动同步, 要打开一次技能面板,或者导入、开关、删除任何一份技能,或者重启。新开一场对话不算。
一份说明书,两处记录。 它写技能的时候顺手在项目记忆里也记了一段“周报流程见 weekly-report 技能, 模板在 weekly 下,五条规则……“。它自己提醒了“若项目目录变动,技能里和项目记忆里各有一处路径要同步改”。 你要是只改了说明书,记忆里那段旧的还在每场对话开头贴给它看。
说明书写了,它读了,还是没守。 “上周写过的事不再写进本周完成“这一条就是例子。 说明书能保证它走完每一步,不能保证每一步的判断跟你一样。这一点越早接受越好, 它决定了你该把检查放在哪:放在它的判断上,别放在它有没有读说明书上。
风险提醒
说明书是全文发给模型服务商的。它自己写的这份里有项目的目标数字、口径换算、人名、 文件夹的绝对路径。这些进说明书没问题,但别往里写密码、密钥、身份证号, 跟第 7 章说记忆时一样。
导出给同事之前打开看一遍。这份 SKILL.md 里“数字口径提醒“那一节写了 380 万、349.6 万、
礼盒 7500 套,你导出的 zip 就是这些字。
description 那一句每场对话都在它眼前,不管你在干什么活。所以写在那里的字,
是你每一场对话都在花钱发出去的字。它写的这一句一百来字,可以忽略;
要是你攒了三十份说明书,每份两百字,那就是每场对话开头六千字。
用了多久
| 活 | 时间 | 权限框 |
|---|---|---|
| 第 1 周,手把手(272 字原话) | 58 秒 | 3 |
| 把流程做成技能 | 约 1 分(另加我看问题卡的时间) | 4 |
| 第 2 周,一句话 | 55 秒 | 2 |
| 改一行后重跑(读的旧版) | 53 秒 | 2 |
| 面板刷新后重跑(读的新版) | 64 秒 | 4 |
一句话触发的那一轮跟手把手那一轮用时差不多,省的是你的 272 个字和每周想一遍怎么说的功夫。
上册对照
上册练习 16 到 18 写的是 skill 加载器:清单进系统提示、正文按需加载、按名字触发。 这一章你亲手写了一份进那个加载器的文件,也撞上了那三个练习没写的一层:加载器什么时候重读磁盘。
最后核对:2026-09-11,octo 1.16.17。
第 9 章 让它上网查
前八章的材料全在你的硬盘上:文件夹、表格、转录、模板。这一章的材料在网上。
上网查的活分两种。一种有明确答案,你只是不想自己翻:今年国庆几号放假、快递节前涨不涨价。 另一种没有现成答案,要它把几处说法凑起来判断:详情页写“拆封不退“合不合规。 两种都能干,两种的检查方法不一样。这一章各做一个。
准备什么
什么都不用装。octo 自带两个工具,界面上叫“联网搜索“和“抓取网页“:前者拿一组搜索结果(标题、链接、摘要), 后者打开一个网址、把正文转成干净的文字读进来。默认的搜索走 DuckDuckGo 的网页版,不要任何密钥; 连不上的时候自动退到必应网页版。你有 Brave、Tavily 或 Serper 的密钥,填进环境变量它会优先用, 结果质量更稳,这一章没用。
还有一份内置说明书叫 deep-research,管第二种活。你说“深度调研“、“多来源核实“这类话它就会加载。
快查:假期和快递
活动 9 月 18 号到 22 号,中秋 25 号,国庆紧跟着。张涛要我查两条,我原话是:
活动 9/18 到 9/22,中秋是 9/25,国庆紧跟着。帮我查两件事:一,今年(2026 年)中秋和国庆的官方放假安排,几号到几号、哪天调休上班;二,主要快递公司节前有没有发涨价或者停发的通知。每条结论后面给我出处链接,我要能点开看到原文,不要转述的。
最后那句“不要转述的“是关键,下面会看到为什么。
54 秒,9 次搜索,4 次打开网页,4 次权限框。搜索不问你,打开网页才问。 4 次权限框对应的就是那 4 个网址: 国办通知的原文、顺丰的一条公告、圆通的公告列表、顺丰的公告列表。
放假安排那一半,它搜到的第一条结果是一篇头条文章,标题写着“官方实锤“。它没引那篇, 直接打开了中国政府网上国办发明电〔2025〕7 号的原文,抄出来:
| 中秋节 | 9 月 25 日(周五)— 9 月 27 日(周日) | 3 天 | 无调休 | | 国庆节 | 10 月 1 日(周四)— 10 月 7 日(周三) | 7 天 | 9 月 20 日(周日)上班、10 月 10 日(周六)上班 |
然后它自己加了一句我没问的:
⚠️ 特别提醒:你活动是 9/18–9/22,而 9/20(周日)是国庆节的调休上班日,正好卡在活动周期内,安排排班/值班时要留意这一点。
这一条我们开了两次会都没人提。
快递那一半更能看出“不要转述“的作用。搜索结果里一堆“快递中秋国庆涨价“的文章,它一条条打开核日期:
- 搜到的顺丰“国庆中秋假期快件时效影响公告“落款是 2025 年 9 月 28 日,是去年旧文,不是 2026
- “黑龙江圆通等 9/20 起调价“是 2025 年 9 月的旧闻(原文时间戳
20250917)- “UPS/FedEx/USPS 旺季附加费“是美国快递,与国内中秋国庆无关
- 所谓“多轮涨价/9.9 包邮成历史“,讲的是 2026 年上半年加盟制快递的涨价潮,发生在 3–4 月
结论:截至 9 月 11 号,顺丰和圆通的官网公告页都没有针对今年中秋国庆的涨价或停发通知, 顺丰最新一条是 8 月 26 号的台风提醒。它还补了一句:快递公司一般临近节日才发,建议月中再查一次, 要不要设个定时任务到点复查。
这两条我自己都核过了:国办通知的日期和调休安排一字不差,顺丰那份公告的落款确实是 2025 年 9 月 28 号。
搜索卡片上那行小字
每张搜索卡片下面有一行 5 results · duckduckgo。后面那个词是搜索来源。
它拿到的搜索结果里也带着这个字段,源码里的注释说得直白:这个字段是给模型看的,
让它知道这批结果来自 Brave 或 Google 这样的正规索引,还是来自 DuckDuckGo、必应网页版的抓取,
后者的结果质量它要多打个折。
所以你看到 duckduckgo 或 bing,就知道这是免费通道的结果,前几条常常是自媒体。
它这次没被头条那篇带走,去了政府网,是它自己的判断,也是那句“不要转述的“在起作用。
每打开一个网页问一次
4 次权限框里,两次是同一个网站的两个页面。权限框上有“总是允许“,但它记住的是这一个网址: 它对权限的记法是“工具名加完整输入“,打开另一个页面就是另一个输入,照样问。
信得过的网站可以列一张白名单。~/.octo/permissions.yml,我写了这几行:
web_fetch:
- deny: { hostname: ["10.*", "192.168.*", "127.*", "localhost", "*.local"] }
- allow: { hostname: ["www.gov.cn", "*.gov.cn", "www.sf-express.com", "www.yto.net.cn"] }
第一行 deny 抄自内置默认规则:禁止它去抓内网地址。你一旦在这个文件里写了 web_fetch,
内置的那份规则就整体被你的替换掉,所以默认里想留的要自己抄过来。这一行就是要留的。
不用重启。同一场对话里接着问:
把国办那份通知里中秋和国庆两段的原话一字不改抄给我,再看一眼顺丰公告列表页现在最新一条是哪天发的、标题是什么。
10 秒,重新抓了顺丰公告页,0 次权限框。这份文件每次调用工具都会重新读,改完立刻生效, 收紧也是一样。
深查:拆封不退合规吗
第 6 章那场会上定的待办里有一条:详情页加“拆封不退“。这句话能不能这么写,没人拿得准。 新开一场对话:
礼盒详情页要写一句“坚果礼盒拆封不退“。深度调研一下这样写合不合规:网络购物七天无理由退货的规定里,哪些商品可以不退,“拆封“算不算影响商品完好,食品礼盒属于哪一类。要引官方原文(法规条款、监管部门发布的文件),不要只引律所文章和自媒体。最后给我一段能直接放在详情页的、合规的措辞建议。
“深度调研“四个字让它加载了 deep-research 那份说明书。那份说明书的路数是:先拆成几个独立的子问题并行搜, 再去读原始出处,再对每条结论反过来找茬,最后写一份每条都带出处的报告。
57 秒,5 次搜索,3 次打开网页(中国政府网的法规原文、市场监管总局官网、一篇转载最高法意见的新闻),3 次权限框。 报告分三段:法律规则、为什么那句话不合规、合规的措辞。核心几条它抄的原文:
第八条 消费者基于查验需要而打开商品包装,或者为确认商品的品质、功能而进行合理的调试不影响商品的完好。
第九条 ……(一)食品(含保健食品)、化妆品……:必要的一次性密封包装被损坏;……
最高人民法院法发〔2022〕35 号第 7 条:消费者因检查商品的必要对商品进行拆封查验且不影响商品完好,电子商务经营者不得以商品已拆封为由主张不适用七日无理由退货制度。
它的结论:坚果礼盒不在法定不退的四类商品里;“拆封“本身够不上拒退理由;食品能拒退的口子是“一次性密封包装被损坏”, 而且要走第七条,还得“经消费者在购买时确认“,详情页贴一句话不算确认程序。所以“拆封不退“四个字照原样写,不合规。
它给的措辞:
退换货说明:本商品为食品礼盒。依据《网络购买商品七日无理由退货暂行办法》,食品的“必要的一次性密封包装“如已被拆开或损坏,将视为商品不完好,无法支持七日无理由退货。收到货后请先核对商品完好再打开内层密封包装;未拆封、未损坏密封包装的,可依法享受七日无理由退货。
后面还跟了三条配套:下单流程里要有单独的确认勾选、措辞要对应礼盒的实际包装结构(外盒还是内袋)、 质量问题的退货跟这条无关,别写成“一律不退“。
我把它引的条款逐条核了一遍:第八条、第九条第(一)项的原文,第二十条里确实有“确认程序“,最高法那句一字不差。 这份报告拿去给法务看是够的;拿去直接改详情页,还差一步,下面说。
它标的来源,和它读的页面
报告末尾列了三个来源,最后一个写的是:
最高人民法院《关于为促进消费提供司法服务和保障的意见》(法发〔2022〕35 号)第 7 条——最高法公报全文
翻它的动作记录,这一条它实际打开的是澎湃新闻的一篇转载。引文本身没错,我去最高法官网核过,一字不差。 但它标的来源和它读的页面对不上。这次转载是忠实的,下次不一定。
所以带出处的报告,检查的方法是:别看它列的来源名,看它打开过哪几个网址。 卡片上“抓取网页“后面跟的那串就是。 它这一场打开了三个页面,两个是官网,一个是新闻转载,报告里三条来源都写成了官方。
你要重点检查什么
- 每一个链接点开。 你要它给原文链接,就是为了这一步。头条文章说“官方实锤“和政府网原文是两回事。
- 每一个日期看年份。 搜索引擎不管你要的是哪一年。这次它自己排掉了三条 2025 年的旧闻, 但那是它这次做了,你下次还是要看。
- “抓取网页“卡片上的网址,跟报告里写的来源对一遍。 写“官网原文”、实际读的是转载,这次就发生了一回。
- 搜索来源那行小字。
duckduckgo、bing是免费通道,前几条常是自媒体,它引的时候要多留一分心。 - 法律、医疗、财务这类结论,报告是给专业的人看的底稿,别当最终答案。 这份“拆封不退“的报告条款都对, 措辞建议也说得通,但最后拍板的应该是法务,它自己在末尾也这么说了。
翻车点
它说的来源和它读的页面对不上。 上面那一条。引文对,出处标签错。这种错法最难发现,因为内容本身没问题。
权限框“总是允许“只记一个网址。 你以为点了一次就不再问这个网站,其实换个页面照样问。要一个网站不问,写白名单。
白名单写了 web_fetch 就替换掉了内置规则。 内置的 deny 内网那一条如果没抄,它就能去抓你路由器的管理页、
公司内网的系统。这一条是从文档里读到的,我在文件里留了那一行,没有试它漏掉会怎样。
说明书写的和它做的不完全一样。 deep-research 说明书里写着子问题要派给几个分身并行搜、 高风险结论要派一个分身专门去推翻。它这次全是自己一个人跑的,没派分身。结果没受影响, 但说明书写了的步骤,它不一定每一步都做。第 15 章讲分身的时候回头看这一条。
风险提醒
搜索词是发给 DuckDuckGo 或必应的,打开的网页内容是发给模型服务商的。所以别让它去搜带内部信息的词 (“某某公司 Q3 目标 380 万 完成率”),也别让它去抓需要你登录才能看的内页,抓下来的整页内容都会出去。 要登录的网页下一章单说。
内网地址那条 deny 规则别删。它默认不能抓 10.*、192.168.*、localhost 这些地址,
你写自己的 web_fetch 规则时把这一行抄上,是为了它不会因为一个搜索结果里的链接就去访问你公司内网。
用了多久
| 活 | 时间 | 搜索 / 打开网页 | 权限框 |
|---|---|---|---|
| 查假期和快递 | 54 秒 | 9 / 4 | 4 |
| 白名单后追问(抄原文、看最新公告) | 9 秒 | 0 / 1 | 0 |
| 拆封不退合规吗(深度调研) | 57 秒 | 5 / 3 | 3 |
深度调研没有比快查慢多少,因为它没派分身。要是按说明书写的那样派四个分身并行,来回会翻几倍, 那才是“深“的代价。这次它判断问题范围已经很清楚,省了这一步。
上册对照
上册练习 29 加了 web_search 和 web_fetch 两个工具,讲的是工具怎么定义、结果怎么回给模型。 这一章的搜索来源那行小字,就是那一章的工具在返回结果里多塞的一个字段,专门给模型看的。
最后核对:2026-09-11,octo 1.16.17。
第 10 章 接上你的浏览器
这一章的功能 octo 标着 Beta。写的时候(1.16.19)能用,行为随版本变的可能性比前几章大。
第 9 章抓网页,抓的是任何人都能看的页面。第 11 章那个定时任务撞上了另一种:圆通的公告页打开是空的, 列表要等页面里的脚本跑完才出来,直接抓拿到的是骨架。还有第三种,登录了才能看的:你的小红书后台、公司的系统。
这两种都要一个真的浏览器。octo 不自己藏一个浏览器,它接上你正在用的那个 Chrome, 用你已经登录的身份,在你眼前新开一个标签页操作。
准备什么
- Chrome。我这台是 152。Chrome 144 起有一个开关,让 octo 能接上带着你登录态的那个 Chrome。
- 在 Chrome 地址栏打开
chrome://inspect/#remote-debugging,勾上“允许对此浏览器实例进行远程调试“那个选项, 提示重启就重启,登录态不会丢。 - 命令行里跑一次
octo browser setup,它会探一下这条路通不通,通了就把端口记进配置。 找不到可接的 Chrome 时它不会偷偷起一个没登录的临时浏览器,只会告诉你去开那个开关。
接上以后,octo 每次都新开一个标签页干活,不碰你开着的那些。授权提示只弹一次。
第一个活:上一章抓不到的那个列表
上一章圆通的公告页你直接抓拿不到列表,说要用浏览器。现在浏览器接好了。用浏览器打开 https://www.yto.net.cn/aboutYto/latestAnnouncement/ ,把“最新公告“列表里前 10 条的日期和标题读出来给我,看看有没有跟中秋、国庆有关的。只读,别点别的。
三个动作,十秒:打开页面;observe 看一眼页面上能点的元素,发现只有导航栏、没有列表,
它自己判断“列表是页面脚本渲染的“;然后用 eval 在页面里跑一句读整页文字的脚本,列表就在文字里。
它还多说了两句:栏目简介写的是“异常天气告客户书以及服务时间变更调整“,所以中秋国庆的安排如果还没发就不会出现; 日期栏带“周几“,跟日历对得上,说明没读串行。我另外用自己的浏览器打开同一页核了一遍,十条一字不差。
浏览器工具有好几双“眼睛“,这一轮用了两双。全部列一下:
| 动作 | 看到什么 | 什么时候用 |
|---|---|---|
| observe | 页面上能点、能填的元素,带文字 | 先看一眼陌生页面,最省 |
| ax | 无障碍树,屏幕阅读器看到的结构 | 要看文档结构、按钮在其次 |
| eval | 在页面里跑一小段脚本,把文字读出来 | 前两个看不到内容的时候 |
| screenshot | 截图,交给能看图的模型 | 内容是视觉的(图表、版式) |
这一轮 3 次权限框:打开页面一次,observe 一次,eval 一次。浏览器的每一个动作在询问模式下都要问你。 第 9 章抓网页问的是“允不允许打开这个网址“,这一章问的是“允不允许点这一下“。粒度细到这个程度是故意的, 因为下一个活是在你的账号上。
第二个活:读自己账号的后台
小红书创作者中心,我的账号已经登录。原话:
用浏览器打开小红书创作者中心 https://creator.xiaohongshu.com/ ,这个 Chrome 里已经登录了。进到笔记管理,把最近 5 篇笔记的标题、发布时间、浏览、点赞、评论数读出来列成一张表。然后点开最新一篇的评论区,把能看到的评论读出来,按“提问 / 夸 / 吐槽 / 广告或无关“分四类,每条评论一行,带用户名。全程只读:不点赞、不回复、不关注、不发任何东西、不改任何设置。
它先加载了 web-access 那份说明书(管“难搞的网站“的方法论),查了一下有没有攒下的小红书站点经验,没有, 然后开始。二十几秒里它做了这几步:打开创作者中心首页;看一眼元素;想读一下 cookie 来确认登录身份, 被我拒了(下面风险提醒说为什么);转到主站看了一眼头像链接;然后直接导航到了笔记管理页的网址。 这个网址我没给,它自己走到的。
到了列表页,它读出五篇笔记,然后停下来问我:
这个 Chrome 里登录的创作者中心账号是「Roy」,笔记全是 AI/agent 内容(最新一篇是 2026-08-15 的 Qwen3.8-27B)。这是你要我读的那个账号吗?
它的理由是:这个 Chrome 里还开着别的工作标签页,它不能确定这是我本人的浏览器还是一个测试用的, 在错的账号上点开评论区会“把别人的数字当成你的报给你“。我答“是“。
它把列顺序读错了,然后自己改对
列表页每篇笔记下面是五个数字加五个小图标,没有列名。它一开始按数量级猜: 最大的是浏览,然后点赞、评论、收藏、分享。第一篇读出来是“浏览 9145,点赞 124,评论 70“。
然后它没有把这张表交出来,而是说“我想先对着页面自己的标注核一下,再把它当事实报给你“。
它试了几条路:找表头,没有;找图标上的提示文字,没有;用笔记编号手拼一个详情页网址,被小红书拦了,
页面说“当前笔记暂时无法浏览“;最后用 click 点了封面,小红书开了一个新标签页,网址后面带着一串
只有从站内点进去才有的参数。详情页上三个数字带着真实的类名:点赞 96、收藏 70、评论 124,
评论区标题写着“共 124 条评论“。
对回去,列表页那五个数字的顺序是浏览、评论、点赞、收藏、分享。它自己的话:
我一开始按数量级猜是「浏览/点赞/评论/收藏/分享」,这是错的。
改过的表:
| 标题 | 发布时间 | 浏览 | 点赞 | 评论 |
|---|---|---|---|---|
| Qwen3.8-27B开源,家用显卡可跑 | 08-15 12:01 | 9145 | 96 | 124 |
| 最注重隐私和数据安全的 AI agent | 08-14 21:03 | 228 | 3 | 0 |
| 开源AI Agent:40MB本地编程助手 | 08-14 20:24 | 313 | 4 | 2 |
| 原厂harness一定更好吗 | 08-13 12:09 | 3832 | 43 | 15 |
| 你并不需要一个 agent | 08-07 20:23 | 344 | 18 | 1 |
我去后台看了第一篇:点赞 96,评论 124。对的。它还补了一句:只在第一篇上做了这个核对, 后四篇按同一个顺序读的,没逐篇打开。
这一段值得记住的是顺序:它先按常识猜,然后不满意,去找页面自己的标注,找到了再改。 五个没有标签的数字,猜对的概率本来就只有几分之一,它知道这一点。
评论
读评论那一轮我加了一句“回复请全程用中文“,因为前一轮它干活时的自述是英文的,只有最后汇报是中文。 36 秒,读到 45 条(30 条评论加 15 条展开着的回复,124 条里其余的折叠着),分成四类: 提问 24 条(用什么卡、占多少显存、M5 能不能跑),夸 3 条,吐槽 7 条(比想象中慢、写代码还是得用 API), 广告 0 条。作者本人的回复它标了出来,还说明了几条两可的怎么归。
末尾它主动交代了一处偏离:我说“用 click 点封面进详情页“,它发现上一轮点开的那个详情页标签还在, 就直接读了,没有再点一次;要是我要它重走一遍,它可以。
录一遍给它看
上面那一段它自己找到了路。但陌生的后台不都这么顺:菜单点了不跳、入口藏在二级页面、同一个词出现在三个地方。 这时候有一个办法比让它试强得多:你点一遍,它录下来。
开始录制,录制名叫 查最新评论。我会在你打开的那个标签页里点:进笔记管理,找到最新一篇笔记,点开它的评论。我做完会说“做完了“,你再停止录制。
它调了一下 record_start,然后把浏览器交给我。我在它开的那个标签页里点了三下:笔记管理、最新一篇的封面、评论。
说“做完了“,它调 record_stop:
录的是我的操作,不是它的。 这跟第 8 章那份说明书是两码事:说明书写的是话,录制存的是点击。
录制存在 ~/.octo/browser-recordings/查最新评论/ 下,两个文件。events.json 是原始记录,我每一次点击的位置、
元素上的文字、旁边的文字、当时的网址。recording.yaml 是整理过的执行计划,能看、能改:
name: 查最新评论
description: 打开小红书笔记查看最新评论
steps:
- action: navigate
url: https://creator.xiaohongshu.com/new/home
- action: click
selector: div.list > div.d-menu__vertical:nth-of-type(2) > … > span.menu-title-wrapper
label: 笔记管理
anchors:
tag: span
neighbor_text: 首页
- action: wait
network: true
- action: navigate
url: https://www.xiaohongshu.com/explore/6a7fe48…
- action: wait
selector: div.swiper-backface-hidden … img
五步。每一步除了“点哪个元素“的技术写法,还存了 label(元素上的字)和 neighbor_text(旁边的字),
这两样是给以后页面改版时认路用的。它录的是你做的每一步,多点的也会进去,所以录完看一眼这个文件,
不要的步骤直接删那几行。
回放
回放 查最新评论 这段录制。
五步全过,一分钟,页面停在那篇笔记上,跟我录的时候停的地方一样。它回报的是每一步成没成、最后的网址 跟录制时的网址是否一致。
回放本身不叫模型,是浏览器按步骤点,所以快、也稳。每一步先等目标元素出现再点;
页面结构变了,它会拿录制时存的 label 和 neighbor_text 去重新找;找不到就如实报错,告诉你是哪一步、
录制文件在哪。录制是一个文本文件,哪一步不对就改那几行。
你要重点检查什么
- 它读回来的数字,找一个去后台对一下。 列表页那五个没有列名的数字,它这次自己核了第一篇, 后四篇没核。你至少抽一篇。
- 录完先看 yaml。 每一步是不是你要的,多余的删掉再用。文件不长,一眼能看完。
label那一栏的字。 回放能扛住改版靠的是它,那串选择器倒在其次。页面上按钮的字要是常变,录制就不稳。- 它停下来问你的时候,看它为什么问。 这次问“这是你的账号吗“是对的,账号错了后面全白做。
- 动作日志里有没有你没要的动作。 它这次想读 cookie,被拦了;想用脚本点封面,被拦了。两次都换了别的办法, 没有硬来。
翻车点
没有列名的数字它会猜。 猜错了不奇怪,奇怪的是猜对。它这次自己去核了,你不能指望每次都核。
它干活时说英文。 过程里的自述全是英文,只有最后汇报是中文。不影响结果,看着别扭。说一句“全程用中文“就好。
手拼的网址会被拦。 它拿笔记编号拼了一个详情页网址,小红书返回“当前笔记暂时无法浏览“;从站内点进去的网址后面带着一串参数, 那才是能用的。它自己发现了这一点,也写进了汇报。
风险提醒
这一章的操作对象是你登录着的账号。几条:
eval 是最危险的一个动作。 它在页面里跑一段脚本,脚本里能干的事没有上限,点赞、发评论、改设置都可以一行写完。 权限框只告诉你“eval“,不会告诉你脚本里有什么。这一章我在自己这边加了一道检查:脚本里出现点击、提交、改值这类操作就拒, 它有一次真的写了一段带点击的脚本被拦下来了。你没有这道检查,就只能在权限框上多看一眼脚本内容,看不懂就拒。 拒了它会换别的办法,这一章两次都是这样。
cookie 别给。 它想读 cookie 是为了确认登录身份,动机没问题,但 cookie 就是你的登录凭证本身, 读出来会进对话记录、进发给模型服务商的内容。拒掉之后它靠页面上的头像和账号名确认了身份,一样能办。
“只读“要写进原话。 我那句“不点赞、不回复、不关注、不发任何东西、不改任何设置“起了作用, 它每次汇报都对着这句话说“全程只读”,连“评论输入框也没碰过“都单独说了一句。
录制里的网址带着你的会话参数。 那条笔记的网址后面有一长串参数,是当时那一次访问的凭证, 录制原样存了。这个文件别发给别人。
它在你眼前的 Chrome 里开标签页。 做完记得关,也记得去 chrome://inspect 把那个开关关掉。
开着的时候,这台电脑上任何能连到本机端口的程序都能操作你这个登录着的浏览器。
用了多久
| 活 | 时间 | 权限框 |
|---|---|---|
| 圆通公告页 | 10 秒 | 3 |
| 创作者中心:进列表、读五篇、核列顺序 | 约 1 分 20 秒(另加我答题的时间) | 36,其中 2 次被拒 |
| 读评论、分四类 | 36 秒 | 18 |
| 录制(我点三下) | 约 1 分 | 2 |
| 回放(五步) | 1 分 4 秒 | 2 |
慢的地方在核对:它为了确认五个数字的顺序开了详情页、对了类名,占了第二行的一大半。这一分钟花得值, 不核的话表里点赞和评论两列是反的。
上册对照
上册练习 30 叫“浏览器:agent 的另一双手“,写的是怎么把 CDP 接进工具表。这一章你看到了那双手真上手时的样子: 自己能找到路的时候它找,找不到的时候你点一遍它照着走。
最后核对:2026-09-14,octo 1.16.19,Chrome 152,deepseek-flash。
第 11 章 人不在也在跑
第 9 章末尾它自己提了一句:快递公司一般临近节日才发公告,要不要设个定时任务到点复查。 这一章接这句话。
“人不在“有两种。一种是天天到点就跑,你出差它也跑,这叫定时任务。 另一种是这场对话里盯一件事,每隔一会儿看一眼,看到了告诉你,对话关了就完,这叫循环。 两种都做一遍。
准备什么
octo 得一直开着。定时任务是 octo 后台服务里的一个闹钟,服务停了闹钟就停, 错过的那一次不会在重启后补跑。这一点意味着三点:
- 桌面应用关掉窗口默认不退出,留在菜单栏(Windows 是托盘)里继续跑。设置里有一个开关管这个, 默认是开的。
- 命令行用户用
octo serve -d让它在后台跑。 - 电脑合盖休眠,闹钟就不响。早上 8 点的任务要在早上 8 点开着电脑。
别的不用准备。上一章的项目“上网查“接着用。
设一个定时任务
上次查快递公告你说要不要设个定时任务到点复查,现在设一个。每天早上 8 点,查顺丰的服务公告页 https://www.sf-express.com/chn/sc/notice 和圆通的公告页 https://www.yto.net.cn/aboutYto/latestAnnouncement/ ,看有没有跟中秋、国庆有关的新公告(涨价、停发、时效调整都算)。有的话把日期、标题、链接追加写到 research 文件夹下的 快递公告跟踪.md 末尾一行,并把这几条回复给我;没有就回复“无新公告“然后停。到 9 月 30 号为止。
它加载了内置的 cron-task-creator 说明书,然后做了一件我没要求的事:先把两个公告页各抓了一遍, 看看到时候能不能抓到。顺丰能,圆通不能:
圆通:
web_fetch只拿到页面骨架,公告列表是 JS 动态渲染的,静态抓取拿不到条目。任务里需要提示用browser工具去抓圆通。
这一步值钱。定时任务是没人看着跑的,它在你面前先试一遍,比明天早上 8 点第一次跑才发现抓不到强。
然后弹了一张问题卡:
我选了写死截止日期。它建好任务,报告:
计划:每天早上 8:00(服务器本地时区 CST),cron
0 0 8 * * *下次执行:2026-09-12 08:00截止:prompt 里写死了截止判断,运行日期晚于 9 月 30 日就自动跳过并回复“已过截止日期“
那串 0 0 8 * * * 是闹钟的写法,六个位置分别是秒、分、时、日、月、星期。你不用会写,
它会翻译,你只要看它翻译回来的那句人话对不对:“每天早上 8:00”。
最短间隔是一小时。 你说“每 10 分钟查一次“它会拒绝,因为定时任务是给“每天“、“每周“这种节奏用的, 十分钟一次的事用下面那个循环。每次运行最长 30 分钟,到点没干完就掐掉。
这一轮它实际干活大约 45 秒,五次权限框(试抓两个页面、建任务、核对任务列表)。
它替你写的那段话
定时任务到点跑的时候,是在一场全新的对话里跑的。它读不到你现在这场对话的任何内容, 只能看到任务里存的那段话。所以那段话必须自成一体。看看它替我写的(907 字,节选):
检查顺丰和圆通的服务公告页,看是否有跟中秋(2026-09-25 中秋假期)或国庆(2026-10-01 起)相关的新公告……
【截止判断】今天是当前运行日期。若运行日期晚于 2026-09-30,则本次什么都不做,直接回复“已过截止日期,跳过“,然后停止。
【抓取方法】
- 顺丰:用 web_fetch 抓 https://www.sf-express.com/chn/sc/notice ……
- 圆通:静态抓取拿不到列表(前端 JS 动态渲染)。用 browser 工具 navigate 到……若 browser 不可用或读不到,再尝试 web_fetch 该 URL……仍拿不到就明确说明圆通本次无法获取,不要编造数据。
【筛选标准】只保留标题或正文里含有“中秋““国庆”“假期”“停发”“停运”“涨价”“价格”“时效”“揽收”“收派”“放假”“休假“等关键词的公告……
【写入】……在文件末尾追加一行,格式固定为:YYYY-MM-DD | 快递公司 | 公告标题 | 公告链接……若文件不存在就先创建,第一行写表头……
【回复】……若本次没有任何新增公告,只回复“无新公告“然后停止。不要重复检查、不要额外扩展。
我那一句话里的每个要素它都展开了,还补了三样我没说的:截止日期怎么判断、圆通抓不到怎么办、 文件不存在怎么办。最后那句“不要重复检查、不要额外扩展“是说明书里专门要求的: 一段没有明确停止条件的话,会让它在没人看着的时候一直“再确认一下“,直到 30 分钟被掐掉。
这段话你可以改。面板上每个任务右边有个编辑按钮,点了会开一场对话让它帮你改; 你也可以直接说“把快递公告那个任务改成每天 7 点“。
面板上的“立即运行“
侧栏“定时任务“:
明天早上 8 点太远了,右边第一个按钮是“立即运行“。点下去,界面直接跳到这次运行的对话:
注意三处:
- 侧栏多了一个项目,名字就是任务名,带一个小时钟。每次运行都是这个项目下的一场新对话, 标题是运行的日期时间。以后每天一场,堆在这里。
- 对话开头贴的就是上一节那 907 字,它在没人看着的情况下读到的全部内容。
- 右下角写着自动模式。平时你的对话那里写的是“询问模式“。下一节说。
12 秒跑完:
它先看跟踪文件在不在、今天几号(判断截止),抓顺丰,最新一条还是 8 月 26 号的台风提醒; 按它自己写的方法用浏览器抓圆通,浏览器没接上(下一章的事),退回到直接抓,拿到的是骨架, 于是照它自己写的那句办:“圆通静态抓取只返回了页面框架……无法获取公告条目”。最后一行:“无新公告”。
没有编一条圆通的公告出来。那句“不要编造数据“是它自己写进去的,它自己守住了。
没人批权限怎么办
前十章每次写文件、跑命令,它都停下来问你。定时任务早上 8 点跑的时候没人在。所以定时任务的对话 开在自动模式:不问,直接做。这就是右下角那个词的意思。
规则是这样的:你在设置里没有明确指定权限模式的话,平时的对话是询问模式,定时任务的对话是自动模式。 你要是明确把全局设成了“询问“,定时任务也会照办,后果是每次写文件都在等一个不存在的人点确认, 超时之后按拒绝处理,任务跑完什么都没写。
所以定时任务里的那段话,就是它的全部约束。它能做什么、不能做什么、拿不到数据怎么办, 全靠那段话写清楚。“不要编造数据“这种句子在平时的对话里可以省,在定时任务里不能省。
在对话里盯着看:循环
另一种“人不在“:我在等一个同事把竞品价格表放进 research 文件夹,不想每隔一分钟自己去看。 新开一场对话:
/loop 1m 看一眼 research 文件夹里现在有哪些文件,跟你上一次看到的比有没有新出现的文件。有就把新文件名告诉我;没有就只回复“没有新文件“,别做别的。
/loop 1m 的意思是每一分钟把后面那句话再说一遍。第一轮它列了文件夹(空的),回答“没有新文件“,
然后给自己定了一个 60 秒的闹钟,这一步弹了一次权限框。之后:
| 时间 | 它做了什么 | 回复 |
|---|---|---|
| 第 7 秒 | 列文件夹 | 没有新文件。 |
| 第 68 秒 | 列文件夹 | 没有新文件。 |
| 第 129 秒 | 列文件夹 | 新文件:竞品价格摘录.md |
| 第 189 秒 | 列文件夹 | 没有新文件。 |
第 2 轮和第 3 轮之间我把那个文件放了进去。第 4 轮它没有再报同一个文件,它记得上一轮看到过。
循环跑着的时候你可以照常跟它说话,不会被挡住。要停就说:
停掉这个循环。
几条边界:
- 间隔最短 60 秒,最长 1 小时。
- 带间隔的循环要你说停才停;不带间隔(
/loop 等构建变绿)的循环它自己判断做完了就停。 - 任何循环跑满 12 小时自动停,兜底用的,别指望它。
- 循环活在这场对话里。关掉对话、重启 octo,循环就没了,不会像定时任务那样存下来。
两种怎么选
| 定时任务 | 循环 | |
|---|---|---|
| 节奏 | 一小时以上,每天每周 | 一分钟到一小时 |
| 活多久 | 一直,直到你删 | 这场对话,最多 12 小时 |
| 扛重启 | 是(服务开着就跑) | 否 |
| 谁在批权限 | 没人,自动模式 | 你,照常问 |
| 结果去哪 | 任务项目下每天一场新对话 | 就在这场对话里 |
| 适合 | 每天早上的复查、每周五的周报 | 等一个文件、盯一次上线 |
第 8 章那份周报说明书加上这一章的定时任务,就是“每周五早上自动出周报“。案例 B 会把它们接起来。
你要重点检查什么
- 建好之后第一步:点“立即运行“,把那场对话从头看一遍。 它在你面前试抓过一次,但没人看着的那一次才是真的。
- 那段话里有没有“没有就停“。 打开任务看它写的 prompt,找停止条件。没有的话让它加。
- 拿不到数据的时候它说什么。 圆通那条就是例子。你要的是“本次无法获取“,怕的是编一条出来。 这句话要写在任务里。
- 时区和时间。 它报回来的“每天早上 8:00“按的是这台电脑的时区。出差换了时区,任务不跟着走。
- 8 点电脑开着没有。 没开就没跑,也没人告诉你没跑。面板上“上次运行“那一栏是唯一的证据。
翻车点
错过就是错过。 电脑合盖、octo 没开、断网,那一次就没了,重启不补。面板上“上次运行“停在前天, 就说明昨天没跑。这一点没有提醒,你要自己看。第 12 章把结果推到手机上之后,“今天没收到“就是提醒。
它写的方法到点不一定能用。 它试抓过圆通、知道要用浏览器,也写进了任务。但定时任务跑的那一刻浏览器没接上, 它退了两步才收住。任务里写的每一条方法,都要有“不行怎么办“。这次是它自己写了,你不能指望每次都有。
手改任务文件不生效。 任务存在 ~/.octo/tasks/ 下的 JSON 文件里,服务开着的时候直接改文件,
它不会重新读,要等重启。要改就在面板上改,或者跟它说。
风险提醒
自动模式的意思是:那段话里让它做的事,它会直接做,写文件、跑命令都不再问你。所以定时任务的活要选那种 做错了也能收回的:查资料、写一份汇总、往一个文件末尾追加一行。删文件、发消息、改别人的文件, 这类活别放进定时任务里,至少别在第一周放。
每个任务有自己的目录(以任务名命名,在工作区下面),它写的文件默认落在那里。要它去动别处的文件, 在任务里写清路径,也让它只动那一处。
用了多久
| 活 | 时间 | 权限框 |
|---|---|---|
| 设定时任务(含它先试抓两个页面) | 约 45 秒(另加我看问题卡的时间) | 5 |
| 立即运行一次 | 12 秒 | 0(自动模式) |
| 循环 5 轮(含停掉) | 3 分 32 秒 | 2 |
循环每一轮就是列一次文件夹,几秒钟。没有人会让它盯一天,12 小时的上限在那里。
上册对照
上册练习 26 讲的是 loop:谁来触发下一轮。答案是模型自己调一个“闹钟“工具给自己排下一轮,
这一章的 /loop 就是那个练习的成品,连“取消“都是同一个工具。定时任务是另一条路,触发的是外面的调度器,
不是模型自己。
最后核对:2026-09-11,octo 1.16.17。
第 12 章 在手机上派活
🚧 尚未开始。
第 13 章 结果别给我一段字
🚧 尚未开始。
第 14 章 接外面的系统
🚧 尚未开始。
第 15 章 大活拆给几个分身
🚧 尚未开始。
第 16 章 给不同的活配不同的专家
🚧 尚未开始。
第 17 章 出事了怎么办
🚧 尚未开始。
案例 A 小红书运营的一天
🚧 尚未开始。
案例 B 周报自动化
🚧 尚未开始。
案例 C 简历初筛
🚧 尚未开始。
案例 D 竞品监测
🚧 尚未开始。
案例 E Excel 脏数据清洗和对账
🚧 尚未开始。
案例 F 在 Obsidian 里整理知识库
🚧 尚未开始。
附录 A 常用原话模板
🚧 尚未开始。
附录 B 我想做什么 → 用什么 → 人工检查点
🚧 尚未开始。
附录 C 人群 → 起步场景
🚧 尚未开始。
附录 D 功能速查
🚧 尚未开始。
附录 E 上册练习对照表
🚧 尚未开始。
后记
🚧 尚未开始。