如何让 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]
打印(结果)