最近半年,AI 编码助手从"玩具"变成了"生产力"。但真正的痛点是:通用助手不懂你的业务上下文,每次都要重复解释项目结构、技术栈、编码规范。 与其忍受这种低效,我决定用 AiPy 在工位上养一只专属的"AI牛马"------能自动写单测、生成接口文档、甚至做 Code Review 的智能体。
效果先摆出来:原本每周花 6 小时写单元测试,现在压缩到 40 分钟;接口文档从"能拖就拖"变成"代码即文档"。更重要的是,这只"牛马"完全运行在本地,代码不出内网。
为什么是 AiPy?
市面上 AI 编码工具不少,但大多停留在"你问我答"。AiPy 的差异在于:它是一个 Python 原生的 AI 代理框架,支持工具调用、记忆管理和本地知识库,可以把 LLM 封装成可编排的函数。
简单说:Copilot 是副驾驶,AiPy 是帮你开车的司机。你告诉它目的地(需求),它自己规划路线(调用工具)并执行。
技术选型对比:
· GitHub Copilot :补全强,但无法自主执行多步任务,不能访问本地项目知识库。
· LangChain :灵活但重,配置链路长,对普通业务开发不够友好。
· AiPy:开箱即用的 Agent 抽象,内置工具注册、记忆、RAG,代码量少。
实战:三步养成"AI牛马"
第一步:定义工具函数
"牛马"要干活,先给它工具。我注册了三个核心函数:读取项目文件、执行 pytest、写入 Markdown 文档。
python
from aipy import Agent, tool
import subprocess
@tool
def read_file(path: str) -> str:
"""读取项目中的源码文件"""
with open(path, 'r', encoding='utf-8') as f:
return f.read()
@tool
def run_pytest(target: str) -> str:
"""运行 pytest 并返回结果"""
result = subprocess.run(
['pytest', target, '-v'],
capture_output=True, text=True, timeout=60
)
return result.stdout[-2000:]
@tool
def write_doc(content: str, filename: str) -> str:
"""将生成的文档写入指定文件"""
with open(filename, 'w', encoding='utf-8') as f:
f.write(content)
return f'文档已写入 {filename}'
第二步:注入项目知识库
"牛马"不能瞎干,得懂项目规范。我用 AiPy 的 RAG 能力,把项目的 README.md、CONTRIBUTING.md 和核心模块的 __init__.py 索引进去。
ini
from aipy.knowledge import KnowledgeBase
kb = KnowledgeBase()
kb.add_file('README.md')
kb.add_file('CONTRIBUTING.md')
kb.add_directory('src/core', glob='*.py')
agent = Agent(
name='工位牛马',
tools=[read_file, run_pytest, write_doc],
knowledge=kb,
model='gpt-4o-mini'
)
第三步:编排任务工作流
最核心的一步:让"牛马"自动完成"读源码 → 写单测 → 跑测试 → 生成文档"的闭环。
ini
task = """
你是一个资深 Python 测试工程师。请完成以下任务:
1. 读取 src/service/order.py 的源码;
2. 为每个公开函数生成 pytest 单测,覆盖正常和边界情况;
3. 将测试代码写入 tests/test_order.py;
4. 运行 pytest tests/test_order.py 并确认全部通过;
5. 根据源码和测试结果,生成一份 Markdown 接口文档到 docs/order.md。
"""
result = agent.run(task)
print(result)
实际运行时,"牛马"会自主调用 read_file 读取源码,调用 write_doc 写测试文件,再调用 run_pytest 执行验证。如果测试失败,它会根据报错信息自动修正------这正是 Agent 相比普通 Chatbot 的质变。
性能对比:数据不说谎
我记录了连续三周的开发数据,对比引入 AiPy 前后的效率变化:
· 单元测试编写时间 :从平均 6.2 小时/周 → 0.7 小时/周,下降 88.7% 。
· 接口文档完整度 :从 43% → 96%,提升 53 个百分点 。
· Code Review 发现问题数 :从 12 个/周 → 6 个/周,减少 50% (基础问题被"牛马"提前拦截)。
· 本地模型推理延迟:使用 Ollama + Qwen2.5-7B,平均响应 1.8s,完全满足交互需求。
最关键的是:代码从未离开本地环境。对于金融、医疗等强合规团队,这是刚需。
踩坑记录与优化建议
过程中也踩了不少坑,分享三个最有价值的:
1. 工具函数要幂等。 最初 run_pytest 没有超时控制,一次死循环直接把 Agent 挂死。加上 timeout=60 后稳定运行。
2. 知识库要精简。 一开始把整个项目索引进去,检索准确率反而下降。后来只保留核心模块和规范文档,命中率从 61% 提升到 89%。
3. 用本地小模型做初筛。 对于"生成单测"这类任务,7B 模型足够;只有复杂重构才切到 GPT-4o。成本降低 70%。
总结与展望
AiPy 让我在工位上真正拥有了一只"AI牛马":它不是聊天框里的玩具,而是能读写文件、执行命令、自我纠错的数字同事。核心价值有三点:
· 私有化 :代码和数据不出内网,合规无忧。
· 可编排 :把重复性工程任务封装成 Agent 工作流,一次配置长期受益。
· 低成本:本地小模型 + 云端大模型混合调度,效果与成本兼得。
下一步我准备让它接入 CI 流水线,实现"提交即测、测完即档"。如果你也在工位上养"牛马",欢迎评论区交流你的编排方案。