V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bingfengfeifei
V2EX  ›  Claude

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

  •  
  •   bingfengfeifei · 12 天前 · 1070 次点击

    我用了一段时间的这种命令行式的 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  
       11 天前
    先让 AI tree 一遍呢
    soulflysimple123
        2
    soulflysimple123  
       11 天前
    先在项目目录执行/init
    bingfengfeifei
        3
    bingfengfeifei  
    OP
       11 天前
    @soulflysimple123 #2 /init 已经执行了,甚至在 CLAUDE.md 里面明确说了这个路径问题,也还和之前一样。
    as9567585
        4
    as9567585  
       10 天前
    添加
    /add-dir Add a new working directory
    查看
    /permissions (allowed-tools) Manage allow & deny tool permission rules
    bingfengfeifei
        5
    bingfengfeifei  
    OP
       10 小时 26 分钟前
    终于解决了这个问题 官方有个 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   ·   5001 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 01:13 · PVG 09:13 · LAX 18:13 · JFK 21:13
    ♥ Do have faith in what you're doing.