UnitGen with combined with CodeContextStrategy and CompletionBuilderType to build the instruction.
The instructions will be generated by the following steps:
| CodeContextStrategy | Description |
|---|---|
| SimilarChunks | tokenize path to find similar path, then calculate similar chunk by path |
| RelatedCode | use static analysis by imports to calculate related code |
for example:
| SimilarChunks | RelatedCode | |
|---|---|---|
| InlineCompletion | afterCursor > 10 | |
| InBlockCompletion | ||
| AfterBlockCompletion | ||
| TestCode | ||
| Documentation | lines >= 5 |
If you want to add a new instruction, you need to add a new CodeContextStrategy and CompletionBuilderType.
Code Context Strategy
enum class BizCodeContextStrategy {
/**
* the AutoDev with pre-build context for un-support language
*/
SIMILAR_CHUNKS,
/**
* the AutoDev with pre-build context
*/
RELATED_CODE;
fun builder(context: JobContext): CodeContextBuilder<out Any> {
return mapOf(
SIMILAR_CHUNKS to SimilarChunksCompletionBuilder(context),
RELATED_CODE to RelatedCodeCompletionBuilder(context),
)[this] ?: throw SerializationException("Unknown message type: $this")
}
}
Completion Type
enum class CompletionBuilderType {
INLINE_COMPLETION,
IN_BLOCK_COMPLETION,
AFTER_BLOCK_COMPLETION,
TEST_CODE_GEN,
DOCUMENTATION
}