TinoContext:基于docker文件映射的面向模块化中后台的AI Coding方案
目录
一个标准企业级中后台搭建,主要包括表格、表单、卡片列表、数据看板等中后台常见核心功能
页面之间的 逻辑/组件 基本都一样,且页面之间耦合度极低
在 AI 开发中,打开一个项目时会 列出非常多 与当前页面开发不相关的的页面代码,若项目历史很长,经手人多,则内部的代码逻辑样式差异会非常大
AI 现在已经学会去项目中读取 其他页面是怎么做的了,但在这样的状态下,AI 参考项目代码不能能生成效果稳定的代码
在开发的过程中,往往涉及到很多过程文件,比如docx后缀的需求文档,个性化的提示词,以及其他不适合放在 仓库中但是 AI 需要用到的文件。
我发现提示词也是一个有风格的东西,提示词本省也是个人思维的一种延伸
往往需要 另开一个文件夹,按照 类似的目录存放,在AI需要用到时候跨越千里去引用
../../../../../../../xx1/xx2/xx3/xx4/xx5/xxxx在AI开发的过程中,很多代码实际上是不会涉及的,比如全局的一些配置,或者打包器,这些东西甚至开发者也很少涉及,但是AI在遇到bug时候很喜欢在全局配置里面改东西!!
docker在运行时可以将目录映射到容器指定的目录下,我们可以将不同地址的文件通过docker映射来实现容器内紧凑的格局
且容器内外是同步的,使用起来比较无感
关于其他方案:使用 软连接也可以实现相关的功能,但是 大多属 AI cli / IDE会向父目录扫描 git仓库,导致一些混乱和奇怪的影响。并且ai在读取的时候会读到 xxx -> xxx这种文件,git对这种链接文件的兼容性也不佳
kilo把我仓库当文件夹啊删了!!!!!
理论存在 实践开始
以claude code 为例:
由于没有官方的 镜像,且我们需要一些个性化的设计,建议自己打包docker,不难的
FROM node:20-slim
# ===== 基础工具 =====
RUN apt-get update && apt-get install -y \
git \
bash \
curl \
ca-certificates \
zsh \
&& rm -rf /var/lib/apt/lists/*
# 使用官方 node 用户(UID=1000)
USER node
# ===== 工作目录 =====
WORKDIR /workspace
# ===== 安装 Claude Code =====
# 使用代理来下载claude code
RUN export https_proxy=http://host.docker.internal:7890 http_proxy=http://host.docker.internal:7890 all_proxy=http://host.docker.internal:7890
RUN curl -fsSL https://claude.ai/install.sh | bash
RUN RUNZSH=no \
CHSH=no \
KEEP_ZSHRC=yes \
sh -c "$(curl -fsSL https://gitee.com/pocmon/ohmyzsh/raw/master/tools/install.sh)"
# 设置 HOME(其实 node 镜像已经是这个,但写上更明确)
ENV HOME=/home/node
ENV PATH="/home/node/.local/bin:${PATH}"
RUN export https_proxy= http_proxy= all_proxy=
CMD ["/bin/zsh"]运行 docker build --add-host=host.docker.internal:host-gateway -t claude-code . 构建镜像
然后运行
# 使用即使删除的方式启动,推出容器时就会删除容器
docker run -it --rm \
# 设定容器名称
--name page_name \
# 这里我在项目中创建了一个目录用于存放相关文件
-v /pathtoproject/design/pagename:/workspace \
# 将项目级的 .claude文件拷入
-v /pathtoproject/.claude:/workspace/.claude \
# 将页面部分的代码拷入
-v /pathtopagex:/workspace/pagename \
# 将个人claude配置拷入,这样会话消息就能在主机上保存了,使用体验和直接用claude完全一致
-v ~/.claude:/home/node/.claude \
-v ~/.claude.json:/home/node/.claude.json \
# 设定工作目录
-w /workspace \
claude-code还可以使用只读的设置来控制,来实现比如禁止修改文档的功能
然后就可以当作正常的claude来使用了,查看目录会发现东西如此之小
➜ /workspace ls -al
total 32
drwxrwxr-x 5 node node 4096 xx 18 11:23 .
drwxr-xr-x 1 root root 4096 xx 18 11:25 ..
drwxrwxr-x 3 node node 4096 xx 16 07:47 .claude
-rw-rw-r-- 1 node node 5079 xx 18 11:23 CLAUDE.md
drwxrwxr-x 10 node node 4096 xx 18 11:17 xxxx
drwxrwxr-x 4 node node 4096 xx 18 09:22 xxxx
-rw-rw-r-- 1 node node 428 xx 18 11:15 start.sh你可以在 /pathtoproject/design/pagename 中添加 各种个性化的文件或者草稿什么的,不会被上传到仓库
