ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Kiro 本身是 AWS 于 2025 年 7 月推出的 AI 原生集成开发环境,强调“规范驱动开发”,

Kiro 本身是 AWS 于 2025 年 7 月推出的 AI 原生集成开发环境,强调“规范驱动开发”,

「Kiro 鬼点子计划」是由亚马逊云科技发起的一项面向极客、企业开发者和创意开发者的活动,鼓励开发者用 Kiro 把看似荒诞却有趣的想法变成可运行的 Demo。

Kiro 本身是 AWS 于 2025 年 7 月推出的 AI 原生集成开发环境,强调“规范驱动开发”,可以把自然语言需求拆解成需求文档、设计文档和任务清单,再自动推进代码实现、测试和文档更新。

本次报告以 Python 为语言,围绕“鬼点子计划”的参赛要求,设计一个可运行的小工具,并分析如何用 Kiro 提升开发效率。

二、Kiro 与鬼点子计划的核心机制

鬼点子计划分为线上赛和线下赛,线上赛需在 10 月 22 日前提交可运行 Demo,评审标准包括创意度、Kiro 深度使用和交付质量。

Kiro 的关键能力包括:

能力作用对鬼点子计划的价值
Spec 驱动开发将一句话需求拆成 requirements、design、tasks快速把脑洞变成工程化任务
Agent Hooks保存或提交时自动执行测试、文档更新保证 Demo 交付质量
Steering记录项目规范、语言偏好、架构约束让 AI 输出更稳定
MCP连接外部工具、文档、API扩展鬼点子的数据来源
多模型支持支持多种模型调度适配不同复杂度任务

三、鬼点子选题:Bug 情绪转换器

为了贴合“无用之用”和“无趣之趣”赛道,这里设计一个 Python 小工具:Bug 情绪转换器。

它的作用很简单:把开发者遇到的报错信息,转换成一封“情绪化请假条”、一首“赛博小诗”和一条“冷静修复建议”。它不一定实用,但足够好玩,也适合做成可运行 Demo。

四、Python 代码实现

importrandomimporttextwrapfromdatetimeimportdatetimedefclassify_bug(error_text:str)->str:"""根据报错文本粗略判断 bug 类型"""text=error_text.lower()if"index"intextand("out of range"intextor"list"intext):return"index_error"if"none"intextand"attribute"intext:return"none_type"if"file"intextand("not found"intextor"no such"intext):return"file_not_found"if"timeout"intextor"timed out"intext:return"timeout"if"permission"intextor"denied"intext:return"permission_denied"if"type"intextand"error"intext:return"type_error"return"unknown"defgenerate_leave_note(error_text:str,bug_type:str)->str:"""生成一封情绪化请假条"""moods=["崩溃","疲惫","迷茫","倔强","佛系","摆烂边缘","正在重启"]mood=random.choice(moods)now=datetime.now().strftime("%Y-%m-%d %H:%M")returntextwrap.dedent(f"""\ 【Bug 情绪请假条】 生成时间:{now}当前心情:{mood}报错摘要:{error_text.strip()[:120]}Bug 类型:{bug_type}尊敬的 Product Manager: 由于系统向我抛出了一个极其有想法的异常, 我的大脑已进入自我保护模式。 现申请短暂离线{random.choice([5,10,15,30])}分钟, 用于修复宇宙、对齐需求、以及找回失踪的分号。 批准人:未来的我 """)defgenerate_poem(error_text:str,bug_type:str)->str:"""把 bug 写成一首赛博小诗"""templates=[f"""\ 报错在深夜亮起, 像一行不肯睡去的代码。 它说:{error_text.strip()[:80]}我听见终端叹息, 于是把 bug 折成纸船, 放进日志的河里。 """,f"""\ 变量走失在函数尽头, 异常站在门口不肯离开。 它问:为什么没有人处理我? 我答:因为我在假装没有看见。 """,f"""\ 屏幕很亮, 咖啡很苦, bug 很安静, 只有日志记得它哭过。 """]returnrandom.choice(templates)defgenerate_fix_suggestion(bug_type:str)->str:"""生成一条冷静修复建议"""suggestions={"index_error":"检查列表长度,确认索引是否越界;必要时使用切片或条件判断。","none_type":"确认函数返回值是否可能为 None,调用前增加空值判断。","file_not_found":"检查文件路径、工作目录和权限;建议使用绝对路径或 pathlib。","timeout":"增加重试机制、超时控制和日志记录,避免无限等待。","permission_denied":"确认文件、端口或 API 权限,必要时联系管理员。","type_error":"检查传入参数类型,增加类型提示或输入校验。","unknown":"复制完整报错信息,结合日志和最小复现代码定位问题。",}returnsuggestions.get(bug_type,suggestions["unknown"])defconvert_bug(error_text:str)->str:"""主入口:把报错转换成请假条、诗和修复建议"""bug_type=classify_bug(error_text)leave_note=generate_leave_note(error_text,bug_type)poem=generate_poem(error_text,bug_type)fix_suggestion=generate_fix_suggestion(bug_type)result=[]result.append("=== Bug 情绪转换器 ===")result.append("")result.append(leave_note)result.append("=== 赛博小诗 ===")result.append(poem)result.append("=== 冷静修复建议 ===")result.append(fix_suggestion)return"\n".join(result)if__name__=="__main__":sample_errors=["IndexError: list index out of range","FileNotFoundError: [Errno 2] No such file or directory: 'data.csv'","AttributeError: 'NoneType' object has no attribute 'split'","requests.exceptions.Timeout: HTTPSConnectionPool timed out","PermissionError: [Errno 13] Permission denied: '/var/log/app.log'","TypeError: unsupported operand type(s) for +: 'int' and 'str'",]forerrinsample_errors:print(convert_bug(err))print("\n"+"-"*40+"\n")

