工作区与文件
工作区是一个线程运行所在的目录。工具调用里的相对路径从这里解析,文件写入也留在里面,除非智能体用了绝对路径。
没有工作区时,八千代是个聊天框。有了工作区,它才能读你的项目、改文件、跑命令,并把改了什么摆给你看。
设置 → 能力 → 工作区 保存你的路径。每条可以带一个标签,这也是智能体在多个可用工作区之间做选择时看到的东西 —— 所以「client-api(Go 后端)」比一个光秃秃的路径有用得多。
同一个面板还设定八千代用什么应用打开东西:编辑器、终端和 Markdown 阅读器。
从来没分配过工作区的线程会拿到一个位于 ~/.yachiyo/temp-workspace/<thread-id> 的临时目录,这样工具调用总有地方落脚。
快照与 diff
Section titled “快照与 diff”每一次碰到文件的运行都会被快照。事后这次运行会展示一份实际改动的 diff —— 不是模型自己写的、关于它认为自己做了什么的总结。
捕获分三层,因为智能体改文件的方式不止一种:
- 写入之前 ——
write、edit和applyPatch工具在替换之前先捕获原始内容。 - shell 命令前后 ——
bash命令会被解析出可能的写入目标(重定向、tee、sed -i之类),这些文件也一并捕获。这一层是刻意做得不精确的。 - 运行结束后 —— 重新扫描工作区,兜住前两层漏掉的部分。
快照进入一个内容寻址的存储,所以未改动的文件不占额外空间,重复内容只存一份。旧快照会在后台被垃圾回收。
工作区扫描会跳过你能想到的那些目录 —— node_modules、.git、dist、build、.next、.cache、__pycache__ 和 .yachiyo —— 而且不会无限递归。共享的系统临时目录永远不会被当作外部目标扫描。
把改动限制在线内
Section titled “把改动限制在线内”有三样东西约束智能体能对你的文件做什么:
- 运行模式。 在探索模式下,编辑类工具根本不在模型的工具列表里。见运行模式。
- 工作区边界。 相对路径在工作区内解析;伸到外面需要显式的绝对路径。
- 先读后写。
edit和write工具要求文件先被读过,所以智能体没法盲写覆盖一个它从没看过的东西。
那些什么都没写就结束的运行留下的临时工作区会越攒越多。设置 → 能力 → 工作区 有一个清理操作,删掉空的那些。里面有文件的工作区不会被碰。