如何让 LLM 写出正确的基石代码

这份指南教你如何引导大模型(LLM)为基石写代码——配合 jishi --ai-card(语言卡)与 docs/ai/system-prompt.md(系统提示词)使用。

三步上手

1. 把语言卡贴进系统提示词

bashjishi --ai-card

把输出整段贴进 LLM 的 system prompt。语言卡 ~2K token,含完整关键字表、 内建/标准库 API、惯用法示例、英文错误对照——LLM 读一遍就能写出能跑的代码。

2. 用中文描述任务

用基石写一个函数,接收一个数字列表,返回它们的平均值。

关键:明确说「基石」,否则 LLM 默认写 Python。任务里带上输入输出的示例更好。

3. 让 LLM 自愈(纠错闭环)

LLM 第一次生成的代码常会 fallback 回英文关键字。让它读报错自己改:

运行这段基石代码,如果报错,读报错里的「提示」字段,自己修正后重试。

结构化报错(jishi run x.jsh --json-errors)的 fix 字段是 {"old": "def", "new": "函数"} 形式的可直接替换建议,agent 能程序化自愈。

高频陷阱(提示 LLM 避开)

陷阱错误正确
英文关键字def / if / for / print / True函数 / 如果 / 遍历 / 打印 / 真
Tab 缩进混用 Tab 和空格只用 4 空格
成员判断x in 列表列表.包含(x)
布尔真值True / False / None真 / 假 / 空
原始字符串r"\d+""\d+"(基石未知转义保留反斜杠)

让 agent 通过 MCP 跑基石

bash# MCP 配置(stdio),接入 WorkBuddy 或任意 MCP 宿主
jishi-mcp

工具:run_script(沙箱执行,真正超时 kill)/ eval_expr / describe_language。 沙箱默认开(禁文件写/禁网络/超时 5s),LLM 生成的代码跑不坏你的机器。

完整示例:一句话任务

用基石写代码:读取一个整数列表,过滤掉负数,把剩下的翻倍,打印结果。

期望 LLM 产出:

jsh令 数据 = [3, -1, 5, -2, 8]
令 结果 = [x * 2 遍历 x 在 数据 如果 x >= 0]
打印(结果)