Codync
免费开源的 1:1 Grok Bot 与 Muse 替代方案。可在 iPhone、Mac 或 Linux 桌面上将 Claude 代码、Codex、Cursor 以及 40 多个编码代理作为持久机器人使用。支持群组聊天、线程、应用。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证cli agent
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗TypeScript 从零编写,零运行时依赖。引擎在每个调用点抛出事件,所有插件(包括内建工具)把自己的 hook 注册成中间件,按 prepend > user > append > builtin > core 串成一条链。
主要能力:
Read / Write / Edit / Bash / Glob / Grep,外加子代理、技能、记忆与计划模式。需要 Node ≥ 20 与 pnpm。
git clone https://github.com/yyyCode/DeepCode && cd DeepCode
pnpm install
npm link # 把 deepcode 挂到全局(撤掉用 npm rm -g deepcode)
写一把 key 到用户级配置:
mkdir -p ~/.deepcode && cat > ~/.deepcode/config.json <<'EOF'
{ "apiKey": "sk-ant-..." }
EOF
没有全局命令也行:node /path/to/DeepCode/bin/deepcode.mjs "..."。
然后进你的项目:
cd /你的项目
deepcode "跑一下测试,把失败的那条修掉" # 一次性,跑完退出
deepcode # 不带参数 = 交互式 REPL
别写成
pnpm --dir /path/to/DeepCode dev "..."。pnpm 会把 cwd 设成包目录,模型会在 DeepCode 仓库里改文件。
| 参数 | 作用 |
|---|---|
deepcode "..." | 执行一句提示词,跑完退出 |
deepcode | 交互式 REPL |
deepcode web | 本地网页界面;默认随机端口、自动开浏览器 |
--resume | 接上当前目录最近一次会话 |
--resume=<id> | 接上指定 id 的会话 |
--settings=<路径> | 追加一层权限设置 |
-h, --help | 帮助 |
-V, --version | 版本 |
只认这几组开关,其余 argv 一律拼成一句提示词 —— 所以 --resume 指定 id 必须用等号形态,deepcode --resume "继续修" 里的那句话是提示词。
管理命令:
deepcode config list # 生效的配置项、值、来源
deepcode config set model <名字> # 只允许改 model,写入用户级配置
deepcode plugin list # 已装 / 已启用 / 跳过的插件
deepcode plugin add <名字> --from=<目录>
deepcode plugin remove <名字>
deepcode web [--port=<n>] [--no-open] 在本机起一个单栏聊天界面:流式正文、工具卡片、
权限卡(允许一次 / 本次会话总是允许 / 拒绝)、停止按钮。只绑 127.0.0.1,终端会打印
一条带 token 的地址(token 只在这次进程里有效);刷新页面按事件回放重建时间线。
关掉浏览器不会停服务,后台那一轮仍会跑完 —— 停服务用 Ctrl-C 或 /exit。
| 输入 | 效果 |
|---|---|
/help | 可用命令与工具 |
/tools | 模型这一轮真能用的工具,以及没进清单的原因 |
/diff | 本会话改动 + 工作区未提交 |
/clear | 清空上下文(磁盘上的转录保留) |
/compact [说明] | 手动压缩上下文 |
/context | 上下文账本:各段 token、压缩阈值、五层压缩做了什么 |
/permissions [forget] | 生效的权限规则与来源 |
/memory [名字] | 项目记忆 |
/plan [off] | 进入 / 退出只读计划模式 |
/config | 生效配置与来源 |
/telemetry | 遥测开关与落盘位置 |
/exit | 退出(Ctrl-D 也行) |
Ctrl-C | 掐断当前回合;空闲时退出,同一回合连按两次强制退出 |
会写盘或执行命令的工具(Write / Edit / Bash)先打印预览,再等一个答案:
y —— 放行这一次;a —— 本次会话内放行这一类(Bash 只记住这一条命令,退出即失效);只读的 Read / Glob / Grep 不询问。非 TTY(管道、CI)下默认拒绝,所以拿它写脚本只能做只读的活。没有 --yes,也没有自动放行开关。
多文件或方向不确定的任务,先让它出方案:
你:给配置系统加一层校验,先别改代码,说说你打算怎么做
你:/plan ← 也可以手动进
计划模式里只有只读工具。模型调用 ExitPlanMode 交上计划后,你按 y 才开始执行;按别的就留在计划模式继续改。计划落盘在 <工作目录>/.deepcode/plans/。
| 来源 | 路径 |
|---|---|
| 用户级 | ~/.deepcode/config.json(Windows:C:\Users\<你>\.deepcode\config.json) |
| 项目级 | <工作目录>/.deepcode/config.json |
优先级:环境变量 > 项目级 > 用户级。 两层都有时按字段合并,不是整体替换。
字段:apiKey / model / baseUrl / provider / debug。字段名写错会直接报错,不静默退回默认值。
换兼容端点只需改这几个字段,baseUrl 要自带版本段(请求路径直接拼 ${baseUrl}/chat/completions):
{ "apiKey": "sk-...", "model": "deepseek-v4-flash", "baseUrl": "https://api.deepseek.com/anthropic" }
{ "provider": "openai", "apiKey": "sk-...", "model": "deepseek-chat", "baseUrl": "https://api.deepseek.com/v1" }
常用环境变量:
| 变量 | 作用 |
|---|---|
ANTHROPIC_API_KEY / ANTHROPIC_AUTH_TOKEN | API key,前者优先 |
DEEPCODE_MODEL / ANTHROPIC_MODEL | 模型 id,前者优先 |
ANTHROPIC_BASE_URL | API 端点 |
DEEPCODE_PROVIDER | anthropic / openai |
DEEPCODE_DEBUG | 打开调试轨迹(走 stderr) |
排查「配置没生效」:先看环境变量 —— 它优先级最高,机器上残留的 ANTHROPIC_BASE_URL / ANTHROPIC_AUTH_TOKEN 会顶掉配置文件(顶掉时启动会打一行说明)。Windows 上删了环境变量,已开着的终端不会变,要把终端程序整个退出再打开。
config.json 管连接,权限在另一套 .deepcode/settings.json 里。来源从低到高:user → project → local → flag(--settings=)→ policy(托管)。
{
"permissions": {
"allow": ["Read"],
"ask": ["Bash"],
"deny": ["Bash(git push:*)", "WebSearch"]
}
}
deny > ask > allow,与规则写在哪一层、数组里排第几无关。Bash(git push:*) 按空白 token 边界做前缀匹配;Read(~/.ssh/**) 按绝对路径做 glob(* 单段、** 跨段)。true && git push origin main 拦不住 —— deny 是给手滑和误操作加的一道闸,不是对抗手段。Bash 另有一道可选的路径沙箱,默认关:
{ "sandbox": { "enabled": true, "paths": { "deny": ["~/.ssh/**", "/etc/**"] } } }
它在真正 spawn 之前判定,任何 allow 规则都绕不过;但它是命令文本分析,不是 OS 隔离,也只盖 Bash。详见技术文档 § 权限。
会话落盘在用户级目录,不进项目目录:
~/.deepcode/projects/<工作目录>/sessions/<id>.jsonl # 权限 0600
--resume 只认当前目录自己的会话;找不到时以退出码 1 收场。转录里是代码与文件内容,删掉 .jsonl 就等于删掉那次会话。
跨会话记忆一条一个文件,索引每轮注入系统提示,正文按需召回:
~/.deepcode/projects/<工作目录>/memory/<名字>.md
~/.deepcode/projects/<工作目录>/memory/MEMORY.md
子代理与技能:放在 .deepcode/ 或 ~/.deepcode/ 下的 agents/、skills/,也可以随插件提供。Explore 并发派只读子代理,Task 串行。
插件:~/.deepcode/plugins/<名字>/ 自动装载。plugin add 装进来的要在用户级 settings.json 里写 plugins.enable 才启用,项目级写同一名字不算数。
MCP(stdio):在用户级 ~/.deepcode/settings.json 里配本地 server,工具以 mcp__<server>__<tool> 进清单,每次调用默认问你;/mcp 看连接状态。
{
"mcpServers": {
"fs": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "."] }
}
}
只认用户级:仓库里克隆下来的 settings.json 不会替你启动进程。配置改动下个会话生效。
遥测:默认关。在用户级 settings.json 写 { "telemetry": { "enabled": true } } 后,只写本地 ~/.deepcode/telemetry.jsonl,没有网络上报。
大结果外置:单个工具结果超过 50 000 字符时原文落盘,消息里只留预览与路径,可用 Read 的 offset / limit 读回。
Bash,x=/etc/passwd; rm $x 这类绕得过去。AGENTS.md / CLAUDE.md 一个字都不进它的系统提示,要它守的规矩得写进 agent 文件或 prompt。Bash 经 cmd.exe 起命令,Ctrl-C 掐的是这层外壳,孙进程可能残留。deepcode web,没有 diff 视图与文件树);子代理同步交回结果。readOnlyHint。完整清单(每条代价、每个默认值、设计文档指路):site/已知限制.md。
pnpm typecheck # 类型检查
pnpm lint # 依赖边界 + 工作流硬化
pnpm test # 测试(全桩,无需密钥)
pnpm dev # 直接跑 tsx(cwd 是本仓库)
CI 在 GitHub Actions 上跑同样三条,Node 20 与 22。