Claude Code 和 Codex 这些工具如何能让他们轻松找到项目目录呢

19 天前
 bingfengfeifei

我用了一段时间的这种命令行式的 Agent ,发现在我环境上面有个通病,就是经常不知道自己在哪个目录,然后去乱搜文件。 我是在 Linux 服务器上面用的,用的 root 账号登录的,然后打开一个项目/root/git/test

cd /root/git/test上面输入

这时候claude codecodex这种工具都知道项目目录是/root/git/test

但是

所以经常在编译代码的时候,或者各种用相对路径搜索项目代码的时候,都是从pwd /root发起的。

例如正常的编译命令是在项目目录执行go build src/*,但是 Agent 经常就会直接执行这种命令,但是他是从pwd /root执行的,等价于 go build /root/src/*

所以经常会找不到文件,虽然最后他们经过长时间的尝试还是会找到/root/git/test项目目录,并且发现这个问题,但是非常耗费时间,而且几乎每次新建对话都会出现这个现象。

大家有没有什么好的办法,让他用相对目录的时候永远以 cwd 为基准/root/git/test,相对目录就直接继承 cwd 去搜索呢。

不知道这个是我的用法问题还是什么,我无论是codex还是claude code都必然会出现这个问题

1219 次点击
所在节点    Claude
5 条回复
dxppp
19 天前
先让 AI tree 一遍呢
soulflysimple123
19 天前
先在项目目录执行/init
bingfengfeifei
19 天前
@soulflysimple123 #2 /init 已经执行了,甚至在 CLAUDE.md 里面明确说了这个路径问题,也还和之前一样。
as9567585
18 天前
添加
/add-dir Add a new working directory
查看
/permissions (allowed-tools) Manage allow & deny tool permission rules
bingfengfeifei
7 天前
终于解决了这个问题 官方有个 issue 提及了这个问题`https://github.com/anthropics/claude-code/issues/989`

问题的根本原因是我的 pwd 是/root ,而正确的启动 pwd 应该是项目目录,所以 claude code 遇到这种反常识的问题就懵逼了。
造成这个问题的原因我的 shell 是 fish shell ,而且在我的 shell 启动配置里面,可能有切换目录的操作,所以当 claude code 每次启动一个非交互式 shell 去运行命令时,都使用了这个启动配置的东西,就一直切换到了根目录。

解决这个问题的方式就是在 shell 的~/.config/fish/config.fish 的配置文件,我的是 fish shell 所以修改这个问题。如果是 zsh 或者 bash 同理。

在最开始的时候 加入这个代码,claude code 会自己设置一个变量,可以用 CLAUDECODE 判断是否是 claude code 启动的,如果是 claude code 启动,就直接退出,然后问题解决了。
```
if set -q CLAUDECODE
return
end
```
如果是 bash 或者 zsh 就改用 bash 语法
```
if [[ -n "$CLAUDECODE" ]]; then
return 0
fi
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1164590

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX