主题
跑通第一个任务
跟着走一遍,十分钟内你会看到它真的改了你的代码,并且用测试证明改对了。
我们刻意用一个故意写错的小函数当靶子,而不是让它从零写代码—— 因为"找 bug、改掉、跑测试验证"才是它日常真正在做的活,也最能看清它每一步在干什么。
前置两项,各一条命令自查:
| 查什么 | 命令 | 不对怎么办 |
|---|---|---|
| 模型配好了 | sid-code auth status | 有报错或 key 那行不是 ✓ → 先去配置 provider |
| 机器上有 node | node -v | 没有 → 把本页 demo 换成你自己项目里任何一个能跑的测试命令,流程完全一样 |
快速上手
三步。先建一个一次性的小项目:
bash
mkdir -p /tmp/sid-demo && cd /tmp/sid-demo
cat > calc.js <<'EOF'
function add(a, b) {
return a - b;
}
module.exports = { add };
EOF
cat > calc.test.js <<'EOF'
const { add } = require('./calc');
const assert = require('assert');
assert.strictEqual(add(2, 3), 5);
console.log('PASS');
EOFadd 里写的是 a - b,测试断言 add(2,3) === 5,现在必然失败。启动:
bash
sid-code用 sid-code 而不是 sc
sc 别名跳过了所有权限确认。第一次跑就用 sid-code, 你才能看到它每次动手前是怎么问你的——那正是这页要讲清的东西。
在输入框里说人话(中文就行):
text
calc.js 里 add 函数有 bug,修掉它,然后用 node calc.test.js 验证回车。剩下的它自己做。
你会看到什么
它不会直接给你答案,而是一步步动手,每步都摆在你面前。 下面是这个任务的真实执行序列(实测 6 次工具调用):
text
⏺ ls 看一眼目录里有什么
⏺ glob 找到相关文件
⏺ read calc.js 读源码
⏺ read calc.test.js 读测试,搞清楚正确行为该是什么
⏺ edit calc.js 改掉
⏺ bash node calc.test.js —— 跑测试验证最后它给出的结论(真实输出):
text
bug 在 calc.js:2 —— return a - b; 应该是 a + b。
- 修复点:calc.js:2 — return a - b; → return a + b;
- 验证:node calc.test.js → PASS注意最后一行:它没有说"应该就好了",而是真跑了测试拿到 PASS。 这是 sid-code 的基本要求——结论必须有客观信号支撑,不是模型自己觉得对。
逐项解释你看到的东西
它为什么要问我 y/n
第一次要动文件或跑命令时,它会停下来问:
text
y 允许 n 拒绝 a 始终允许三个键的含义:
| 键 | 含义 |
|---|---|
y | 就这一次,允许 |
n | 拒绝。它会知道被拒了,然后换个思路继续(不会崩) |
a | 本次会话内这类操作都别再问了 |
碰到破坏性操作(删除、覆盖这类)时对话框会标红, 并且默认落在"拒绝"上——此时直接回车是拒绝,手滑不会造成破坏。
拿不准就按 n。拒绝是安全的:它会拿到"用户拒绝了"这个信息,然后换路走或者问你要怎么办。
嫌一直问烦了,Shift+Tab 可以在几种权限模式间循环切换(右下角会显示当前模式)。
各模式的语义与取舍见权限与人工确认。
这个 diff 我该看什么
它改文件时会给你一份 diff。看三件事就够,别逐字读:
- 改的是不是你以为的那个文件。 路径写在最上面。
- 红行删掉的东西对不对。 加错了容易发现,删错了不容易。
- 范围有没有超出。 你让它改一个函数,diff 里冒出十个文件,就是跑偏了—— 按
n拒掉,把要求说得更具体一点。
第 3 条最值得记:diff 变大比 diff 改错更危险,因为错的一眼能看出来, 范围超了往往一眼看不出来。
Esc 怎么打断
任何时候按 Esc 立即打断当前这一步。
打断不丢东西:已经改完的文件保持已改状态,会话历史留着,你可以接着说 "停一下,先只改 calc.js",它从这里继续。 连按两次 Esc 走的是回退(/rewind),可以把代码或对话回到之前的检查点。
打断之后你输入框里没打完的字也不会丢——这是刻意设计的,输入永不丢弃。
折叠起来的那些内容
工具结果和模型的思考过程默认是折叠的,只显示一行摘要。 按 Ctrl+O 展开/收起。想知道"它到底读到了什么才下这个结论",就展开看。
结束时的那份摘要
任务结束会打印一份会话摘要,真实的一份:
text
Session ID: 20260727-175928-fd486b35
会话时长: 0.5 分钟
LLM: 5 次请求, 25159 tokens, 平均 5.9s, $0.0813
工具: 6 次调用 (6成功/0失败)
交互: 1 次提示, 5 轮循环
缓存: 命中 55% (68.2k/123.4k)
工具明细:
read: 2次, 平均1ms
ls: 1次, 平均1ms
glob: 1次, 平均29ms
edit: 1次, 平均1ms
bash: 1次, 平均61ms三个数值得看:
$0.0813—— 这一个任务花了八分钱。成本是当场可见的,不用等月底账单。缓存: 命中 55%—— prompt cache 命中率。这个数直接决定你花多少钱, 命中的部分单价便宜得多。怎么把它提上去见成本与用量。6成功/0失败—— 工具失败率。经常失败说明有环境问题,值得查一下。
Session ID 记一下,后面 sid-code -r <id> 能恢复这次会话。
几个立刻能用上的操作
会话里直接打斜杠命令:
| 命令 | 用途 |
|---|---|
/cost | 现在花了多少钱 |
/context | 上下文用了多少、离自动压缩还有多远 |
/model | 切模型,不用重启 |
/clear | 清空对话重新开始(代码不动) |
/doctor | 环境自检:版本、配置、git、ripgrep、模型、MCP |
/help | 全部命令 |
退出后恢复会话:
bash
sid-code -c # 继续最近一次
sid-code -r # 打开会话选择器(可搜索)常见问题
它改完了,但改错了
直接说,别自己动手改:
text
不对,你把 a - b 改成了 a * b,应该是 a + b它会重新读文件、改回来、再跑一次测试。这比你手动改更好—— 会话里留下了"这里错过"的记录,它后面不会再犯同一个。
真要回退,用 /rewind(或连按两次 Esc)回到修改前的检查点。
它一直问权限,很烦
Shift+Tab 切到 acceptEdits(自动接受文件修改,但跑命令仍然问)。 这是日常最顺手的档位。全部不问是 --dangerously-skip-permissions, 也就是 sc 别名干的事——只在你信得过的仓库里这么用。
它说改好了,但我看着不像
看它有没有真的跑验证。摘要里 bash 调用次数为 0, 说明它只改了代码没验证过。这时候直接要求:
text
跑一下测试确认sid-code 的默认要求是"改完必须验证",但不同模型执行力有差异—— 弱一点的模型偶尔会跳过,明确要求一句就行。
花的钱比我想的多
先看 /cost 里的缓存命中率。命中率低时同样的任务能贵好几倍。 另一个常见原因是模型选贵了——/model 换个便宜档位, 或者给子代理配低档模型(见子代理)。
清理
bash
rm -rf /tmp/sid-demo接下来
到这里你已经会用了,剩下的按需读——接下来读什么给了四条路径。
它刚才问你权限那一步,背后是一组权限模式和一套规则语法(同上,不写个数); 想搞清楚什么时候该用哪种,去权限与人工确认。