跳到正文
GitHub·· 8 天前AI 评分62

sid-code 发布终端 coding agent:中文对话改代码,编译成单文件二进制分发

njfuzrs/sid-code

AI 导读

njfuzrs/sid-code 发布一个跑在终端的 coding agent,用户用中文描述需求,它读取代码、修改文件并运行命令,用真实编译和测试结果验证改动。

正文

License: MIT CI 文档 平台 Bun

中文 · English

跑在终端的 coding agent。 你用中文说要干什么,它读你的代码、改文件、跑命令, 然后用真实的编译和测试结果证明改对了没有。

TypeScript + Bun 编写,终端界面基于 ink 改造,编译成单文件二进制分发——下载一个文件就能跑, 不需要装 Node、不需要 npm install。


安装

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