代码生成

Themis 可以为你编写代码——实现功能、修复 bug、编写测试或重构——并在 GitHub 上以 Pull Request 的形式提交更改。只需用自然语言描述你想要的内容即可。

工作原理

  1. 你描述想要的更改(通过聊天、Telegram 或 Teams)
  2. Themis 克隆你的项目,创建分支并进行更改
  3. 它运行代码检查、提交、推送并创建 PR
  4. 你在 GitHub 上审查 PR

整个过程在后台运行。你可以在聊天中看到实时进度更新,并且可以在 Themis 编码的同时继续工作。

触发代码生成

通过聊天

直接向 Agent 提出请求:

“实现一个带头像上传和时区选择器的用户个人资料页面”

“修复 reviews 控制器中的 N+1 查询”

“为 AutomationSchedulerJob 添加单元测试”

Agent 会识别这是一个代码任务并启动生成流程。

通过 Telegram 或 Teams

在频道中或私信中 @ 机器人:

@themis implement pagination for the activity feed

@themis fix the broken date formatting in the activity feed

通过 Linear(Issue 分配)

将 Linear issue 分配给 Themis 机器人,它会自动开始实现。对于工程团队来说,这是最自然的工作流——像分配给其他团队成员一样分配工单即可。

  1. 在 Linear 中创建或打开一个描述清晰的 issue
  2. 将其分配给 Themis
  3. Themis 读取 issue 标题、描述和任何关联的上下文,然后开始编码

这与你现有的迭代工作流无缝衔接——梳理 issue,将简单的任务分配给 Themis,然后审查返回的 PR。

通过自动化

事件触发的自动化也可以生成代码。例如,你可以设置一个 Linear → Issue 已分配 的自动化,每当 issue 被分配给机器人时触发代码生成。

你会看到什么

实时进度

聊天中会出现一个进度条,显示每个步骤:

排队中克隆中分析中生成中测试中检查中推送中创建 PR 中

每个步骤在进行时显示加载动画,完成后显示勾号。如果代码检查发现警告,你会看到警告图标。如果出现任何失败,会显示错误信息。

在收件箱中

代码生成记录出现在收件箱的 信号 > 代码 下。每条记录显示:

  • 标题 和项目名称
  • 分支名称 和进度状态
  • PR 链接(创建后显示)
  • 变更文件 — 创建、修改和删除的文件数量
  • AI 生成的摘要 — 解释更改内容和动机
  • 推理日志 — 展开查看 Agent 的思考过程、工具调用和决策
  • 元数据 — 耗时、成本、提交信息

在已有分支上工作

默认情况下,Themis 会为每次代码生成创建一个新分支。你也可以要求它在已有分支上工作:

“在 feat/user-profiles 分支上,为注册表单添加邮箱验证”

这对迭代开发很有用——先发起一个初始请求,审查 PR,然后在同一分支上要求后续更改。

分支命名

分支遵循 themis/<type>/<description> 的命名约定:

类型使用场景
feat新功能
fixBug 修复
refactor代码重构
chore维护任务
docs文档
test测试新增

底层原理

隔离的工作树

每次代码生成都在独立的 git worktree 中运行——一个仓库的隔离副本。这意味着:

  • 不会与你的工作树冲突。 Themis 不会触碰你的本地检出或任何进行中的分支。
  • 并行生成是安全的。 多个代码生成可以在不同分支上同时运行,互不干扰。
  • 干净的环境。 每个工作树从基础分支的全新检出开始,因此不会有之前运行留下的残余状态。

PR 创建后(或生成失败后),工作树会自动清理。

为什么不用 GitHub MCP?

你可能会好奇为什么 Themis 不使用 GitHub MCP 服务器通过 API 创建文件和提交。工作树方案是刻意选择的,而非基于 API 的文件操作:

  • Agent 拥有真实的开发环境。 它可以读取完整的项目结构、运行工具、检查导入和理解上下文——而不是通过 API 盲目地创建文件。
  • 标准 git 工作流。 更改通过 git addgit commitgit push 进行——与开发者使用的流程完全一致。这意味着正确的 diff、blame 历史和合并行为。
  • 安全沙箱。 Agent 在受控 shell 访问的沙箱环境中运行。危险操作(在工作树外删除文件、权限提升、访问密钥)会被安全钩子拦截。
  • 技能发现。 Agent 在编写任何代码之前,会读取你项目的 .claude/ 目录、CLAUDE.md 和所有技能文件,以了解你的编码规范。

Agent 安全

在代码生成过程中,Agent 在严格的约束下运行:

  • 路径限制 — 只能修改工作树目录内的文件
  • 禁止 git 操作 — 分支创建、提交和推送由任务管理,而非 Agent
  • 命令拦截rm -rfchmod、向外部主机发起的 curl、环境变量访问等危险操作会被拦截
  • 沙箱执行 — 在生产环境(Docker)中,容器提供额外的隔离;在本地开发中,bwrap 限制文件系统访问

项目技能

如果你的项目有 .claude/ 目录并包含技能文件(如编码规范、架构指南或测试模式),Themis 会自动发现并加载它们。Agent 会读取:

  • CLAUDE.md — 项目级别的指令、技术栈、编码规范
  • .claude/skills/ — 专业知识文件(如测试模式、Hotwire 规范)
  • 可移植技能 — 来自 lib/skills/ 的跨项目技能会被复制到工作树中供 Agent 使用

这确保生成的代码遵循你项目的特定模式——而非通用的模板代码。

使用技巧

明确具体需求。 “添加搜索功能”过于模糊。”使用 pg_trgm 为对话列表页面添加全文搜索,并用 Stimulus 控制器实现防抖输入”会获得更好的结果。

如果生成的代码不符合预期,查看推理日志。它会展示 Agent 的具体理解以及做出某些决策的原因。

对于复杂功能,在同一分支上迭代。先完成核心实现,审查后再要求改进。每次后续请求都基于之前的更改。

状态参考

状态含义
Pending排队等待处理
Cloning设置 git worktree
Analyzing读取项目上下文和技能
Generating编写代码更改
Testing运行测试(如已配置)
Linting检查代码风格
Pushing提交并推送到远程仓库
Creating PR在 GitHub 上创建 Pull Request
CompletedPR 创建成功
No ChangesAgent 判断不需要代码更改
Failed发生错误 — 请查看错误信息