Claude Code 和 Codex 这些工具如何能让他们轻松找到项目目录呢 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bingfengfeifei
V2EX    Claude

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

  •  
  •   bingfengfeifei 74 天前 1641 次点击
    这是一个创建于 74 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    cd /root/git/test上面输入

    • claude
    • codex

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

    • cwd/root/git/test

    但是

    • 他们的pwd都是/root

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

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

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

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

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

    5 条回复    2025-10-23 22:47:20 +08:00
    dxppp
        1
    dxppp  
       73 天前
    先让 AI tree 一遍呢
    soulflysimple123
        2
    soulflysimple123  
       73 天前
    先在项目目录执行/init
    bingfengfeifei
        3
    bingfengfeifei  
    OP
       73 天前
    @soulflysimple123 #2 /init 已经执行了,甚至在 CLAUDE.md 里面明确说了这个路径问题,也还和之前一样。
    as9567585
        4
    as9567585  
       72 天前
    添加
    /add-dir Add a new working directory
    查看
    /permissions (allowed-tools) Manage allow & deny tool permission rules
    bingfengfeifei
        5
    bingfengfeifei  
    OP
       62 天前
    终于解决了这个问题 官方有个 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
    ```
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5089 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 01:14 PVG 09:14 LAX 17:14 JFK 20:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86