Plandex 开源的AI编码引擎初体验
Plandex 开源的AI编码引擎初体验
再也不需要自己动手写代码了,目前还不太完善,但是基本能满足需求了。下面以私有化部署为例。
什么是Plandex
Plandex 是一个开源
的、基于终端的 AI
编码引擎,可借助使用 LLM 处理复杂的开发任务。
它组合多个Agent
来完成跨多个文件的任务并对响应进行建模。分配任务时,会自动继续工作,直到确定任务完成。
应用场景
- 现有项目添加新的特性功能
- 编写自动化测试脚本
- 修复bug
- 重构代码
- 使用不熟悉的技术栈
- 等等
特性
版本控制
, 独立的版本控制暂存区域与git的版本控制隔离,支持分支和rewind
特性(rewind简单理解记忆助手)- 强大的
上下文管理
, 时刻保持已经加载的文件处于最新状态,且让你清楚上下文变更了什么
不足
- 不自动执行代码
- 自动选择上下文
模型支持
- 推荐使用
gpt-4o-mini
, 目前代码里还未集成,需要手动添加一下
其他
- 支持多平台,语言没限制。
部署方式
仅测试过k8s部署版本
docker部署
services:
postgresql:
image: ccr.ccs.tencentyun.com/k7scn/postgresql:16
container_name: postgresql
# ports:
# - '5432:5432'
volumes:
- 'postgresql_data:/bitnami/postgresql'
environment:
- 'POSTGRESQL_DATABASE=plandex'
- 'POSTGRESQL_USERNAME=plandex'
- 'POSTGRESQL_PASSWORD=plandex'
plandex:
image: ccr.ccs.tencentyun.com/k7scn/app-plandex-server
container_name: plandex
ports:
- '8080:8080'
depends_on:
- postgresql
environment:
- 'DATABASE_URL=postgres://plandex:plandex@postgresql:5432/plandex?sslmode=disable'
- GOENV=development
- PLANDEX_BASE_DIR=/data
volumes:
- 'plandex_data:/data
volumes:
postgresql_data:
driver: local
plandex_data:
driver: local
上面是示例compose文件,保存为plandex.yaml
docker compose -f plandex.yaml down -v
docker compose -f plandex.yaml pull
docker compose -f plandex.yaml up -d
# sleep 等待一会儿, 正常不需要,需要依赖pg起来
docker compose -f plandex.yaml restart plandex
上面的docker部署未测试哈,也可以参考官方部署
git clone https://github.com/plandex-ai/plandex.git
cd plandex/app
cp _env .env
# edit .env to override any default environment variables
docker compose build
docker compose up
k8s部署
手动创建pg相关库
CREATE USER plandex WITH PASSWORD plandex;
CREATE DATABASE plandex OWNER plandex;
GRANT ALL PRIVILEGES ON DATABASE plandex TO plandex;
将下面的yaml保存为plandex.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: plandex
namespace: nat
spec:
storageClassName: longhorn
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
---
apiVersion: apps.kruise.io/v1alpha1
kind: CloneSet
metadata:
labels:
app: plandex
name: plandex
namespace: nat
spec:
replicas: 1
selector:
matchLabels:
app: plandex
updateStrategy:
type: InPlaceIfPossible
template:
metadata:
labels:
app: plandex
spec:
tolerations:
- operator: Exists
nodeSelector:
node-role.kubernetes.io/storage: "true"
containers:
- image: ccr.ccs.tencentyun.com/k7scn/app-plandex-server
imagePullPolicy: Always
name: plandex
ports:
- containerPort: 8080
protocol: TCP
env:
- name: GOENV
value: "development"
- name: DATABASE_URL
value: "postgres://plandex:plandex@10.25.25.25:5432/plandex?sslmode=disable"
- name: PLANDEX_BASE_DIR
value: "/data"
resources:
requests:
cpu: 100m
memory: 128Mi
volumeMounts:
- mountPath: /data
subPath: data
name: plandex
restartPolicy: Always
volumes:
- name: plandex
persistentVolumeClaim:
claimName: plandex
---
apiVersion: v1
kind: Service
metadata:
labels:
app: plandex
name: plandex
namespace: nat
spec:
ports:
- name: http
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: plandex
type: ClusterIP
创建部署
kubectl apply -f plandex.yaml
安装cli
curl -sL https://plandex.ai/install.sh | bash
配置
基于自托管实验
创建账号
到这里需要,看下容器的日志,因为设置为开发者模式,验证码直接看容器日志就可以了,如果是生产模式,需要配置邮箱相关
2024/08/31 06:37:24 Received request for CreateEmailVerificationHandler
2024/08/31 06:37:24 Development mode: Verification pin is D5caxd for email i@ysicing.net
2024/08/31 06:37:24 Successfully created email verification
验证码就是D5caxd
剩下的就没有什么了,创建组织或者加入组织,第一次肯定是新建
配置GPT相关环境变量
根据自己的情况配置,最好支持多模态、图片识别
export OPENAI_API_BASE=https://oneapi.i.ysicing.net/v1
export OPENAI_API_KEY=sk-gACJ1kjv6BnyoqVHDbA20eD0F0Ba442eBb0028086dA1B3C1
查看模型, 发现不支持gpt-4o-mini
plandex models available
手动添加gpt-4o-mini
, 具体参考如下
- 相关参数根据推荐值写就行
calling supported
和multi-modal
相关情况,根据自己的API接口灵活调整,不过我发现Is function calling supported
和Are streaming function calls supported
较多API中转都会报错403,所有选择no
这里的功能设置会影响role的角色的配置, 一开始可以设置yes,调用的时候有报错在改
查看添加是否成功
plandex models available
设置默认模型
plandex set-model default
- planner:
streaming
支持 - 其他:
function calling
支持
具体角色可以参考文档models/roles
实战
基于CodeGPT实践,目前CodeGPT不支持DeepSeek
, 新添加一个需求支持上。
下载代码
git clone https://github.com/appleboy/CodeGPT.git
cd CodeGPT
new
初始化
plandex new
加载上下文
plandex load -r .
如果有提示Gpt-4o-mini does not support images in context
配置忽略图片
cat .plandexignore
images/
*.png
设置提词
支持多种方式:inline模式,如下所示
plandex tell -f prompt.txt
plandex tell
# vi模式- inline模式,如下所示
plandex tell "目前已经支持OpenAI和Azure, 以及Gemini。现在我想额外支持DeepSeek,其接口兼容OpenAI格式,地址为https://api.deepseek.com/v, 其可用模型有deepseek-chat和deepseek-coder,请帮我实现"
review代码
plandex diff
或者
plandex changes
apply
接受代码,当然也可以拒绝
plandex apply
拒绝的话可以选择也可以指定文件
plandex reject openai/openai.go
其实在review的时候拒绝体验最好😂
其他命令
每次向 Plandex 发送提示或 Plandex 回复时,计划的对话都会更新。对话受版本控制,可以进行分支
plandex convo --plain
对话摘要
plandex summary
plandex log
其他问题
- 如何修改模型参数,简单看了一下没发现,删除重新添加最快
plandex models rm gpt-4o-mini
成本
成本不是问题,模型只会越来越便宜,这只是进行了1-2轮,如果要想代码可用至少得跑上好几轮不止。
最后
这就是未来的趋势,我们只是高质量需求的搬运工,产品工程师
。