ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Fabric 如何用 code2context 为 create_coding_feature 模式生成代码上下文

2026/9/11 6:56:15 拓冰建站 浏览量
Fabric 如何用 code2context 为 create_coding_feature 模式生成代码上下文 Fabric 如何用 code2context 为 create_coding_feature 模式生成代码上下文【免费下载链接】FabricFabric is an open-source framework for augmenting humans using AI. It provides a modular system for solving specific problems using a crowdsourced set of AI prompts that can be used anywhere.项目地址: https://gitcode.com/GitHub_Trending/fa/FabricFabric 的create_coding_featurepattern 用于让 AI 对已有代码项目直接生成文件变更但它需要先拿到项目的代码上下文。code2context就是承担这一步的配套工具它扫描项目目录或指定文件列表生成一份带变更指令的 JSON再通过管道传给fabric --pattern create_coding_feature由模型分析后输出可被 Fabric 直接应用到文件系统的变更。本文给出从安装到验证的完整操作路径。前置条件系统中有 Go 工具链安装命令使用go install并已安装 Fabric 主程序主程序的安装方式见 README.md你的目标代码项目最好在干净的 git 仓库中方便事后审查和回滚。安装 code2contextcode2context是 Fabric 仓库中的独立命令安装方式与 Fabric 类似go install github.com/danielmiessler/fabric/cmd/code2contextlatest安装完成后code2context二进制会位于 Go 的 bin 目录默认~/go/bin确保该目录在PATH中即可直接调用。code2context 生成的上下文结构code2context的输出是一段 JSON 数组固定包含三部分参见 code.go 中的ScanDirectory与ProjectData定义目录树type为directory的嵌套结构包含每个文件的name和完整contentreporttype为report统计扫描到的directories和files数量instructionstype为instructions、name为code_change_instructionsdetails字段就是你命令行传入的变更指令原文。create_coding_feature的 system.md 中给出的示例输入文档示例数值仅示意[ { type: directory, name: ., contents: [ { type: file, name: README.md, content: This is the README.md file content } ] }, { type: report, directories: 1, files: 5 }, { type: instructions, name: code_change_instructions, details: Update README and refactor main.py } ]也就是说模型收到的是一份项目快照 你要它做什么的完整输入而不是零散文件。主路径扫描并管道给 create_coding_feature在你的项目根目录下执行create_coding_feature 的 README 强调文件变更是相对当前目录应用的务必在项目根目录运行code2context . Create a simple Hello World C program in file main.c | fabric --pattern create_coding_feature命令由两部分组成code2context 目录 指令第一个位置参数是要扫描的目录第二个位置参数传给模型作为code_change_instructions管道右侧的fabric --pattern create_coding_feature把 JSON 上下文喂给该 pattern模型据此生成文件变更并由 Fabric 解析应用。code2context支持三个选项见 main.go选项默认值用途-depth3目录扫描的最大深度超过深度的目录会被跳过-ignore.git,node_modules,vendor逗号分隔的忽略模式路径包含任一模式即跳过-out空输出到 stdout把 JSON 写入指定文件而不是打印到标准输出例如只扫描两层、忽略构建产物code2context -depth 2 -ignore .git,node_modules,dist ./my-project Implement error handling注意-out与管道给 fabric互斥-out用于把上下文单独保存下来检查而管道用法需要输出到 stdout。可选分支只扫描指定文件如果不想让模型看到整个目录可以把文件列表从 stdin 传入此时只接一个位置参数指令find . -name *.go | code2context Refactor error handling同样支持git ls-files *.py | code2context Add type hints这类组合。stdin 模式下每行一个文件路径空行会被忽略传入列表为空会报Error: No files provided via stdin。目录模式如果给出的路径不是目录会报Error: Directory dir does not exist or is not a directory。输出后发生了什么create_coding_feature要求模型在回复中输出一个以固定标记__CREATE_CODING_FEATURE_FILE_CHANGES__开头的 JSON 数组每项为一次文件操作格式定义在 system.md__CREATE_CODING_FEATURE_FILE_CHANGES__ [ { operation: create, path: README.md, content: ... }, { operation: update, path: src/main.c, content: int main(){return 0;} } ]path必须是相对项目根目录的路径operation只允许create和update两种不存在删除操作。Fabric 在 chatter.go 中对该 pattern 的回复做特殊处理file_manager.go 的ParseFileChanges提取标记后的 JSON 数组并逐项校验拒绝含..的路径、拒绝超过 10MB 的文件内容随后ApplyFileChanges逐条写入磁盘不存在的目录会自动创建。应用过程中的终端输出为每条操作一行Applied create operation to path这类信息全部完成后打印Successfully applied file changes. You can review the changes with git diff if youre using git.需要说明的一处文档不一致create_coding_feature/README.md 的 Security Features 一节列出 User confirmation required before applying changes但同一文档的 Important Notes 明确写着 You willnotbe asked to approve each change且当前代码行为是直接应用后输出上述成功信息。按 Important Notes 和代码行为准备操作变更后立即用 git 审查。验证结果按 create_coding_feature/README.md 给出的 Example Workflow在变更应用后依次执行# 审查 AI 对项目做了哪些修改 git diff # 运行/测试代码以该示例项目使用的 make check 为例换成你项目自己的测试命令 make check # 确认无误后提交 git add changed files git commit -s -m Add Hello World programgit diff是文档给出的第一验证手段它能显示本次相对上次提交的全部文件差异make check是文档示例项目中使用的测试命令代表用项目自己的构建/测试流程确认变更可用这一步。如果git diff显示的路径或内容不符合预期不要提交回到干净提交状态例如重新检出后重跑命令。文档同时强烈建议在干净的 git 仓库中使用该 pattern以便审查和回滚。边界与限制只能在项目根目录运行code2context扫描哪个目录、Fabric 就相对哪个当前工作目录写文件两者必须一致且等于项目根只有 create/update模型无法删除文件已有文件会被整文件覆盖安全校验file_manager.go 中ParseFileChanges实现路径含..直接报错单项文件内容超过 10MBMaxFileSize 10 * 1024 * 1024报错operation不是create/update报错。标记缺失则视为无文件变更只保留文本回复标记后找不到 JSON 数组会报格式错误扫描范围目录模式默认深度 3 层且默认忽略.git、node_modules、vendor超出范围的代码不会进入上下文指令若涉及深层目录应显式调大-depth变更若改变了项目的构建或安装方式pattern 的 system prompt 要求模型把这些变化写入项目 README.md验证git diff时可一并检查。文档列出的尚未实现的能力dry-run 模式、变更回滚、删除文件支持等见 create_coding_feature/README.md 的 Suggestions for Future Improvements 一节目前不可使用。【免费下载链接】FabricFabric is an open-source framework for augmenting humans using AI. It provides a modular system for solving specific problems using a crowdsourced set of AI prompts that can be used anywhere.项目地址: https://gitcode.com/GitHub_Trending/fa/Fabric创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考