sid-code 发布终端 coding agent:中文对话改代码,编译成单文件二进制分发
njfuzrs/sid-code
njfuzrs/sid-code 发布一个跑在终端的 coding agent,用户用中文描述需求,它读取代码、修改文件并运行命令,用真实编译和测试结果验证改动。
中文 · English
跑在终端的 coding agent。 你用中文说要干什么,它读你的代码、改文件、跑命令, 然后用真实的编译和测试结果证明改对了没有。
TypeScript + Bun 编写,终端界面基于 ink 改造,编译成单文件二进制分发——下载一个文件就能跑,
不需要装 Node、不需要 npm install。
- 📖 官方文档: https://www.sid-code.cc/
- 📄 更新日志: https://www.sid-code.cc/changelog
- 🤝 参与贡献: CONTRIBUTING.md · 🔒 安全上报: SECURITY.md
安装
curl -fsSL https://www.sid-code.cc/releases/sid-code/install.sh | bash装完直接用:
sc # 启动(推荐) sid-code --version # 确认版本 sid-code update # 以后升级到最新版
装不上或 PATH 没生效,见安装文档。
30 秒示例
启动后直接说人话,不需要记命令:
$ sc
› 这个模块的超时配置不生效,查一下为什么
搜索 timeout 相关实现…
读取 packages/core/src/tool/bash.ts:55-80
定位到:parseEnv 读了环境变量但没传给 spawn 的 timeout 参数
修改 packages/core/src/tool/bash.ts
运行 bun test tests/tool/bash.test.ts → 12 pass 0 fail
超时没生效的原因是 parseEnv 的返回值没接到 spawn 上。已修复并跑过单测。
每一步都在终端里可见,随时按 Esc 打断。
四条差异化能力
Claude Code 的主要能力面这里都有(agentic loop、工具调用、权限门控、Hook、Skill、MCP 都有对应实现), 差别在下面四条 —— 它们不是"做得更好",而是闭源商业产品受定位约束而结构性不同:
| 能力 | 说明 |
|---|---|
| 深度贴合企业环境 | 内部网关计费、MCP 接入、团队默认配置分发,面向企业内网基建设计。装上就接得上你公司已有的那套东西 |
| 模型任你换,harness 整套可改 | 改一行配置换模型(Anthropic / OpenAI / Ollama 三族,OpenAI 族含 Chat Completions 与 Responses 两种;自动降级),写一个文件加扩展(Hook、Skill、子代理、MCP),提一个 PR 改内核(44 个内置工具、上下文工程、主循环全部开源) |
| 数据全部自主 | 会话轨迹、评测结果、成本账本都留在自己的基础设施里,不进任何人的训练集。既是合规前提,也是持续优化的燃料 |
| 每一分钱、每一步决策都查得到 | 耗时、成本、决策全留轨迹,默认就开着;发布前跑评测防回退。它同时是我们按版本复算「更快 / 更省 / 更少返工 / 更安全」的唯一度量来源 |
用过 Claude Code 的话迁移成本几乎为零,见迁移指南。
现状
| 项 | 现状 |
|---|---|
| 代码量 | 52.5 万行 TypeScript(含测试 20.6 万行) |
| 工程闭环 | 13,398 个单测、Agent 引擎行覆盖率 86.3%;每个 PR 在 CI 上跑全量,全绿才合入 |
| 能力面 | 44 个内置工具、MCP Client / Server、LSP 代码智能、权限门控、可观测轨迹 |
| 评测体系 | 独立评测集 agent-traj-bench:从真实会话逆向构造的 39 道 SWE-bench 风格题 |
本地开发
本地是双版本并存,两个不同的二进制名,不靠 PATH 优先级区分:
| 命令 | 指向 | 用途 |
|---|---|---|
sc / sid-code |
~/.local/bin/sid-code(线上下载版) |
对照线上行为 |
sc-dev / sid-code-dev |
仓库根构建产物 | 验证本地改动 |
git clone <仓库地址> cd sid-code bun install bun run vendor:fetch # 取回构建期 vendor 源码(见下方说明) make build # 构建开发版二进制(版本号不变,日常就用这个) sc-dev # 启动开发版 bun test # 全量单测
⚠️ 新克隆必须先跑
bun run vendor:fetch。两个目录 (packages/tui-renderer/src/与packages/cli/src/command/commands/claude-api/reference/) 不入库但是编译期依赖,缺了它们编译直接失败 (Cannot find module '@sid-code/tui-renderer/...')。make build会自动跑这一步,但单独跑bun test不会 —— 克隆后先手动跑一次。 机制与入库的ripgrep同源:本地有则用本地,缺失则下载 + sha256 校验。这两个路径是指向
.vendor-src/的 symlink,真实字节存在那里。该路径不在任何 git ref 里,所以checkout/merge/reset都删不掉这些文件(git checkout -f可能把 symlink 换掉,但bun run vendor:fetch会不联网复原)。 机理与三条不能破的约束见 CONTRIBUTING.md。
⚠️ 改了代码要验证,必须跑
sc-dev。sc指向线上稳定版,跑它验证不到任何本地改动。 拿不准时先which sid-code-dev sid-code确认指向。
文档站(VitePress,产物纯静态):
bun run website:dev # 本地预览 http://localhost:5173 bun run website:build # 构建(死链检测在此生效)
更多约定见 CLAUDE.md。
许可
本仓代码采用 MIT 许可证。本项目非商业化,不出售、不用于营利。
仓库内随附的第三方资产(入库的 ripgrep 二进制、npm 运行时依赖)各依其自身许可,
记录在 NOTICE。
来源:GitHub · github.com