五、代码解析

程序整体分为四个层次。

第一层是bug 分类。classify_bug函数通过关键词匹配,把报错文本粗略归类为索引错误、空值错误、文件缺失、超时、权限错误、类型错误或未知类型。它不是精确诊断工具,而是为后续生成内容提供上下文。

第二层是情绪化请假条生成。generate_leave_note会随机选择一种心情,并拼接报错摘要、时间和 Bug 类型。这里使用textwrap.dedent保持多行字符串可读,也避免多余缩进影响输出。

第三层是赛博小诗生成。generate_poem从多个模板中随机选择一首诗,并把报错信息嵌入其中。它的价值不在于文学性,而在于把“冷冰冰的异常”转成一种开发者能会心一笑的表达。

第四层是修复建议生成。generate_fix_suggestion根据 Bug 类型给出相对实用的处理方向,例如检查索引、处理 None、确认文件路径、增加超时重试等。这样程序不只是搞笑,也保留了少量工程价值。

主函数convert_bug把三部分结果拼成完整输出,并通过if __name__ == "__main__"入口提供可直接运行的 Demo。

六、运行效果示例

当输入:

IndexError: list index out of range

程序可能输出:

=== Bug 情绪转换器 === 【Bug 情绪请假条】 生成时间:2026-10-20 14:30 当前心情:正在重启 报错摘要:IndexError: list index out of range Bug 类型:index_error 尊敬的 Product Manager: 由于系统向我抛出了一个极其有想法的异常, 我的大脑已进入自我保护模式。 现申请短暂离线 15 分钟, 用于修复宇宙、对齐需求、以及找回失踪的分号。 批准人:未来的我 === 赛博小诗 === 报错在深夜亮起, 像一行不肯睡去的代码。 它说:IndexError: list index out of range 我听见终端叹息, 于是把 bug 折成纸船, 放进日志的河里。 === 冷静修复建议 === 检查列表长度,确认索引是否越界;必要时使用切片或条件判断。

每次运行结果会因随机选择而不同,这也符合“鬼点子”作品的趣味性。

七、如何结合 Kiro 完成鬼点子计划

如果把这个工具交给 Kiro 实现,可以按以下流程推进:

  1. 用一句话描述点子
    例如:“做一个把报错信息转换成请假条、赛博诗和修复建议的 Python 工具。”

  2. 让 Kiro 生成 Spec
    Kiro 会自动拆出需求文档、设计文档和任务清单,明确输入、输出、分类规则和边界条件。

  3. 使用 Vibe 模式快速原型
    先让 Kiro 生成基础版本,验证输出是否有趣、可运行。

  4. 切换到 Spec 模式完善结构
    补充异常处理、输入校验、日志记录和命令行参数。

  5. 配置 Agent Hooks
    例如保存 Python 文件时自动运行pytest,提交前检查代码格式。

  6. 使用 Steering 固定风格
    比如规定输出必须包含“请假条、诗、修复建议”三部分,避免 AI 跑偏。

  7. 打包成可提交 Demo
    最后生成一个可运行脚本、演示录屏和简短说明,满足鬼点子计划提交要求。

八、项目亮点

  • 创意贴合赛道:把报错信息变成请假条和诗,符合“无用之用”“无趣之趣”的趣味定位。
  • 结构清晰:分类、生成、组装三层分离,便于继续扩展。
  • 可运行 Demo 完整:无需额外依赖,直接运行即可看到输出。
  • 具备工程化改造空间:后续可接入日志系统、Web 界面、命令行参数或 MCP 工具。
  • 适合 Kiro 展示:从一句话脑洞到 Spec、代码、测试和 Demo,能够体现 Kiro 的规范驱动开发能力。

九、后续扩展方向

可以进一步把这个小工具升级:

  • 增加argparse命令行参数,支持读取本地日志文件;
  • 接入 MCP,让 Kiro 查询官方文档后生成更准确修复建议;
  • 增加单元测试,验证不同报错类型的分类结果;
  • 使用 PyInstaller 打包成独立可执行文件;
  • 增加 Web 界面,做成在线 Bug 情绪转换器;
  • 加入多语言输出,例如中文、英文、程序员黑话版。

十、结论

Kiro 鬼点子计划的核心并不是要求参赛者立刻做出改变世界的产品,而是鼓励开发者把那些“有空再做”的奇思妙想真正落地。Kiro 的价值在于,它不只是生成代码,还能通过 Spec、Hooks、Steering 和 MCP 把创意推进成可交付的 Demo。

本次 Python 报告以“Bug 情绪转换器”为例,展示了如何把一个看似无用的点子拆解为分类、生成、组装和演示四个环节。它既能作为鬼点子计划的参赛作品,也能作为理解 Kiro 规范驱动开发的一个小型实践样本。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进